為什麼四次握手之後需要等待2MSL

2021-09-30 01:33:57 字數 669 閱讀 1620

tcp釋放過程如下圖:

為什麼a在time_wait狀態必須等待2msl的時間呢?

(1)為了保證a傳送的最後乙個ack報文段能夠到達b。這個ack報文段有可能丟失,因而使處在last_ack狀態的b收不到對已傳送的fin+ack報文段的確認。

b會超時重傳這個fin+ack報文段,而a就能在2msl時間內收到這個重傳的fin+ack報文段。

接著a重傳一次確認,重新啟動2msl計時器。

最後,a和b都正常進入到closed狀態。如果a在time-wait狀態不等待一段時間,而是在傳送完ack報文段後立即釋放連線,那麼就無法收到b重傳的fin+ack報文段,因而也不會再傳送一次確認報文段。

這樣,b就無法按照正常步驟進入closed狀態。

(2)「已失效的連線請求報文段」出現在本連線中。a在傳送完最後乙個ack報文段後,再經過時間2msl,就可以使本連線持續的時間內所產生的所有報文段都從網路中消失。

這樣就可以使下乙個新的連線中不會出現這種舊的連線請求報文段。

b只要收到了a發出的確認,就進入closed狀態。

同樣,b在撤銷相應的傳輸控制塊tcb後,就結束了這次的tcp連線。我們注意到,b結束tcp連線的時間要比a早一些。

三次握手,為什麼斷開TCP連線需要四次握手

tcp建立連bai接要進行3次握手,而斷開du連線要進行4次,這是由zhi於daotcp的半關閉造成的,因為tcp連線是全zhuan雙工shu的 即資料可在兩個方向上同時傳遞 所以進行關閉時每個方向上都要單獨進行關閉,這個單方向的關閉就叫半關閉.關閉的方法是一方完成它的資料傳輸後,就傳送乙個fin來...

為什麼要「三次握手,四次揮手」

三次握手 換個易於理解的視角來看為什麼要3次握手。客戶端和服務端通訊前要進行連線,3次握手 的作用就是雙方都能明確自己和對方的收 發能力是正常的。經歷了上面的三次握手過程,客戶端和服務端都確認了自己的接收 傳送能力是正常的。之後就可以正常通訊了。每次都是接收到資料報的一方可以得到一些結論,傳送的一方...

Tcp為什麼要三次握手四次揮手

client 黃河,server 長江 三次握手 第一次 長江長江,我是黃河,聽到請回答?第二次 黃河黃河,我是長江,我聽到你了,你能聽到我嗎?第三次 長江長江,俺是黃河,我也能聽到你,我要開始吐了。其實第二次時黃河已經知道雙方能互通,但是長江還不知道自己的聲音黃河能否收到,所以需要有第三次黃河向長...