TCP 抓包分析實戰(zhàn),從三次握手到自定義協(xié)議解析的完整方法

在移動端網(wǎng)絡(luò)調(diào)試、服務(wù)端排障、性能分析或協(xié)議逆向中,TCP 抓包分析 是最基礎(chǔ)、卻也是最容易被忽視的能力。許多開發(fā)者關(guān)注的是應(yīng)用層 HTTP/HTTPS,但真正影響網(wǎng)絡(luò)質(zhì)量、導(dǎo)致請求失敗或使代理工具抓不到包的根本原因,往往隱藏在 TCP 層

  • 連接建立失敗(三次握手異常)
  • 網(wǎng)絡(luò)抖動導(dǎo)致重傳
  • MTU 限制引起分片
  • 半連接、RST 中斷
  • 自定義協(xié)議不走 HTTP,代理無法捕獲
  • TLS 握手失敗根源其實在 TCP

因此,要想真正理解網(wǎng)絡(luò)行為,必須掌握 TCP 抓包分析的體系化方法,本文將從工程角度講解 TCP 抓包的核心流程。


一、為什么 TCP 抓包比應(yīng)用層抓包更重要?

許多 HTTPS 或 API 失敗,并不是業(yè)務(wù)邏輯錯誤,而是 TCP 連接層的問題。例如:

  • SYN 無響應(yīng) → 服務(wù)器未監(jiān)聽或被防火墻屏蔽
  • 握手成功但數(shù)據(jù)傳不完 → MTU/路徑問題
  • 大量重傳 → 延遲/抖動嚴(yán)重
  • RST 頻繁 → 對端強制關(guān)閉連接
  • 數(shù)據(jù)包亂序 → 網(wǎng)絡(luò)質(zhì)量差導(dǎo)致應(yīng)用層解碼異常

這類問題無論使用 Charles、Fiddler、Proxyman 之類的代理工具,都無法定位,因為這些工具只處理 HTTP/HTTPS,而不處理底層 TCP 事件。

這時就需要通過抓包進行 TCP 層協(xié)議分析,找出根因。


二、常見 TCP 抓包工具與分工

不同工具負(fù)責(zé)不同層級,組合使用效果最佳。

① tcpdump(命令行抓包)

適合:

  • 高性能抓包
  • 抓取服務(wù)器或設(shè)備真實流量
  • 大規(guī)模采集中轉(zhuǎn)數(shù)據(jù)

缺點:

  • 不易按進程/應(yīng)用過濾
  • 分析依賴 Wireshark 或腳本

② Wireshark(協(xié)議分析工具)

適合:

  • 還原 TCP 連接過程
  • 查看三次握手、重傳、亂序
  • 分析 TLS/QUIC/TCP 分段

弱點:

  • 對移動端 App 抓包困難(噪音太多)

③ mitmproxy/Fiddler/Charles(代理工具)

適用于:

  • HTTP/HTTPS
  • 修改請求和響應(yīng)

但無法分析 TCP 握手和自定義協(xié)議。


④ 底層數(shù)據(jù)流捕獲工具 —— 抓包大師(Sniffmaster)

當(dāng)代理工具無法抓取應(yīng)用流量(例如自定義 TCP、QUIC、Pinning、系統(tǒng)代理失效),需要工具直接捕獲真實數(shù)據(jù)流。

Sniffmaster 能捕獲:

  • TCP
  • UDP
  • HTTPS(不會被 Pinning 阻擋)
  • HTTP 原始流量
  • 自定義協(xié)議
  • WebSocket(包括二進制幀)

并提供:

  • 按 App/域名過濾
  • HEX、文本、多視圖數(shù)據(jù)查看
  • 導(dǎo)出 pcap → 可進入 Wireshark 分析
  • 腳本攔截器(可選)

在 TCP 抓包分析中,Sniffmaster 屬于 底層抓取層,用于補足所有代理無法處理的情況。


三、TCP 抓包分析必懂的幾個核心概念


1?? 三次握手(連接建立)

抓包要檢查:

  • SYN → 是否發(fā)送
  • SYN+ACK → 是否收到
  • ACK → 是否成功回應(yīng)

若 SYN 超時,一般是:

  • 服務(wù)端端口未監(jiān)聽
  • 防火墻阻斷
  • 網(wǎng)絡(luò)鏈路異常

2?? 四次揮手(連接關(guān)閉)

關(guān)注:

  • FIN 發(fā)送方
  • FIN 接收方
  • 對端是否提前 RST

3?? 重傳(Retransmission)

大量重傳意味著:

  • 丟包
  • 網(wǎng)絡(luò)波動
  • MTU 過大
  • DNS 解析異常導(dǎo)致連接重建

4?? 分片與重組(TCP Segment of a Reassembled PDU)

大量分片意味著:

  • 數(shù)據(jù)量大
  • MTU 不匹配
  • 路徑上出現(xiàn)黑洞路由

5?? 自定義協(xié)議識別

當(dāng)本地工具無法識別內(nèi)容,但 TCP 流中有持續(xù)的二進制數(shù)據(jù):

  • 可能是 IM 協(xié)議
  • 游戲協(xié)議
  • 視頻流協(xié)議
  • 自定義加密協(xié)議

此類流量無法被代理抓取,只能通過底層工具獲取。


四、TCP 抓包分析實戰(zhàn)流程(可落地)


① 捕獲數(shù)據(jù)

可選方式:

  • tcpdump
  • Sniffmaster(按 App 抓取更簡潔)

Sniffmaster 的優(yōu)勢是能過濾掉大量無關(guān)流量,讓分析更高效。


② 通過 Wireshark 查看結(jié)果

關(guān)注:

  • TCP handshake
  • TLS handshake
  • Retransmission
  • RST packets
  • PSH/ACK 數(shù)據(jù)推送行為
  • 重組后的應(yīng)用層數(shù)據(jù)

③ 若是 HTTPS → 結(jié)合加密層判斷問題

例如:

  • ClientHello 之后 ServerHello 沒回來 → 服務(wù)端中斷
  • TLS Alert: unknown_ca → 證書問題
  • TLS Alert: bad_certificate → Pinning

這些是代理工具無法顯示的底層錯誤。


④ 若是自定義協(xié)議 → 查看 Sniffmaster 的 HEX 或二進制流視圖

可用于:

  • 協(xié)議逆向
  • 恢復(fù)幀結(jié)構(gòu)
  • 識別壓縮或加密方式
  • 分析業(yè)務(wù)邏輯

五、案例:為何 App 無法訪問 API?TCP 抓包揭示真相

現(xiàn)象:

  • HTTPS 請求超時
  • Charles 抓不到包
  • App 提示網(wǎng)絡(luò)異常

使用 Sniffmaster 捕獲 TCP 數(shù)據(jù)流 → 導(dǎo)出 pcap:

在 Wireshark 中看到:

[SYN]  
[Retransmission]  
[SYN]  
[Retransmission]  
[TCP Port Unreachable]

結(jié)論:

  • 服務(wù)端安全策略把客戶端 IP 直接屏蔽
  • 與應(yīng)用代碼無關(guān)
  • 代理工具抓不到,因為連握手都沒成功

底層分析直接定位問題根因。


TCP 抓包分析的組合工具鏈

層級 工具 用途
代理層 Charles/Fiddler/mitmproxy HTTP/HTTPS 場景
協(xié)議層 Wireshark/tcpdump 分析 TCP/TLS/QUIC 包結(jié)構(gòu)
補抓層 抓包大師(Sniffmaster) 捕獲真實 TCP/UDP/HTTPS 數(shù)據(jù)流

這是現(xiàn)代移動端和服務(wù)端調(diào)試的標(biāo)準(zhǔn)組合。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容