本文目录导读:

Wireshark 是一款非常强大的网络封包分析软件,抓包只是第一步,分析才是真正能体现水平的地方。
下面从通用分析思路、常见协议分析和常用技巧三个维度,帮你梳理 Wireshark 的分析方法。
通用分析思路:五步法
拿到一个抓包文件(.pcapng),可以按以下顺序排查:
-
看统计概览
统计->捕获文件属性:查看总包数、时长、平均流量(Mbps),如果流量异常大,可能存在攻击或下载行为。统计->协议层次:直观看到各协议占比,ARP 包过多可能意味着广播风暴;TCP 占比过高是正常通信,UDP 包过多可能涉及流媒体或攻击。
-
找对话(Conversations)
统计->对话:查看所有 IP 或 TCP/UDP 会话,按 数据包数量 或 字节数 排序,快速锁定“谁在和谁说话最多”。- 重点关注:通信量最大的那对 IP,通常是分析的核心目标。
-
过滤定位(关键)
- 用显示过滤器精准定位。
ip.addr == 192.168.1.1只看某台主机。 - 用
右键 -> 作为过滤器应用 -> 选中快速过滤。
- 用显示过滤器精准定位。
-
跟踪流(Follow Stream)
- 在任意一个 TCP/UDP 包上右键 ->
追踪流->TCP/UDP流,Wireshark 会重组整个对话,让你看到完整的请求和响应内容(HTTP 请求、文件传输等)。 - 注意:这里有“显示原始数据”和“显示 ASCII”等选项,HTTP 看 “Printable text only” 最清晰。
- 在任意一个 TCP/UDP 包上右键 ->
-
检查专家信息
分析->专家信息,Wireshark 会自动标记异常,比如重传、乱序、窗口缩零、认证失败等,这是快速发现问题点的捷径。
常见协议分析要点
TCP 分析(最核心,也最复杂)
TCP 分析主要关注 连接建立(三次握手)、数据传输 和 连接释放(四次挥手)。
-
三次握手排查重点:
- 检查 SYN:客户端发 SYN,服务端回 SYN-ACK,客户端再回 ACK。
- 关键过滤:
tcp.flags.syn == 1 and tcp.flags.ack == 0(只看初始 SYN)。 - 问题定位:
- 只看到 SYN 没看到 SYN-ACK → 服务端无响应(防火墙拦截、服务未启动)。
- SYN-ACK 后客户端没回 ACK → 客户端丢弃 / 半连接攻击(SYN Flood)。
- 多次 SYN 重传 → 网络延迟或丢包严重。
-
数据重传与延迟:
- TCP Retransmission(重传):Wireshark 会用黑色或红色标记,如果频繁出现,说明网络不稳定或对端不确认。
- Dup ACK(重复确认):收到三个重复确认 → 触发快速重传,说明有掉包。
- 窗口大小(Windows):
Window值突然变为 0(零窗口),说明接收方缓冲区满了,应用程序处理慢,导致发送方暂停。 - RTT(往返时间):
统计->TCP流图->往返时间图,观察波峰是否异常高。
HTTP/HTTPS 分析
- HTTP:
- 直接使用 追踪流,可以看到完整的
GET /index.html HTTP/1.1和HTTP/1.1 200 OK返回。 - 关键过滤:
http.response.code == 404(查404错误)、http.request.method == "POST"(查提交)、http.time > 5(查慢请求)。
- 直接使用 追踪流,可以看到完整的
- HTTPS:
- 流量是加密的,只能看到
Client Hello、Server Hello、Certificate等握手过程,看不到内容。 - 破解方法:需要服务端的
SSLKEYLOGFILE或私钥,在编辑->首选项->TLS中导入(Pre)-Master-Secret log filename后,HTTPS 内容就可以像 HTTP 一样明文查看了。
- 流量是加密的,只能看到
DNS 分析
- 关键过滤:
dns.flags.response == 0(请求)或dns.flags.response == 1(响应)。 - 排查关注点:
- 查询时间:看请求和响应的时间差,如果超过 1 秒,说明 DNS 服务器慢或丢包。
- 响应状态码:
No such name (3)表示域名不存在,Server failure (2)表示服务器故障。 - 域名:
dns.qry.name过滤具体域名。
ARP 分析(局域网问题)
- 广播风暴:
arp过滤,ARP 包频繁出现(每秒几十上百个),通常是由于 IP 地址冲突或环路。 - 欺骗检测:正常情况下,一个 IP 绑定一个 MAC,若发现同一 IP 对应两个不同 MAC(
arp.duplicate-address-detected),则是 ARP 攻击或配置错误。
高频问题排查实战
| 问题现象 | 怀疑方向 | Wireshark 中的关键迹象 |
|---|---|---|
| 网页打不开 | DNS、TCP连接 | DNS查询无响应(No such name);2. 三次握手仅SYN无SYN-ACK(被防火墙拦);3. HTTP返回404/502 |
| 网速慢/卡顿 | 丢包、延迟、窗口 | 大量 TCP Retransmission;2. Dup ACK 超过3次;3. 零窗口 ZeroWindow |
| 视频会议卡 | UDP乱序、丢包 | UDP包时间间隔不均;2. RTP (实时传输协议) 包序跳跃 (SSRC 冲突);3. jitter (抖动) 值过高 |
| 服务器连接不上 | 端口未开、防火墙 | SYN 后收到 RST (重置) → 端口未监听;2. 无任何响应 → 防火墙丢弃 |
| 网络攻击 | 扫描、DoS | 大量来自单一IP的SYN包(SYN Flood);2. 大量针对不同端口的未完成连接(端口扫描) |
Wireshark 的几个高效技巧
- “宏”一样的过滤键:无需输入复杂公式,在
分析->显示过滤器表达式...里点选,或右键字段直接作为过滤器。 - 着色规则:默认红色是重传,黑色是坏包,在
视图->着色规则中可以自定义,比如把HTTP 5xx错误标成橙色。 - IO 图表与流图:
- IO 图表 (
统计->IO图表):观察流量吞吐量的时间变化,找出峰值和异常时间点。 - TCP 流图 (
统计->TCP流图):- 时序图 (Stevens):可视化会话窗口变化,直观看出零窗口和拥塞。
- 吞吐量图:看数据传输速率。
- IO 图表 (
- 导出特定对象:HTTP 或 SMB 协议中,可以直接
文件->导出对象->HTTP,把传输的文件下载下来,免去手动复制。 - 命令行工具
tshark:如果文件很大(几GB),用 GUI 打开很慢,可以用tshark -r large.pcap -Y "http.request" -w small.pcap过滤后再打开。
- 初学者:先看
统计->协议层次和专家信息,熟悉流量结构。 - 常规问题:追踪流是神器,直接看完整对话。
- 疑难杂症:重点分析 TCP 的三次握手是否有异常,以及 TCP 流图 中的 RTT 和窗口变化。
如果你有具体的抓包文件或某个报错想分析,可以描述一下(抓到了很多红色的重传包”或“某个IP一直在发RST”),我可以给出更针对性的过滤器和判断方法。