在移动端网络调试、服务端排障、性能分析或协议逆向中,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 数据流 |
这是现代移动端和服务端调试的标准组合。