第三篇:關於TIME_WAIT狀態

穆晨發表於2017-01-29

前言

       為何TCP ”四次分手“ 的過程中會有一個TIME_WAIT狀態?這個狀態有什麼意義呢?這是網路中的一個經典問題,本文將給出精簡的回答。

什麼是TIME_WAIT狀態

       這是TCP通訊協議中出現的一個狀態,端點會在這個狀態停留2MSL( 最長分節生命期 ),參見下圖:

       

       左下方的那個狀態即是。

TIME_WAIT狀態存在意義之一

       假設上圖中,最後的那個ack分節傳遞失敗了,那麼伺服器端會要求客戶端再傳遞一次這個分節。如果沒有此狀態( 客戶端直接退出 ),那就無法重傳這段丟失了的分節( 所有對客戶端的請求均會返回RST )。

TIME_WAIT狀態存在意義之二

       假定這個連線剛剛關閉,便出現這個連線的一個化身,則上一次連線中仍然在傳遞過程中的分節會被這次化身連線誤收。

說明

       可以根據存在意義一和意義二,思考一下為什麼TIME_WAIT狀態停留時間是2MSL。

相關文章