11 · 抓包与网络调试
前端说"后端没返回",后端说"前端没发对",最快的裁决方式是看包。本篇讲 Wireshark / Charles / 命令行三套工具怎么抓、怎么看,以及从现象到定位的排障套路。
速览卡
| 项 | 内容 |
|---|---|
| 一句话定位 | 用抓包把"说不清的网络问题"变成证据 |
| 核心内容 | Wireshark 看协议、Charles 看 HTTPS、curl 快速验证 |
| 读完能回答 | 抓包能不能看 HTTPS 内容?连接失败怎么看? |
| 相关板块 | N02 TCP | N05 TLS |
一、三套工具的定位
| 工具 | 定位 | 何时用 |
|---|---|---|
| curl | 命令行快速验证 | 复现请求、看响应头 |
| Charles / Fiddler | 正向代理抓 HTTPS | 看应用真实请求、改包重放 |
| Wireshark | 抓网卡流量 | 看 TCP/TLS/DNS 底层 |
二、curl 三板斧
bash
curl -v https://example.com/api # 看握手与请求细节
curl -i https://example.com/api # 只看响应头
curl -w 'time_total:%{time_total}\n' https://example.com/api| 指标 | 含义 |
|---|---|
time_namelookup | DNS 耗时 |
time_connect | TCP 建连耗时 |
time_appconnect | TLS 握手耗时 |
time_total | 总耗时 |
先分段再定位:DNS 慢调 DNS,TCP 慢查网络,TLS 慢查证书与加密套件,别一上来就怪业务代码。
三、Charles / Fiddler 看 HTTPS
text
装 CA 证书 → 开启 SSL 代理 → 就能解密看明文HTTPS 抓包靠"中间人",前提是客户端信任代理的 CA。移动端真机抓包还要配代理地址与端口,是另一层坑。
四、Wireshark 看协议
| 场景 | 看什么 |
|---|---|
| 连接失败 | 三次握手是否完成 |
| 慢 | 丢包重传、RTT、乱序 |
| TLS 错误 | 握手各阶段的 ClientHello/ServerHello |
| 超时 | 哪一方不再回包 |
五、排障套路
text
① 用 curl 复现,确认能稳定/不能稳定出现
② 分段看耗时:DNS → TCP → TLS → 业务
③ 抓包对照:连接有没有建起来、谁先沉默
④ 收敛到一层,再对症处理六、自检清单
- [ ] 会用
curl -v/-i/-w做三段式定位 - [ ] 能给手机配代理抓 HTTPS(含证书)
- [ ] 能在 Wireshark 里找到三次握手
- [ ] 能区分 DNS/TCP/TLS/业务四层耗时
- [ ] 遇到"双方推诿"知道用抓包裁决
七、常见误区
| 误区 | 事实 |
|---|---|
| "抓包能直接看 HTTPS" | 需要中间人证书,否则只见密文 |
| "DevTools 就是抓包" | 它看不到连接层,TCP 问题要用 Wireshark |
| "看响应慢就够了" | 要分段定位到底慢在哪一层 |
八、动手练习
练习 A:分段测速
对一个慢接口用 curl -w 打出五段时间,写出每段对应的排障方向。
练习 B:抓一次握手
Wireshark 抓访问一个网站的包,过滤 tcp.flags.syn==1,把三次握手截图标出。
练习 C:手机抓包
用 Charles 给手机配代理,抓一次 App 请求,观察 HTTPS 解密后的请求头。
相关文档
本区
- 02 · TCP 握手/挥手与拥塞控制 —— 抓包里的连接状态
- 05 · TLS 与证书 —— 抓包里的握手细节
- 03 · DNS 原理与排查 —— 分段定位的第一层