登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

Wireshark 抓包定位 HTTP 接口慢请求实战:过滤器、时间列和 Follow TCP Stream

来源:17golang原创

时间:2026-06-14 12:29:18 270浏览 收藏

接口慢不一定是后端代码慢,也可能是 DNS、连接建立、代理、网络抖动、服务端等待或响应体过大。浏览器 Network 面板能看到应用层时间,但如果你需要进一步确认一次请求在网络层到底发生了什么,Wireshark 是非常实用的工具。

本文用“定位 HTTP 接口慢请求”这个场景,按真实操作顺序演示:选择网卡抓包、用显示过滤器缩小范围、查看时间列和包详情、再用 Follow TCP Stream 还原一次请求响应。

适合人群

本文适合需要排查接口慢、请求失败、代理转发异常、服务端响应异常的开发者和运维同学。你不需要先掌握复杂网络协议,但要知道请求地址、端口、客户端 IP 或服务端 IP 中至少一个条件。

目录

  • 先明确这次要抓哪类请求
  • 用显示过滤器缩小范围
  • 看时间列和包详情定位慢点
  • 用 Follow TCP Stream 还原请求响应
  • 常见坑位和检查清单
  • 总结

先明确这次要抓哪类请求

打开 Wireshark 后,第一步是选择正在通信的网卡。常见名称包括 Wi-Fi、以太网、Loopback 等。开始抓包前,先确认你要观察的请求条件,否则包列表会很快变得非常多。

建议提前准备这几个信息:

  • 服务端 IP 或域名解析后的 IP。
  • 服务端端口,例如 80、8080、443。
  • 触发请求的时间点。
  • 接口路径或关键字,用于后续在流内容里查找。

如果是 HTTPS 请求,Wireshark 默认看不到明文业务内容,但仍然可以观察连接、证书握手、包大小、重传、延迟和关闭过程。本文以 HTTP 或可解密场景说明过滤和定位思路。

用显示过滤器缩小范围

Wireshark 主窗口上方有显示过滤器输入栏。它不会改变已经抓到的包,只负责把当前列表里符合条件的包显示出来,适合排查时逐步收窄范围。

# 只看 HTTP 请求和响应
http.request or http.response

# 只看某个服务端 IP
ip.addr == 192.168.1.20

# 只看目标端口
tcp.port == 8080

# 组合过滤
ip.addr == 192.168.1.20 and tcp.port == 8080

过滤后重点看包列表里的 Time、Source、Destination、Protocol、Length、Info 等列。Info 列通常能看到请求方法、路径或状态码;Time 列可以帮助你把慢请求和触发时间对齐。

Wireshark 显示过滤器和包列表定位慢请求示意图,展示过滤栏、HTTP 请求、时间差和可疑请求

如果你只知道接口路径,可以先用较宽的条件过滤出 HTTP 包,再在包列表或流内容里继续查找关键字。不要一开始就写过长过滤条件,排查时更容易漏掉关键包。

看时间列和包详情定位慢点

慢请求排查时,不要只盯着单个包。一次请求通常包含连接建立、请求发送、服务端处理、响应返回等阶段。你可以通过相邻包的时间差,判断慢点出现在请求发出前、服务端返回前,还是响应传输过程中。

# 只显示时间间隔较大的包,适合快速找等待点
frame.time_delta_displayed > 0.5

# 查看某条 TCP 对话
tcp.stream eq 3

选中一个可疑包后,下方的包详情面板会按协议层展开,例如 Frame、Ethernet、IP、TCP、HTTP。这里可以确认端口、序号、状态码、请求头和响应头等细节。

用 Follow TCP Stream 还原请求响应

当你想把一次 TCP 对话完整串起来看,可以选中相关包,右键选择 Follow TCP Stream。Wireshark 会打开一个新窗口,把同一个 TCP 流里的请求和响应按顺序展示出来。

Wireshark Follow TCP Stream 还原请求响应示意图,展示选中包、Follow 菜单、请求响应内容和关键字定位

这个视图适合确认三类问题:

  • 请求是否真的发到了目标服务。
  • 服务端是否返回了预期状态码和响应体。
  • 响应前是否存在明显等待,或者响应内容是否过大。

如果流内容里包含敏感信息,截图和日志归档前要做脱敏处理,尤其是 Cookie、Authorization、手机号、邮箱、订单号等字段。

常见坑位和检查清单

1. 抓错网卡

如果列表一直没有目标请求,先确认网卡是否正确。可以观察每个网卡旁边的实时流量波形,选择请求触发时有明显流量变化的那个。

2. 把捕获过滤器和显示过滤器混淆

捕获过滤器决定“抓哪些包”,显示过滤器决定“展示哪些包”。新手排查建议先抓全量,再用显示过滤器筛选,避免一开始就过滤掉关键数据。

3. HTTPS 明文看不到

HTTPS 默认只能看到连接和加密后的数据。如果要分析业务内容,需要结合浏览器开发者工具、服务端日志,或在受控环境配置解密材料。线上环境不要随意采集和分发敏感流量。

4. 只看状态码,不看时间线

状态码只能说明结果,时间线才能说明慢在哪里。建议同时看 Time、时间差、包详情和 Follow TCP Stream,必要时和服务端日志的请求时间戳对齐。

总结

用 Wireshark 排查 HTTP 接口慢请求时,核心步骤是:选对网卡,抓到目标请求,用显示过滤器缩小范围,查看时间列和包详情,再通过 Follow TCP Stream 还原请求响应。它不替代应用日志,但能补上网络层视角,帮助你判断问题到底在客户端、网络链路、代理层还是服务端。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>