我同時在不同的機器上的RHEL 5.3上運行TCP客戶端和TCP服務器。TCP連接 - 延遲關閉()和RST
我在查殺服務器,FIN發送給客戶端。 ACK由客戶端OS立即返回。
客戶端發現的關閉(由讀()返回零)和perfroms只有後90秒關閉。 在這個階段,我在兩邊都驗證了netstat,它和預期的一樣(服務器上的FIN_WAIT_2和客戶端上的CLOSE_WAIT)。
由於客戶端的close()90秒後,客戶機的操作系統發送FIN到服務器,但在響應我們從服務器接收RST和不按預期ACK。
我也看到了幾次,由於「延遲」close(),客戶端的操作系統發送RST而不是FIN。
請注意,在這兩種情況下有雙方沒有未決讀取數據包,SO_LINGER選項沒有被激活。
任何想法?
如果你殺死的服務器,還有的將是一個未決訴訟/包 - 關閉()從客戶端將無法達到你的服務器程序。 – nos 2010-07-20 11:04:16