萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路應用技術

TCP三次握手建立連接全過程:UML序列圖深度解析

TCP連接建立的經典「三次握手」究竟發生了什麼?本文結合RFC 793標準與PlantUML序列圖,逐幀拆解SYN、SYN-ACK、ACK交互細節與狀態機流轉。

三次握手報文交互

  1. Client → Server : SYN (SEQ=x)
    Client主動打開,進入 SYN_SENT 狀態。SEQ=x為初始序號(ISN)。
  2. Server → Client : SYN (SEQ=y) + ACK (ACK=x+1)
    Server被動打開,回應SYN並確認Client SYN,進入 SYN_RCVD 狀態。
  3. Client → Server : ACK (ACK=y+1)
    Client確認Server SYN,雙方進入 ESTABLISHED 狀態,開始數據傳輸。

PlantUML序列圖源碼(可直接渲染)

@startuml
autonumber
participant Client
participant Server

note over Client, Server : 初始狀態均為 CLOSED

Client -> Server : SYN (SEQ=x)
activate Client
note left of Client : 進入 SYN_SENT

Server -> Client : SYN (SEQ=y), ACK (x+1)
activate Server
note right of Server : 進入 SYN_RCVD

Client -> Server : ACK (y+1)
deactivate Client
deactivate Server
note left of Client : 進入 ESTABLISHED
note right of Server : 進入 ESTABLISHED

note over Client, Server : 三次握手結束,雙方可傳輸數據
@enduml

關鍵狀態機流轉

端點初始發送/接收中間最終
Client (Active Open)CLOSED發SYNSYN_SENTESTABLISHED
Server (Passive Open)LISTEN收SYN→發SYN+ACKSYN_RCVDESTABLISHED

常見面試/排查考點

  • 為什麼不是兩次/四次握手?防止歷史連接重複初始化、確保雙方收發能力對等。
  • SYN Flood攻擊原理:偽造大量SYN佔滿Server半連接隊列(SYN_RCVD),防御:SYN Cookie、縮短超時、防火牆限速。
  • 同時打開:雙方同時發SYN,各自進入SYN_SENT,收到對方SYN回SYN+ACK,最終各自收到ACK進入ESTABLISHED,僅建立一條連接。
  • ISN生成:現代OS採用隨機增量算法(RFC 6528),防止序號預測攻擊。

掌握三次握手微觀細節,是網絡排障、安全分析、協議開發的基石能力。

copyright © 萬盛學電腦網 all rights reserved