TCP三次握手 四次揮手

2021-06-22 13:26:28 字數 1901 閱讀 6759

服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。

1、客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn=1,ack=0,同時選擇乙個初始序號seq=i。tcp規定,syn=1的報文段不能攜帶資料,但要消耗掉乙個序號。這時,tcp客戶程序進入syn—sent(同步已傳送)狀態,這是tcp連線的第一次握手。

2、服務端收到客戶端發來的請求報文後,如果同意建立連線,則向客戶端傳送確認。確認報文中的syn=1,ack=1,確認號ack=i+1,同時為自己選擇乙個初始序號seq=j。同樣該報文段也是syn=1的報文段,不能攜帶資料,但同樣要消耗掉乙個序號。這時,tcp服務端進入syn—rcvd(同步收到)狀態,這是tcp連線的第二次握手。

3、tcp客戶端程序收到服務端程序的確認後,還要向服務端給出確認。確認報文段的ack=1,確認號ack=j+1,而自己的序號為seq=i+1。tcp的標準規定,ack報文段可以攜帶資料,但如果不攜帶資料則不消耗序號,因此,如果不攜帶資料,則下乙個報文段的序號仍為seq=i+1。這時,tcp連線已經建立,客戶端進入established(已建立連線)狀態。這是tcp連線的第三次握手,可以看出第三次握手客戶端已經可以傳送攜帶資料的報文段了。

當服務端收到確認後,也進入established(已建立連線)狀態。

資料傳輸結束後,通訊的雙方都可以釋放連線,並停止傳送資料。假設現在客戶端和服務端都處於established狀態。

1、客戶端a的tcp程序先向服務端發出連線釋放報文段,並停止傳送資料,主動關閉tcp連線。釋放連線報文段中fin=1,序號為seq=u,該序號等於前面已經傳送過去的資料的最後乙個位元組的序號加1。這時,a進入fin—wait-1(終止等待1)狀態,等待b的確認。tcp規定,fin報文段即使不攜帶資料,也要消耗掉乙個序號。這是tcp連線釋放的第一次揮手。

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

3、a收到b的確認後,就進入了fin—wait(終止等待2)狀態,等待b發出連線釋放報文段,如果b已經沒有要向a傳送的資料了,其應用程序就通知tcp釋放連線。這時b發出的鏈結釋放報文段中,fin=1,確認號還必須重複上次已傳送過的確認號,即ack=u+1,序號seq=w,因為在半關閉狀態b可能又傳送了一些資料,因此該序號為半關閉狀態傳送的資料的最後乙個位元組的序號加1。這時b進入last—ack(最後確認)狀態,等待a的確認,這是tcp連線的第三次揮手。

4、a收到b的連線釋放請求後,必須對此發出確認。確認報文段中,ack=1,確認號ack=w+1,而自己的序號seq=u+1,而後進入time—wait(時間等待)狀態。這時候,tcp連線還沒有釋放掉,必須經過時間等待計時器設定的時間2msl後,a才進入closed狀態,時間msl叫做最長報文壽命,rfc建議設為2分鐘,因此從a進入time—wait狀態後,要經過4分鐘才能進入到closed狀態,而b只要收到了a的確認後,就進入了closed狀態。二者都進入closed狀態後,連線就完全釋放了,這是tcp連線的第四次揮手。

當兩端對應的網路應用層程序同時呼叫close原語,傳送fin資料段執行關閉命令時,兩端均從established狀態轉變為fin wait 1狀態。任意一方收到對端發來的fin資料段後,其狀態均由fin wait 1轉變到closing狀態,並傳送最後的ack資料段。當收到最後的ack資料段後,狀態轉變化time_wait,在等待2msl後進入到closed狀態,最終釋放整個tcp傳輸連線。

TCP三次握手 四次揮手

tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...

TCP三次握手四次揮手

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...

TCP三次握手四次揮手

先假設是兩次握手,當client發出同步syn請求,server收到請求之後,傳送ack確認給client,假設 此時server認為鏈結建立完畢,開始收發資料,如果一些原因導致client端關閉或者沒有收到server的回應,而server一直在等待client的資料,client又在等serve...