是否可以在没有握手的情况下启动TCP套接字连接?

时间:2016-06-28 15:56:40

标签: python sockets tcp scapy

我正在制作SSL服务器,并且我不使用python的库,因为我想对该过程进行一些非正统的更改。因此,我不能简单地启动TCP连接,因为我需要通过握手传输加密细节,这是我无法通过套接字进行的。所以我使用scapy进行握手本身,但之后我想继续使用TCP套接字而不再通过握手过程。这可能吗?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你用scapy交换了几段,现在想用它们制造一个普通的成套插座。

这是不可能的:出于所有实际目的,您的TCP无视您在数据包中发送的任何内容,并且它不会保留此TCP连接的任何状态:所有状态都在您的应用程序中。

也就是说,在Linux中有一个名为TCP_REPAIR的东西可以让你在一个给定的状态下放置套接字。

  

使用此选项时,套接字将切换为特殊模式   对其执行的任何操作都不会导致任何定义   通过适当的协议动作,而是直接放置   套接字进入一种状态,其中套接字应该在最后   已成功完成的操作

如果正确设置序列号,套接字应该"只需工作"。,

  

还需要恢复TCP序列号。要这样做,   引入了TCP_REPAIR_QUEUE和TCP_QUEUE_SEQ选项。

当然这一切都是针对现代Linux的;其他操作系统可能有也可能没有类似的机制。