Python TCP stack implementation

David Underhill picture David Underhill · Oct 17, 2009 · Viewed 8k times · Source

Is there a python library which implements a standalone TCP stack?

I can't use the usual python socket library because I'm receiving a stream of packets over a socket (they are being tunneled to me over this socket). When I receive a TCP SYN packet addressed to a particular port, I'd like to accept the connection (send a syn-ack) and then get the data sent by the other end (ack'ing appropriately).

I was hoping there was some sort of TCP stack already written which I could utilize. Any ideas? I've used lwip in the past for a C project -- something along those lines in python would be perfect.

Answer

Nick Craig-Wood picture Nick Craig-Wood · Oct 17, 2009

You don't say which platform you are working on, but if you are working on linux, I'd open a tun/tap interface and get the IP packets back into the kernel as a real network interface so the kernel can do all that tricky TCP stuff.

This is how (for example) OpenVPN works - it receives the raw IP packets over UDP or TCP and tunnels them back into the kernel over a tun/tap interface.

I think that there is a tun/tap interface for windows too now which was developed for the OpenVPN port to windows.