TCP的三次握手與四次揮手

2022-05-21 02:01:13 字數 2397 閱讀 9639

客戶端首先從close狀態甦醒,向伺服器發起握手的請求,傳送報文段,其中syn欄位置為1表示該報文段請求建立連線,seq=x表示客戶端隨機出乙個值x作為偏移量,在傳送了報文後客戶端進入syn_sent狀態

服務端在listen狀態下接收了客戶端發來的syn=1的報文,於是伺服器進入到syn_rcvd狀態,並且在得到上層授權後傳送答覆報文,seq=y表示隨機乙個值y當作偏移量,ack=1表示收到了報文,ack=x+1表示下次客戶端發過來的偏移量應該是x+1

客戶端接收到了服務端發來的確認報文後發起第三次握手,也就是告訴服務端自己已經收到了伺服器確認了,此時seq=x+1,表示自己傳送報文的偏移量為x+1,ack=y+1表示下次服務端傳送過來的偏移量應該是y+1,ack=1表示已經收到服務端的確認訊息。客戶端進入established狀態

服務端在收到客戶端傳來的收到自己確認訊息的訊息之後也進入established狀態,至此,三次握手完成,雙方進入連線,開始傳輸資料

字段含義

urg緊急指標是否有效。為1,表示某一位需要被優先處理

ack確認號是否有效,一般置為1。

psh提示接收端應用程式立即從tcp緩衝區把資料讀走。

rst對方要求重新建立連線,復位。

syn請求建立連線,並在其序列號的字段進行序列號的初始值設定。建立連線,設定為1

fin希望斷開連線。

客戶端在傳輸了一段時間的資料後,資料傳輸完成了,於是準備關閉連線,釋放資源,所以傳送了乙個fin報文表示希望斷開連線,此時客戶端由established狀態進入fin_wait_1狀態,seq=x表示傳輸資料的偏移量到目前為止是為x

服務端在接受到了客戶端傳來的fin報文後向上層確認是否關閉連線,在得到肯定後會傳送確認報文,並進入close_wait狀態,seq=y表示傳輸資料的偏移量到目前為止是y,ack=x+1表示客戶端下次的偏移量為x+1。此時客戶端向伺服器的方向就釋放了,這時候處於半關閉狀態,即客戶端已經沒有資料要傳送了,但是伺服器若傳送資料,客戶端依然要接受。這個狀態還要持續一段時間,也就是整個close-wait狀態持續的時間。

客戶端在得到服務端發來的確認關閉連線的報文後進入fin_wait_2狀態,等待服務端傳送連線釋放報文,在此之前客戶端可以接受服務端傳送來的最後的資料

服務端在傳送玩了最後的資料後,向客戶端傳送連線釋放報文,fin=1,ack=x+1,由於在y之後又傳送了一些資料報,所以假定此時的偏移量為w,seq=w,服務端進入last_ack狀態,等待客戶端確認

客戶端接收到服務端傳來的關閉連線的請求後傳送確認報文給服務端,ack=1,seq=u+1,ack=w+1,然後進入time_wait狀態,經過兩個msl(最長報文段壽命)時間段後進入closed

服務端收到客戶端傳來的確認報文後進入close狀態

因為tcp協議要實現可靠的傳輸,tcp 協議的通訊雙方, 都必須維護乙個序列號, 以標識傳送出去的資料報中, 哪些是已經被對方收到的。 三次握手的過程即是通訊雙方相互告知序列號起始值, 並確認對方已經收到了序列號起始值的必經步驟,如果只是兩次握手, 至多只有連線發起方的起始序列號能被確認, 另一方選擇的序列號則得不到確認。

也就是當我伺服器端建立起連線後,客戶端得知道我服務端建立了連線,並且接收到我的偏移量,這樣才不會使得序列號混亂

同時,設計成三次握手可以防止已失效的連線請求又傳送到伺服器端而產生的錯誤

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

Tcp三次握手與四次揮手

tcp三次握手 四次揮手 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次...

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