Python TCP堆栈实现

Python TCP堆栈实现,python,tcp,network-programming,network-protocols,raw-sockets,Python,Tcp,Network Programming,Network Protocols,Raw Sockets,是否有实现独立TCP堆栈的python库 我不能使用通常的python套接字库,因为我正在通过套接字接收数据包流(它们通过这个套接字被隧道传输给我)。当我收到一个发送到特定端口的TCP SYN数据包时,我希望接受连接(发送SYN ack),然后获得另一端发送的数据(适当地确认) 我希望已经编写了某种TCP堆栈,我可以利用它。有什么想法吗?过去我用LWIP来做一个C项目——沿着Python中的那些线是很完美的。 < P>我知道这不是直接的Python相关的,但是如果你想做重的网络处理,你应该考虑E

是否有实现独立TCP堆栈的python库

我不能使用通常的python套接字库,因为我正在通过套接字接收数据包流(它们通过这个套接字被隧道传输给我)。当我收到一个发送到特定端口的TCP SYN数据包时,我希望接受连接(发送SYN ack),然后获得另一端发送的数据(适当地确认)


我希望已经编写了某种TCP堆栈,我可以利用它。有什么想法吗?过去我用LWIP来做一个C项目——沿着Python中的那些线是很完美的。

< P>我知道这不是直接的Python相关的,但是如果你想做重的网络处理,你应该考虑Erlang而不是Python。只是一个建议真的。。。你可以用Twisted拍摄一张照片。。。如果你喜欢冒险(并且有很多时间在你身边);-)

您可以使用该模块导入lwip并再次使用。

浏览一下,它似乎可以处理这些低级情况。我自己也没用过,所以我不能确认它是否符合你的解释;我只是浏览了一下文档。

你没有说你在哪个平台上工作,但是如果你在linux上工作,我会打开一个,将IP数据包作为一个真正的网络接口返回内核,这样内核就可以完成所有棘手的TCP工作

这就是(例如)工作原理——它通过UDP或TCP接收原始IP数据包,并通过tun/tap接口将它们传输回内核


我认为现在也有一个适用于windows的tun/tap接口,它是为windows的OpenVPN端口开发的。

如果您已经在套接字的另一端致力于软件,即向您转发TCP数据包,那么TCPWatch可能会向您展示如何获取SYN数据包。SCAPY确实非常适合发送您想要的数据包,但我不确定它是否可以作为代理


但是,如果您不致力于发送端的内容,那么考虑使用扭曲的海螺或PARAMIKO来进行SSH转发。即使您不需要加密,您仍然可以将其用于对CPU影响较小的blowfish。这并不意味着另一端需要海螺,因为SSH是标准化的,所以任何SSH软件都应该工作。在SSH世界中,这通常被称为“端口转发”,人们使用SSH终端客户端登录到SSH服务器并设置端口转发隧道。Conch和Paramiko允许您将其构建到Python应用程序中,这样就不需要SSH终端客户端。

因为Erlang非常适合执行异步进程。我对此投了赞成票——投反对票的人应该为自己感到羞耻——让别人质疑他们的工具没有错要求。这么说吧-为什么是erlang?为什么是erlang?因为做数据包操作是Erlang最初存在的原因之一:它起源于爱立信的网络产品。我喜欢这个想法。我使用的是linux,所以获得tun/tap设备和TAP0INTF设置并不难。不幸的是,我不知道如何利用它。首先,我正在将未封装的原始数据包写入tap0(带有原始套接字)。我看到正确格式的SYN数据包显示在tap0上(地址为tap0的MAC和IP地址)。但是,如果我在tap0的IP地址上运行netcat侦听,我看不到它以syn ack响应。我可以通过telnet连接到它(尽管内核似乎只是通过lo缩短了这个流量)。有没有关于我如何让它工作的建议?谢谢你,尼克!这主意不错,但我认为这会比我在这方面所要做的工作多得多。Scapy很好,但我认为它不会帮助我处理协议本身——只是将数据包解码为其组成字段?毕竟,我用Python实现了一个非常基本的TCP堆栈。这正是我正在进行的项目所需要的,但可能需要一些工作。如果您想查看它,其来源如下: