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

2021-08-11 14:34:47 字數 1071 閱讀 5643

通訊的雙方都可以啟動釋放連線,即客戶或者伺服器哪一方都可以啟動釋放連線
假設客戶的應用程序主動啟動釋放連線,客戶的應用程序先向其tcp發出釋放連線報文段,並停止傳送資料,主動關閉tcp連線

第一步:客戶給伺服器傳送報文

客戶把連線釋放報文段的首部的fin=1,其序號seq=u,等待b的確認
第二步:伺服器給客戶傳送報文

伺服器收到客戶發來的報文段後,給客戶發出確認,在確認報文段中應使ack=1,

自己選擇的序號seq=v,其確認號ack=u+1

注意:客戶到伺服器方向的資料傳送,已經關閉,此時tcp連線處於半關閉狀態

但是,如果伺服器還要給客戶傳送資料,還是可以的,所以,在本階段中伺服器

還可以給客戶傳送資料

第三步:伺服器給客戶傳送報文

若伺服器沒有要給客戶傳送的資料,其應用程序就通知tcp釋放連線

傳送報文,在報文中使ack=1,fin=1,確認號ack=u+1,自己選擇的序號seq=w

第四步:客戶給伺服器傳送報文

客戶收到伺服器發來的報文後,再給伺服器傳送確認報文,在報文中使fin=1,自己

選擇的序號seq=u+1,確認號ack=w+1

tcp連線必須經過2msl的時間後才真正釋放掉

tcp連線釋放的過程:

a:我不想跟你聯絡了

b:好的,但是我還想給你送個禮物

b:禮物送完了,我們斷了聯絡吧

a :好的,我們以後都不要再聯絡啦! 解釋

fin和ack都是tcp首部的內容

fin 終止fin,用來釋放乙個連線,fin=1,表明此報文段的傳送端的資料已經發

送完畢,並要求釋放連線。

ack 確認ack,只有當ack=1時,確認號字段才有效,當ack=0時,確認號無效

tcp 四次揮手 TCP四次揮手

tcp斷開連線的過程 客戶端傳送fin報文,表明客戶端將不在傳送資料。具體過程 把fin標誌位改為1,序號seq u,之前傳送的資料加1,這裡規定即使不攜帶資料序號也要 1。該過程中客戶端通過close系統呼叫從established狀態進入fin wait 1狀態。第二次揮手 服務端收到客戶端發來...

TCP終止連線(TCP四次揮手)

tcp連線關閉時的分組交換.png 類似syn,乙個fin也佔據乙個位元組的序列號空間。因此,每個fin的ack確認號就是這個fin的序列號加1.在步驟2於步驟3之間,從執行被動關閉一端到執行主動關閉一端流動資料是可能的。這稱為半關閉 half close 當套接字被關閉時,其所在端tcp各自傳送了...

TCP斷開連線的四次揮手

之前學習了tcp建立連線的三次握手,現在來學習一下tcp斷開連線的四次揮手。簡單描述一下tcp斷開連線的原理。下面是我自己的理解圖。這裡是比較官方的圖。重點說一下各個狀態把 msl就是maximum segment lifetime 最大分節生命期 這是乙個ip資料報能在網際網路上生存的最長時間,超...