TCP的連線釋放 四報文握手(四次揮手)

2021-08-17 11:51:57 字數 1026 閱讀 2979

首先也先了解幾個概念:

終止位fin(finis, 意為「完」,「終」)

用來釋放乙個連線。當fin=1時,表明此報文段的傳送方的資料已經傳送完畢,並要求釋放傳輸連線。

時間msl(maximum segment lifetime)

最長報文段壽命,rfc793建議為2分鐘。但對於現在的網路msl=2分鐘可能太大,因此tcp允許不同的實現可根據具體情況使用更小的msl值。

a和b都處於established狀態,通訊的雙方都可以釋放連線。

a程序先向其tcp發出連線釋放報文段,並停止再傳送資料,主動關閉tcp連線。fin=1,其序號seq=u(前面已傳資料最後一位元組序號+1),a進入fin-wait-1(終止等待1)狀態,等待b的確認。

b收到連線釋放報文段後發出確認,確認好ack=u+1,而這個報文段自己的序號seq=v(b前面已傳資料最後一位元組序號+1)。b進入colse-wait(關閉等待)狀態。此時a到b方向的連線已經釋放,而b到a這個方向的連線未關閉,因此tcp連線處於半關閉狀態。而a收到b的確認後,進入fin-wait-2(終止等待2)狀態,等待b發出的連線釋放報文段。(在半關閉狀態b可能又傳送了一些資料,若b已經沒有要向a傳送的資料,則進入下一步。)

b程序通知tcp釋放連線。b發出連線釋放報文段中,fin=1,seq=w(半關閉狀態可能又傳送了一些資料,這些資料的最後一位元組序號+1),重複上次的確認號ack=u+1。此時b進入last-ack(最終確認)狀態,等待a的確認。

a在確認報文段中ack=1,確認號ack=w+1,自己的序號seq=u+1,進入time-wait(時間等待)狀態。2msl後,即建議的4分鐘後,a才進入到closed狀態。

TCP四次握手連線釋放

tcp連線釋放 四次握手正常釋放鏈結如圖 第一次握手 a方傳送連線釋放請求dr給b,在發出dr的同時它也啟動乙個定時器 第二次握手 當這個dr到達b的時候,b會回發乙個確認ack,這個ack到達a後a的連線就釋放了 第三次握手 與此同時收到dr的那一方b,它也會發出乙個連線釋放的請求dr並同樣啟動定...

TCP連線釋放 四次握手

1 資料傳輸結束後,通訊的雙方都可釋放連線。現在 a 的應用程序先向其 tcp 發出連線釋放報文段,並停止再傳送資料,主動關閉 tcp 連線。a 把連線釋放報文段首部的 fin 1 其序號seq u,等待 b 的確認。2 b 發出確認,確認號 ack u 1 而這個報文段自己的序號 seq v tc...

tcp的三次連線握手和四次釋放握手

這篇部落格講的很清楚。下面我簡單說明一下 三次連線握手,首先client傳送請求報文,然後伺服器返回,客戶端在傳送請求。為什麼要三次握手,兩次握手不就夠了嗎?三次握手是為了確保安全,client向server傳送請求,server返回了以後,server不知道client有沒有收到返回,所以無法確定...