Tcp三次握手與四次揮手

2021-04-24 00:55:14 字數 2674 閱讀 9916

tcp三次握手/四次揮手

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;

syn: 同步序列編號(synchronize sequence numbers)

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

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

完成三次握手,客戶端與伺服器開始傳送資料,在上述過程中,還有一些重要的概念:

未連線佇列:在三次握手協議中,伺服器維護乙個未連線佇列,該隊列為每個客戶端的syn包(syn=j)開設乙個條目,該條目表明伺服器已收到syn包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連線在伺服器處於syn_recv狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入established狀態。

backlog引數:表示未連線佇列的最大容納數目。

syn-ack 重傳次數伺服器傳送完syn-ack包,如果未收到客戶確認包,伺服器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連線資訊從半連線佇列中刪除。注意,每次重傳等待的時間不一定相同。

tcp 

連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 

tcp 

視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程:

1.  客戶端向伺服器傳送乙個

syn置位的

tcp報文,其中包含連線的初始序列號

x 和乙個視窗大小(表示客戶端上用來儲存從伺服器傳送來的傳入段的緩衝區的大小)。

2.  伺服器收到客戶端傳送過來的

syn報文後,向客戶端傳送乙個

syn和 ack

都置位的

tcp報文,其中包含它選擇的初始序列號

y 、對客戶端的序列號的確認

x+1和乙個視窗大小(表示伺服器上用來儲存從客戶端傳送來的傳入段的緩衝區的大小)。

3.  客戶端接收到伺服器端返回的

syn+ack

報文後,向伺服器端返回乙個確認號

y+1和序號

x+1的 ack

報文,乙個標準的

tcp連線完成。

tcp 

使用類似的握手過程來結束連線。這可確保兩個主機均能完成傳輸並確保所有的資料均得以接收

tcp client

flags

tcp server

1 send syn (seq=x)

----syn--->

syn received

2 syn/ack received

send syn (seq=y)

, ack (x+1)

3 send ack (y+1)

syn(x+1)

---ack/syn-->

ack received

, connection

established

x: isn (initial sequence number) of the

client

y: isn of the server

連線終止協議(四次揮手)

由於tcp連線是全雙工的,因此每個方向都必須單獨進行關閉。這原則是當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向的連線。收到乙個 fin只意味著這一方向上沒有資料流動,乙個tcp連線在收到乙個fin後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

(1) tcp客戶端傳送乙個fin,用來關閉客戶到伺服器的資料傳送(報文段4)。

(2) 伺服器收到這個fin,它發回乙個ack,確認序號為收到的序號加1(報文段5)。和syn一樣,乙個fin將占用乙個序號。

(3) 伺服器關閉客戶端的連線,傳送乙個fin給客戶端(報文段6)。

(4) 客戶段發回ack報文確認,並將確認序號設定為收到序號加1(報文段7)。

closed: 這個沒什麼好說的了,表示初始狀態。

listen: 這個也是非常容易理解的乙個狀態,表示伺服器端的某個socket處於監聽狀態,可以接受連線了。

syn_rcvd: 這個狀態表示接受到了syn報文,在正常情況下,這個狀態是伺服器端的socket在建立tcp連

有點簡單,不過好理解

TCP三次握手與四次揮手

也許三次握手你會經常聽到,但你知道三次握手的真正意義嗎,為什麼需要三次握手呢?首先我們必須明白tcp是面向連線的協議,無論哪乙個方向在傳送資料之前,都必須先在雙方之間建立連線。這一點與udp協議是不一樣的,udp在傳送資料報之前是不需要建立連線的。建立tcp連線的過程中,通訊的雙方需要互相發報文進行...

tcp三次握手與四次揮手

一.tcp三次握手 簡述 a傳送乙個請求給b,b發回確認,然後a再加以確認,來回共3次 1 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認。2 第二次握手 伺服器收到syn包之後,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn syn...

TCP三次握手與四次揮手

1 tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線 1 第一次握手 建立連線時,客戶端a傳送syn包 syn j 到伺服器b,並進入syn send狀態,等待伺服器b確認。2 第二次握手 伺服器b收到syn包,必須確認客戶a的syn ack j 1 同時自己也傳送乙個sy...