TCP/IP 實為協議套件,TCP (Transmission Control Protocol) 位於 OSI 第 4 層 (傳輸層),提供可靠、面向連線的位元組流傳輸服務。TCP 透過序號 (Sequence Number) 確保資料有序、無重複送達;IP 負責路由與封包轉發,TCP 負責端到端可靠性保證 (握手、流量控制、錯誤檢測重傳)。
| 欄位 | 長度 | 說明 |
|---|---|---|
| Source Port | 16 bits | 來源連接埠,標識發送端應用程式 |
| Destination Port | 16 bits | 目的連接埠,標識接收端應用程式 |
| Sequence Number | 32 bits | 序號。SYN 時為初始序號 (ISN),資料第一位元組為 ISN+1 |
| Acknowledgment Number | 32 bits | 確認號。ACK=1 時有效,表示期望接收的下一個序號 |
| Data Offset (HLEN) | 4 bits | TCP 頭長度 (以 4 bytes 為單位),指示資料起始位置 |
| Reserved | 6 bits | 保留,必須為 0 |
| Flags (Code Bits) | 6 bits | URG、ACK、PSH、RST、SYN、FIN (由高位至低位) |
| Window | 16 bits | 滑動視窗大小,流量控制關鍵 |
| Checksum | 16 bits | 首部+資料+偽首部檢驗和,驗證完整性 |
| Urgent Pointer | 16 bits | URG=1 時有效,指向緊急資料結束位置 |
| Options | 可變 | MSS、Window Scale、SACK、Timestamps 等 |
| Padding | 可變 | 補齊至 32 bits 整數倍 |
SYN-SENT 狀態。SYN-RECEIVED 狀態。ESTABLISHED 狀態,連線建立完成。狀態機關鍵狀態:CLOSED → LISTEN → SYN-RECEIVED → ESTABLISHED → FIN-WAIT-1 → FIN-WAIT-2 → TIME-WAIT → CLOSED
場景:A (攻擊者)、B (受信任伺服器)、C (受害者/目標伺服器)。B 信任 C (如 .rhosts)。
核心弱點:(1) TCP 連線資源消耗 (半開連線佔用記憶體) (2) ISN 可預測性 (RFC 793 早期演算法)。現代作業系統採用隨機化 ISN (RFC 6528) 大幅緩解。
攻擊者大量發送 SYN,不回應 SYN+ACK,導致伺服器半開連線佇列 (Backlog) 滿載,合法連線被拒。防禦:SYN Cookie、增加 Backlog、防火牆速率限制、TCP Intercept。
| 類別 | 變數 | 含義 |
|---|---|---|
| 發送端 | SND.UNA | 最早未確認序號 |
| SND.NXT | 下一個發送序號 | |
| SND.WND | 發送視窗大小 | |
| SND.UP | 發送緊急指標 | |
| ISS | 初始發送序號 (ISN) | |
| 接收端 | RCV.NXT | 期望接收序號 (視窗左邊界) |
| RCV.WND | 接收視窗大小 | |
| RCV.UP | 接收緊急指標 | |
| IRS | 初始接收序號 | |
| 當前段 | SEG.SEQ | 段首序號 |
| SEG.ACK | 段確認號 | |
| SEG.LEN | 段資料長度 | |
| SEG.WND | 段通告視窗 | |
| SEG.UP | 段緊急指標 | |
| SEG.PRC | 段優先權 |
確認邏輯:累積確認。SEG.SEQ + SEG.LEN - 1 <= SEG.ACK 表示該段已被確認。滑動視窗機制實現流量控制與可靠傳輸。
net.ipv4.tcp_syncookies=1) 緩解 SYN Flood。netstat -s 中 embryonic connection resets、SYN to LISTEN dropped 等計數器。