什麼是TCP 三次握手及爲什麼進行三次握手?

TCP 連接是通過三次握手進行初始化的。三次握手的目的是同步連接雙方的序列號和確認號並交換 TCP 窗口大小信息。以下步驟概述了通常情況下客戶端計算機聯繫服務器計算機的過程:
1. 客戶端向服務器發送一個SYN置位的TCP報文,其中包含連接的初始序列號x和一個窗口大小(表示客戶端上用來存儲從服務器發送來的傳入段的緩衝區的大小)。
2. 服務器收到客戶端發送過來的SYN報文後,向客戶端發送一個SYNACK都置位的TCP報文,其中包含它選擇的初始序列號y、對客戶端的序列號的確認x+1和一個窗口大小(表示服務器上用來存儲從客戶端發送來的傳入段的緩衝區的大小)。
3. 客戶端接收到服務器端返回的SYN+ACK報文後,向服務器端返回一個確認號y+1和序號x+1ACK報文,一個標準的TCP連接完成。
TCP 使用類似的握手過程來結束連接。這可確保兩個主機均能完成傳輸並確保所有的數據均得以接收
TCP Client
Flags
TCP Server
1 Send SYN (seq=x)
----SYN--->
SYN Received
2 SYN/ACK Received
<---SYN/ACK----
Send SYN (seq=y) ACK (x+1)
3 Send ACK (y+1)
----ACK--->
ACK Received Connection Established
x: ISN (Initial Sequence Number) of the Client
y: ISN of the Server
 
第一次是客戶端發起連接;第二次表示服務器收到了客戶端的請求;第三次表示客戶端收到了服務器的反饋。這之後雙方均確認了連接的有效性,如果第三次服務器未收到,假設一個CS發送了SYN後無故消失了,那麼S在發出SYN+ACK應答報文後是無法收到CACK報文的(第三次握手無法完成),這種情況下S一般會重試(再次發送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連接,這段時間的長度我們稱爲SYN Timeout,一般來說這個時間是分鐘的數量級(大約爲30-2分鐘);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章