所以我有一个远程设备使用连接到VPS的Lantronics XPort模块。他们建立了TCP连接,一切都很好。服务器确认一切。Linux在ESTABLISHED连接上不响应SYN
在某一点远程设备停止传输数据。 30秒过去。
然后设备开始发送SYN数据包,就好像试图建立新的连接一样。该设备配置为维护到服务器的连接,并且始终使用相同的源端口。 (我意识到这是不好的,但我很难改变)
服务器看到来自同一个(源IP,源端口)的SYN数据包,所以服务器认为连接是ESTABLISHED。服务器不响应SYN数据包。
为什么服务器没有按照RFC 793中的图10所述的方式响应ACK? (https://www.ietf.org/rfc/rfc793.txt)
如何让服务器终止连接或用ACK作出响应?
可能出现的情况是,在30秒的静默期间,设备正在等待来自服务器的ACK,并且该ACK已被丢弃。在这种情况下,我认为它应该重发。
服务器运行Ubuntu的内核3.12.9-x86_64的-linode37
感谢您的帮助!
谢谢。我在这里错过的部分是保持活动行为不是默认行为。在创建套接字时,您必须使用setsockopt来启用它。 –