TCP四次揮手詳解

2021-08-28 03:10:53 字數 918 閱讀 3959

(1)資料傳輸結束後,通訊的雙方都可以釋放連線。現在a和b都處於established狀態。

(2)a的應用程式先向其tcp發出連線釋放報文段,並停止再傳送資料,主動關閉tcp連線。a把連線釋放報文段首部的fin置1,其序號seq=u,它等於前面已經傳送過的資料的最後乙個位元組的序號加1。這時a進入fin-wait-1(終止等待1)狀態,等待b的確認。(請注意:tcp規定,fin報文段即使不攜帶資料,它也要消耗乙個序號)。

(3)b收到連線釋放報文段後即發出確認,確認號是ack=u+1,而這個報文段自己的序號是v,等於b前面已經傳送過的資料的最後乙個序號加1。然後b就進入close-wait(關閉等待)狀態。tcp伺服器程序這時應通知高層程序,因而從a到b這個方向的連線就釋放了,這時的tcp連線處於半關閉狀態,即a已經沒有資料要傳送了,但b若傳送資料,a仍要接收。也就是說,從b到a這個方向的連線並未關閉。這個狀態可能會持續一些時間。

(4)a收到來自b的確認後,就進入fin-wait-2(終止等待2)狀態,等待b發出的連線釋放報文段。

(5)若b已經沒有要向a傳送的資料,其應用程序就通知tcp釋放連線。這時b發出的連線釋放報文段必須使fin=1。現假定b的序號為w(在半關閉狀態b可能又傳送了一些資料)。b還必須重複上次已傳送過的確認號ack=u+1。這時b就進入了last-ack(最後確認)狀態,等待a的確認。

a在收到b的連線釋放報文段後,必須對此發出確認。在確認報文段中把ack置1,確認號ack=w+1,而自己的序號是seq=u+1(根據tcp標準,前面傳送過的fin報文段要消耗乙個序號)。然後進入到time-wait(時間等待)狀態(請注意:現在tcp連線還沒有釋放掉。必須經過時間等待計時器設定的時間2msl(msl:最長報文段壽命)後,a才進入到closed狀態)。

tcp 四次揮手 TCP四次揮手

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

TCP四次揮手

純給自己看的 發起關閉的一方是客戶端,被動關閉的一方是伺服器。1 客戶端a傳送乙個fin 1,用來關閉客戶a到伺服器b的資料傳送。圖上畫的對,還有乙個seq n 2 伺服器b收到這個fin,它發回乙個ack 1,確認序號ack為收到的序號加1。3 伺服器b關閉與客戶端a的連線,傳送乙個fin 1給客...

TCP四次揮手

四次揮手 1.客戶端程序發出連線釋放報文,並且停止傳送資料。釋放資料報文首部,fin 1,其序列號為seq u 等於前面已經傳送過來的資料的最後乙個位元組的序號加1 此時,客戶端進入fin wait 1 終止等待1 狀態。tcp規定,fin報文段即使不攜帶資料,也要消耗乙個序號。2.伺服器收到連線釋...