我有一台服务器上运行Linux(内核3.0.35),并在Windows 7上运行的客户端每次客户端连接到TCP重发发生在该服务器: 这里是Wireshark的交通: http://oi39.tinypic.com/ngsnyb.jpgLinux应用程序不响应FIN数据包重传时
我觉得情况是这样的:
客户端(192.168.1.100)连接到服务器(192.168.1.103),连接成功。在某些时候客户端决定关闭连接(FIN,ACK),服务器不会确认FIN。 然后客户端启动一个新的连接,该连接是ACK,并且是成功的。与此同时,Windows内核继续重新发送FIN,ACK数据包,并最终决定进行重置。
在第二连接被建立我没有收到客户端所发送的数据在服务器侧(16个字节长度的数据包)的那一刻,我只RST分组后收到这些字节。
在我使用的民意调查()函数来检查POLLIN事件的服务器端,并直到RST包到达我没有通知的任何数据。
因此,有谁知道为什么会发生这种情况?
所以...的结果是,服务器堆栈不处理来自客户端的关闭请求以合规的TCP时尚? –
问题是,在我的服务器应用程序中,我收不到客户端发送的16个字节,直到我收到RST数据包,这是一个很长的时间。 – Diurpaneus