在移動端網絡調試、服務端排障、性能分析或協議逆向中,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 數據流

這是現代移動端和服務端調試的標準組合。