TCP中的time wait狀態

2021-08-19 13:29:01 字數 673 閱讀 3342

tcp連線的建立三次握手,連線的斷開需要四次揮手。

tcp連線在四次揮手的過程中,主動關閉的一端往往會進入乙個叫time_wait的狀態。

這個狀態是被動關閉端發出fin分節以後,被動端就會進入last_ack狀態,主動關閉端接受到這個fin分節以後就會發出最後乙個ack分節,並進入time_wait狀態,一般是持續2msl時間,msl時間是說最長分節生命存活期,每個ip資料報在網際網路中存活的時間都是有限的,每個資料報都含有乙個叫跳限的字段,任何乙個tcp實現都需要為msl設定乙個值。

rfc文件中建議為2分鐘,不過實現傳統上一般認為是30秒,所以一般time_wait狀態維持的乙個時間就是在1分鐘到4分鐘之間。

time_wait狀態存在的兩個理由:

1、保證tcp全雙工能夠完全終止。

2、允許老的重複分節在網際網路中消逝。

但是我們可以通過修改核心的引數去縮短這個時間,加速tcp連線的快速**復用。

但是這會帶來兩個問題:

1、如果最後乙個ack包丟掉了,可能導致server端並沒有接收到最後乙個ack,那麼過一段時間會進行重傳fin分節,就會導致這個新連線接收到這個分節而終止。

2、可能上乙個連線在網際網路中仍然存在著一些分節,在這個新連線建立以後,就會突然接收到這些上乙個連線的資料。

通過time_wait狀態就能夠保證上個連線的資料在網路中都已經消逝了。

TCP中的TIME WAIT狀態

上面是tcp客戶端向伺服器申請鏈結 傳輸資料 斷開連線的過程。在斷開連線的4次握手過程中,執行主動關閉的那一端 也就是我們這個圖中的客戶端 將進入time wait狀態 這個狀態將持續2msl的時間 最長分節生命週期 maximun segment lifetime 每乙個tcp都有乙個msl的值 ...

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位址與埠與先前的完全相同的情況下,上乙個殘留的資料...