代码之家  ›  专栏  ›  技术社区  ›  David Underhill

Python TCP堆栈实现

  •  8
  • David Underhill  · 技术社区  · 15 年前

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

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

    5 回复  |  直到 15 年前
        1
  •  7
  •   Nick Craig-Wood    15 年前

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

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

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

        2
  •  2
  •   Mark Rushakoff    15 年前

    扫视 Scapy ,看起来它可能能够处理这些低级情况。我自己也没用过,所以我不能确认它是否符合你的解释;我只浏览了一下文件。

        3
  •  0
  •   D.Shawley    15 年前

    您可能可以使用 ctypes

        4
  •  0
  •   jldupont    15 年前

        5
  •  0
  •   Michael Dillon    15 年前

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

    http://hathawaymix.org/Software/TCPWatch