天天看點

TCP第四次揮手釋放連接配接時為什麼time_wait狀态必須等待2MSL時間

TCP第四次揮手釋放連接配接時為什麼time_wait狀态必須等待2MSL時間

為什麼上圖中的用戶端在TIME-WAIT狀态必須等待2MSL時間呢?

(1)為了保證用戶端發送的最後一個ACK能夠成功到達伺服器。但是這個ACK有可能會發生丢失,導緻處于LAST-ACK狀态下的伺服器接收不到對自己發送的FIN+ACK的确認ACK,是以伺服器會逾時重傳,而恰好再2MSL時間内用戶端能再一次收到FIN+ACK。如果A在TIME-WAIT狀态不等待2MSL而直接斷開連接配接的話無法再次受到伺服器重傳的FIN+ACK,導緻伺服器接收不到ACK,無法正常進入CLOSED狀态。

(2)A發送完ACK後在TIME-WAIT階段等待2MSL時間後可以使本連結本次産生的所有封包段都從網絡中消失,不會出現新的連接配接使用舊連接配接的封包段的情況

什麼是2MSL

MSL翻譯成中文是“封包的最大生存時間”,即超過這個時間封包會被丢棄。

實際應用中的MSL對應的一般是30s,1min,2min

繼續閱讀