為什麼TIME WAIT狀態必須等待2MSL的時間

2021-10-22 17:20:21 字數 581 閱讀 2562

為什麼a在time-wait狀態必須等待2msl的時間呢?

這有兩個理由。

第一,為了保證a傳送的最後乙個ack報文段能夠到達b。這個ack報文段有可能丟失,因而使處在last-ack狀態的b收不到對已傳送的fin + ack報文段的確認。b會超時重傳這個fin + ack報文段,而a就能在2msl時間內收到這個重傳的fin +ack報文段。接著a重傳一次確認,重新啟動2msl計時器。最後,a和b都正常進入到closed狀態。如果a在time-wait狀態不等待一段時間,而是在傳送完ack報文段後立即釋放連線,那麼就無法收到b重傳的fin + ack報文段,因而也不會再傳送一次確認報文段。這樣,b就無法按照正常步驟進入closed狀態。

第二,防止上一節提到的「已失效的連線請求報文段」出現在本連線中。a在傳送完最後乙個ack報文段後,再經過時間2msl,就可以使本連線持續的時間內所產生的所有報文段都從網路中消失。這樣就可以使下乙個新的連線中不會出現這種舊的連線請求報文段。

出處:謝希仁著《計算機網路第六版》5.9.2 tcp的連線釋放

TIME WAIT狀態釋疑

一 現象 登陸伺服器的時候輸入netstat natup 發現存在大量time wait狀態的連線 tcp 0 0 127.0.0.1 3306 127.0.0.1 41378 time wait tcp 0 0 127.0.0.1 3306 127.0.0.1 41379 time wait tc...

TIME WAIT狀態的意義

客戶端與伺服器端建立tcp ip連線後關閉socket後,伺服器端連線的埠 狀態為time wait 是不是所有執行主動關閉的socket都會進入time wait狀態呢?有沒有什麼情況使主動關閉的socket直接進入closed狀態呢?主動關閉的一方在傳送最後乙個ack 後 就會進入time wa...

TIME WAIT和CLOSE WAIT狀態區別

在伺服器的日常維護過程中,會經常用到下面的命令 plain view plain copy print netstat n awk tcp end netstat n awk tcp end 它會顯示例如下面的資訊 time wait 814 close wait 1 fin wait1 1 est...