在移動端網絡調試、服務端排障、性能分析或協議逆向中,TCP 抓包分析 是最基礎、卻也是最容易被忽視的能力。許多開發者關注的是應用層 HTTP/HTTPS,但真正影響網絡質量、導致請求失敗或使代理工具抓不到包的根本原因,往往隱藏在 TCP 層:
- 連接建立失敗(三次握手異常)
- 網絡抖動導致重傳
- MTU 限制引起分片
- 半連接、RST 中斷
- 自定義協議不走 HTTP,代理無法捕獲
- TLS 握手失敗根源其實在 TCP
因此,要想真正理解網絡行為,必須掌握 TCP 抓包分析的體系化方法,本文將從工程角度講解 TCP 抓包的核心流程。
一、為什麼 TCP 抓包比應用層抓包更重要?
許多 HTTPS 或 API 失敗,並不是業務邏輯錯誤,而是 TCP 連接層的問題。例如:
- SYN 無響應 → 服務器未監聽或被防火牆屏蔽
- 握手成功但數據傳不完 → MTU/路徑問題
- 大量重傳 → 延遲/抖動嚴重
- RST 頻繁 → 對端強制關閉連接
- 數據包亂序 → 網絡質量差導致應用層解碼異常
這類問題無論使用 Charles、Fiddler、Proxyman 之類的代理工具,都無法定位,因為這些工具只處理 HTTP/HTTPS,而不處理底層 TCP 事件。
這時就需要通過抓包進行 TCP 層協議分析,找出根因。
二、常見 TCP 抓包工具與分工
不同工具負責不同層級,組合使用效果最佳。
① tcpdump(命令行抓包)
適合:
- 高性能抓包
- 抓取服務器或設備真實流量
- 大規模採集中轉數據
缺點:
- 不易按進程/應用過濾
- 分析依賴 Wireshark 或腳本
② Wireshark(協議分析工具)
適合:
- 還原 TCP 連接過程
- 查看三次握手、重傳、亂序
- 分析 TLS/QUIC/TCP 分段
弱點:
- 對移動端 App 抓包困難(噪音太多)
③ mitmproxy/Fiddler/Charles(代理工具)
適用於:
- HTTP/HTTPS
- 修改請求和響應
但無法分析 TCP 握手和自定義協議。
④ 底層數據流捕獲工具 —— 抓包大師(Sniffmaster)
當代理工具無法抓取應用流量(例如自定義 TCP、QUIC、Pinning、系統代理失效),需要工具直接捕獲真實數據流。
Sniffmaster 能捕獲:
- TCP
- UDP
- HTTPS(不會被 Pinning 阻擋)
- HTTP 原始流量
- 自定義協議
- WebSocket(包括二進制幀)
並提供:
- 按 App/域名過濾
- HEX、文本、多視圖數據查看
- 導出 pcap → 可進入 Wireshark 分析
- 腳本攔截器(可選)
在 TCP 抓包分析中,Sniffmaster 屬於 底層抓取層,用於補足所有代理無法處理的情況。
三、TCP 抓包分析必懂的幾個核心概念
1️⃣ 三次握手(連接建立)
抓包要檢查:
- SYN → 是否發送
- SYN+ACK → 是否收到
- ACK → 是否成功迴應
若 SYN 超時,一般是:
- 服務端端口未監聽
- 防火牆阻斷
- 網絡鏈路異常
2️⃣ 四次揮手(連接關閉)
關注:
- FIN 發送方
- FIN 接收方
- 對端是否提前 RST
3️⃣ 重傳(Retransmission)
大量重傳意味着:
- 丟包
- 網絡波動
- MTU 過大
- DNS 解析異常導致連接重建
4️⃣ 分片與重組(TCP Segment of a Reassembled PDU)
大量分片意味着:
- 數據量大
- MTU 不匹配
- 路徑上出現黑洞路由
5️⃣ 自定義協議識別
當本地工具無法識別內容,但 TCP 流中有持續的二進制數據:
- 可能是 IM 協議
- 遊戲協議
- 視頻流協議
- 自定義加密協議
此類流量無法被代理抓取,只能通過底層工具獲取。
四、TCP 抓包分析實戰流程(可落地)
① 捕獲數據
可選方式:
- tcpdump
- Sniffmaster(按 App 抓取更簡潔)
Sniffmaster 的優勢是能過濾掉大量無關流量,讓分析更高效。
② 通過 Wireshark 查看結果
關注:
- TCP handshake
- TLS handshake
- Retransmission
- RST packets
- PSH/ACK 數據推送行為
- 重組後的應用層數據
③ 若是 HTTPS → 結合加密層判斷問題
例如:
- ClientHello 之後 ServerHello 沒回來 → 服務端中斷
- TLS Alert: unknown_ca → 證書問題
- TLS Alert: bad_certificate → Pinning
這些是代理工具無法顯示的底層錯誤。
④ 若是自定義協議 → 查看 Sniffmaster 的 HEX 或二進制流視圖
可用於:
- 協議逆向
- 恢復幀結構
- 識別壓縮或加密方式
- 分析業務邏輯
五、案例:為何 App 無法訪問 API?TCP 抓包揭示真相
現象:
- HTTPS 請求超時
- Charles 抓不到包
- App 提示網絡異常
使用 Sniffmaster 捕獲 TCP 數據流 → 導出 pcap:
在 Wireshark 中看到:
[SYN]
[Retransmission]
[SYN]
[Retransmission]
[TCP Port Unreachable]
結論:
- 服務端安全策略把客户端 IP 直接屏蔽
- 與應用代碼無關
- 代理工具抓不到,因為連握手都沒成功
底層分析直接定位問題根因。
TCP 抓包分析的組合工具鏈
| 層級 | 工具 | 用途 |
|---|---|---|
| 代理層 | Charles/Fiddler/mitmproxy | HTTP/HTTPS 場景 |
| 協議層 | Wireshark/tcpdump | 分析 TCP/TLS/QUIC 包結構 |
| 補抓層 | 抓包大師(Sniffmaster) | 捕獲真實 TCP/UDP/HTTPS 數據流 |
這是現代移動端和服務端調試的標準組合。