前言
為何TCP ”四次分手“ 的過程中會有一個TIME_WAIT狀態?這個狀態有什麼意義呢?這是網路中的一個經典問題,本文將給出精簡的回答。
什麼是TIME_WAIT狀態
這是TCP通訊協議中出現的一個狀態,端點會在這個狀態停留2MSL( 最長分節生命期 ),參見下圖:
左下方的那個狀態即是。
TIME_WAIT狀態存在意義之一
假設上圖中,最後的那個ack分節傳遞失敗了,那麼伺服器端會要求客戶端再傳遞一次這個分節。如果沒有此狀態( 客戶端直接退出 ),那就無法重傳這段丟失了的分節( 所有對客戶端的請求均會返回RST )。
TIME_WAIT狀態存在意義之二
假定這個連線剛剛關閉,便出現這個連線的一個化身,則上一次連線中仍然在傳遞過程中的分節會被這次化身連線誤收。
說明
可以根據存在意義一和意義二,思考一下為什麼TIME_WAIT狀態停留時間是2MSL。