TCP中的TIME WAIT狀態

2021-10-01 09:43:20 字數 887 閱讀 8826

上面是tcp客戶端向伺服器申請鏈結-》傳輸資料-》斷開連線的過程。

在斷開連線的4次握手過程中,執行主動關閉的那一端(也就是我們這個圖中的客戶端)將進入time_wait狀態

這個狀態將持續2msl的時間(最長分節生命週期:maximun segment lifetime),每乙個tcp都有乙個msl的值

大概在30s-2min不等。因此這個狀態將持續1min-4min不等。

可靠地實現tcp全雙工連線的終止

允許老的重複分節在網路中消逝

什麼意思呢?這裡解釋一下:

1)假設上圖中最後一次通訊過程(也就是ack n+1)出現問題了,沒有傳輸成功,客戶端需要維持狀態資訊,來重新傳送最後的ack。 如果不這樣做,客戶端將以乙個rst響應(另一種tcp的分節型別),這將導致被伺服器解釋成乙個錯誤。

也就是說,如果想正確的終止tcp的雙向連線(也就是全雙工連線),需要正確處理斷開連線時的4次握手過程。需要這個時間

2)如果我們通過中斷指令控**務器端斷開了乙個tcp連線,馬上我們又想連線上,這時會發現我們無法使用相同的ip+埠號連線上,因為在time_wait時間內不允許這樣的事情發生,這被tcp解釋稱屬於同一連線的某個新的化身,這種化身在time_wait期間不被允許。

因為在這個期間,舊的客戶端分組並未被丟棄,在經歷這段時間之後,另乙個方向上的應答將被丟棄,這是我們就能保證每成功建立乙個tcp連線時,來自該連線先前化身的舊的重複的分組已經在網路中消逝了。

TCP中的time wait狀態

tcp連線的建立三次握手,連線的斷開需要四次揮手。tcp連線在四次揮手的過程中,主動關閉的一端往往會進入乙個叫time wait的狀態。這個狀態是被動關閉端發出fin分節以後,被動端就會進入last ack狀態,主動關閉端接受到這個fin分節以後就會發出最後乙個ack分節,並進入time wait狀...

TCP連線中的TIME WAIT狀態

根據 unix網路程式設計 卷1,tcp的狀態轉換圖可以得知 執行主動關閉的那端 假設客戶端 經歷了time wait狀態,該狀態停留在那個狀態的持續時間是最長分節期 maximum segment lifetime,msl 的兩倍,稱為2msl。time wait狀態的持續時間在1min 4min...

tcp連線中TIME WAIT狀態過多

參考自 作用 1.保證雙方正常種植資料流傳輸 最後乙個 ack丟失了,被動關閉一方會重發它的 fin,主動關閉一方必須維持乙個有效狀態資訊 timewait狀態下維持 以便能夠重發 ack,否則被動一方會認為有錯誤產生 2.保證 在下乙個人使用的ip位址與埠與先前的完全相同的情況下,上乙個殘留的資料...