通訊的雙方都可以啟動釋放連線,即客戶或者伺服器哪一方都可以啟動釋放連線
假設客戶的應用程序主動啟動釋放連線,客戶的應用程序先向其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資料報能在網際網路上生存的最長時間,超...