TCP 3次握手和4次揮手

2021-09-21 06:31:07 字數 2263 閱讀 2748

3次握手: 

3次握手指的是tcp 建立連線 階段 

1.client–>service syn sequence number a

2.client<–service syn+ack sequence number b acknowledge number(a+1)

3.client–>service ack acknowledge number(b+1)

4次揮手: 

4次揮手指的是 tcp 斷開連線 階段 

1.service>service fin sequence number a

2.service<–service ack acknowledge number(a+1) sequence number b

3.service<–service fin acknowledge number(b+1) sequence number c

4.service>service ack acknowledge number(c+1)

tcp的狀態 (syn, fin, ack, psh, rst, urg)

含義是:

syn表示建立連線(synchronous建立聯機)

fin表示關閉連線(finish結束)

ack表示響應(acknowledgement 確認)

psh表示有 data資料傳輸(push傳送)

rst表示連線重置(reset重置)

urg表示緊急(urgent緊急)

tcp的連線建立和連線關閉,都是通過請求-響應的模式完成的

位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)

sequence number(順序號碼) acknowledge number(確認號碼)

建立連線3次握手

(1) 第一次握手:建立連線時,客戶端a傳送syn=1和(隨機sequence number=j)到伺服器b,並進入syn_send狀態,等待伺服器b確認。

(2) 第二次握手:伺服器b收到syn=1,必須確認客戶a的syn=1和(ack_number=j+1),同時自己也傳送乙個(隨機seq_number=k)和ack_number,即syn=1和ack=1包,此時伺服器b進入syn_recv狀態。

(3) 第三次握手:客戶端a收到伺服器b的(seq_number=k)和ack_number,syn=1和ack=1包,向伺服器b傳送確認包ack=1和(ack_number=k+1),此包傳送完畢,客戶端a和伺服器b進入established狀態,完成三次握手。

tcp協議, 建立連線,只能由客戶端發起. 

斷開連線4次揮手

初始狀態:客戶端a和伺服器b之間已經建立了tcp連線,並且資料傳送完成,打算斷開連線,此時客戶端a和伺服器b是等價的,雙方都可以傳送斷開請求,

下面以客戶端a主動發起斷開請求為例。(後續內容用a,b簡稱代替)

(1) 第一次揮手:a首先向b傳送斷開連線訊息,這時tcp頭部中的fin標識位值為1,序號是sequence number=m,m為a前面正常傳送資料最後乙個位元組序號加1得到的, 訊息傳送後a進入fni_wait_1狀態,fin=1的報文段不能攜帶資料,但要消耗乙個序號

(2) 第二次揮手:b收到a的斷開連線請求需要發出確認訊息,這時tcp頭部中的ack標識位值為1,確認號為acknowledge number=m+1,而自己的序號為sequence number=n,n為b前面正常傳送資料最後乙個位元組序號加1得到的, 然後b進入close_wait狀態,此時就關閉了a到b的連線,同時b端通知上方應用層,處理完成後被動關閉連線。然後a收到b的確認資訊後,就進入了fin_wait_2狀態。                

(3) 第三次揮手:b端應用層處理完資料後,通知關閉連線,b向a傳送關閉連線的訊息,這時tcp頭部中的fin和ack標識位值均為1,確認號acknowledge number=m+1, 自己的序號為sequence number=k,訊息傳送後b進入lack_ack狀態。                

(4) 第四次揮手:a收到b的斷開連線的訊息後,需要傳送確認訊息,這是這時tcp頭部中的ack標識位值為1,確認號acknowledge number=k+1,序號為sequence number=m+1(因為a向b傳送斷開連線的訊息時消耗了乙個訊息號),然後a進入time_wait狀態,若等待時間經過2msl後,沒有收到b的重傳請求,則表明b收到了自己的確認,a進入closed狀態,b收到a的確認訊息後則直接進入closed狀態。至此tcp成功斷開連線。

TCP3次握手與4次揮手

3次握手過程狀態 listen 這個也是非常容易理解的乙個狀態,表示伺服器端的某個socket處於監聽狀態,可以接受連線了。syn sent 當客戶端socket執行connect連線時,它首先傳送syn報文,因此也隨即它會進入到了syn sent狀態,並等待服務端的傳送三次握手中的第2個報文。sy...

TCP 3次握手4次揮手 複習

學習自 握手syn syn ack ack未連線佇列 服務端維護乙個未連線佇列,當客戶端發來ack時,伺服器會入佇列乙個相應的標識,那個標識是已接收ack狀態,然後會發syn ack,當客戶端再次傳送ack後,出佇列那個相應的標識,正式建立連線 為何要3次握手?假如客戶端傳送syn,但是莫名滯留了,...

TCP 3次握手及4次揮手

3次握手 tcp協議建立三次握手的過程如下 第一次握手 客戶端向伺服器傳送syn段 syn 1 請求建立新連線 第二次握手 伺服器收到syn段後,向客戶端傳送的synack段 syn 1,ack 1 進行確認,同意建立新連線 第三次握手 客戶端收到伺服器的synack段後,向伺服器傳送ack確認段 ...