TCP的三次握手與四次揮手

2021-10-04 04:26:43 字數 1464 閱讀 5274

客戶端與伺服器建立連線之前要經過tcp三次握手,關閉連線之前要經過tcp四次揮手,下面分別進行介紹:

**:第一次握手:建立連線時,客戶端首先向伺服器傳送一段tcp報文。其中,標誌位為syn,表示「請求建立新連線」,將序列號設為x。隨後客戶端進入syn-sent階段。

第二次握手:伺服器端接收到來自客戶端的tcp報文之後,結束listen階段。並返回一段tcp報文。其中,標誌位為syn和ack,序列號為y,確認號為x+1,表示」客戶端的報文序列號有效,伺服器能正常接收客戶端傳送的資料,並同意建立新連線「。隨後伺服器端進入syn-rcvd階段。

第三次握手:客戶端接收到來自伺服器端的確認收到資料的tcp報文之後,結束syn-sent階段,並返回最後一段tcp報文。其中,標誌位為ack,序列號為x+1,確認號為y+1,表示」確認收到伺服器端同意連線的訊號「。隨後客戶端進入established階段,當伺服器收到來自客戶端的最後一段tcp報文之後,也進入established階段,完成三次握手。

第一次揮手:客戶端想要釋放連線,首先向伺服器端傳送一段tcp報文,標誌位為fin,表示」請求釋放連線「,序列號設為u。隨後客戶端進入終止等待1階段。並且停止在客戶端到伺服器端方向上傳送資料(確認報文除外),但是客戶端仍然能接收從伺服器端傳輸過來的資料。

第二次揮手:伺服器端接收到從客戶端發出的tcp報文之後,確認了客戶端想要釋放連線,隨後進入半關閉狀態並返回一段tcp報文。其中,標誌位為ack,序列號為v,確認號為u+1。表示」接收到客戶端傳送的釋放連線的請求「。客戶端收到該報文之後進入終止等待2階段。

第三次揮手:伺服器將最後的資料傳送完畢後(經過closed-wait),就向客戶端傳送連線釋放報文。其中,標誌位為fin,ack,序列號為w,確認號為u+1,表示」已經準備好釋放連線了「。隨後伺服器進入最後確認階段。

第四次揮手:客戶端收到從伺服器端發出的tcp報文,確認了伺服器端已做好釋放連線的準備,結束終止等待2階段,進入time-wait階段,並向伺服器端傳送一段報文。其中,標誌位為ack,序列號為u+1,確認號為w+1。隨後客戶端開始在time-wait階段等待2msl。伺服器端收到從客戶端發出的tcp報文之後結束最後確認階段,進入closed階段。客戶端等待完2msl之後,結束time-wait階段,進入closed階段,由此完成四次揮手。

其實你只要想明白一件事以上類似的問題都可以迎刃而解,那就是,考慮網路狀況不可靠的情況,你傳送的報文對方有可能接收不到。以上機制所作的看似多餘的操作其實都是為了防止報文丟失,從而減小伺服器開銷。

通過對tcp握手揮手的觀察可以發現,在建立連線時是客戶端先準備好之後等待伺服器端,釋放連線時是客戶端先等伺服器端關閉之後自己再關閉。

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