TCP 三次握手過程詳解
一、TCP握手基礎概念
1.1 什么是TCP握手
TCP三次握手是傳輸控制協議(Transmission Control Protocol)在建立連接時的標準過程,目的是確保通信雙方具備可靠的雙向通信能力。
關鍵結論:三次握手的本質是通過序列號同步和能力協商建立可靠的邏輯連接。
1.2 握手必要性
- 解決網絡延遲導致的重復分組問題
- 確認雙方的發送/接收能力正常
- 協商初始序列號(Sequence Number)
- 避免歷史連接造成的資源浪費
二、三次握手詳細過程
2.1 第一次握手(SYN)
客戶端發送:
- SYN=1(同步標志位)
- 隨機生成初始序列號(seq=x)
- 不攜帶應用層數據
Client -> Server: [SYN] Seq=x
2.2 第二次握手(SYN-ACK)
服務器響應:
- SYN=1 + ACK=1
- 確認號ack=x+1
- 隨機生成服務端序列號seq=y
Server -> Client: [SYN, ACK] Seq=y, Ack=x+1
2.3 第三次握手(ACK)
客戶端確認:
- ACK=1
- seq=x+1
- ack=y+1
- 可開始攜帶應用層數據
Client -> Server: [ACK] Seq=x+1, Ack=y+1
關鍵結論:第三次握手解決了"延遲的SYN包"可能導致的連接沖突問題。
三、技術深度解析
3.1 序列號機制
- 初始序列號(ISN)采用基于時鐘的隨機算法
- 32位循環序列號空間處理序列號回繞
- 嚴格遞增機制防止報文重放攻擊