2013-08-07 79 views
2

發送FIN表示末尾不會發送任何數據。但它可以發送TCP Keepalive?發送FIN的TCP端點是否仍然發送Keepalive?

如果可以的話,它與「FIN之後發送內容」的說法相矛盾,即使它是存活的而不是數據。

如果它不發送keepalive,它不會檢測到另一端是否消失。

對於前:

客戶端發送FIN和ACK了回來。服務器然後發送了一個丟失的重置。 只有客戶端可以檢測到服務器已經消失的方式是通過發送Keepalive來進行重置,然後客戶端關閉。

這是否發生?

回答

3

根據RFC-1122

保持活動時已經接收到一個時間間隔內的連接沒有數據或確認數據包的數據包必須只發送。

發送FIN僅表示不會再發送數據,也不會收到更多數據。如果應用程序在發送FIN仍然期待數據後,RFC表示它可以發送保持活動數據包以確保另一端仍然存在。