TCP協議3次握手和4次揮手

2021-07-24 11:58:38 字數 1038 閱讀 8394

一、tcp通訊過程

tcp是tcp/ip體系中面對連線的傳輸層協議,採用多種機制來確保資料的可靠性。其中為了確保tcp成功連線和斷開,tcp採用了一種三次握手和四次揮手的機制。過程如下所示

三次握手成功後,成功建立連線,然後開始傳輸資料資訊,最後斷開連線。這是tcp傳輸的步驟!

二、tcp三次握手

tcp三次握手都是發生在資料傳輸的什麼時候呢?下面來共同解析

1. 源主機a的tcp向目標主機b傳送連線請求報文段,其首部的sny標誌位置為1,表示想和目標主機建立連線,進行通訊,並傳送乙個同步序列號x進行同步,表明在後面傳送資料時的第乙個資料位元組的序號為x+1。

2. 目標主機b的tcp收到連線請求報文段後,如果同意則發出確認,再確認報中應將ack位和syn位置為1,確認號為x+1,同時也為自己選擇乙個序號y。

3. 源主機a的tcp收到目標主機b的確認後,要想目標主機b給出確認,其ack置為1,確認號為y+1,而自己的序號為x+1。

三次握手為應用程式提供可靠的通訊連線,適合一次傳輸大批資料的情況。

三、tcp四次揮手

四、為什麼建立連線協議是三次握手,而關閉連線卻是四次握手呢? 

這 是因為服務端的listen狀態下的socket當收到syn報文的建連請求後,它可以把ack和syn(ack起應答作用,而syn起同步作用)放在一 個報文裡來傳送。但關閉連線時,當收到對方的fin報文通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以未 必會馬上會關閉socket,也即你可能還需要傳送一些資料給對方之後,再傳送fin報文給對方來表示你同意現在可以關閉連線了,所以它這裡的ack報文 和fin報文多數情況下都是分開傳送的。

TCP的3次握手和4次揮手

三次握手建立連線 如上圖 黑框 所示,在最初兩端的tcp程序都處於closed狀態。host1主動開啟連線,而host2被動開啟連線。host2的tcp伺服器程序優先建立傳輸控制塊tcb,準備接受客戶程序的連線請求,然後將自己的狀態有colsed改為listen 收聽 狀態,等待客戶的連線請求 ho...

TCP 3次握手和4次揮手

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 ...

3次握手和4次揮手

客戶端通過向伺服器端傳送乙個syn來建立乙個主動開啟,作為三路握手的一部分。客戶端把這段連線的序號設定為隨機數 a。伺服器端應當為乙個合法的syn回送乙個syn ack。ack 的確認碼應為 a 1,syn ack 包本身又有乙個隨機序號 b。最後,客戶端再傳送乙個ack。當服務端受到這個ack的時...