我有一臺服務器上運行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