Wireshark 核心操作:捕获过滤器、显示过滤器、着色规则与统计工具

说实话,很多刚入行的兄弟拿到 Wireshark 第一反应就是——直接点开始抓包。结果呢?抓了五分钟,几万条数据包,直接看懵了。我当年也干过这事儿,抓了一堆没用的广播包,真正的问题反而被淹没了。

所以这一章,咱们把 Wireshark 最核心的四个操作讲透。你把这四个东西玩熟了,效率至少翻一倍。

捕获过滤器:抓之前就筛掉垃圾

捕获过滤器是在数据包进入 Wireshark 内存之前就把它扔掉。说白了,它帮你省内存、省时间。我建议你养成习惯:抓包之前,先想清楚你要看什么。

核心原则:捕获过滤器用 BPF(Berkeley Packet Filter)语法,写在 Capture Options 里。它只支持简单的条件,不支持逻辑组合太复杂的东西。

常用的几个,我列出来给你:

场景 过滤器表达式 说明
只看某台主机 host 192.168.1.100 双向流量都抓
只看某个端口 port 443 HTTPS 流量
只看某网段 net 10.0.0.0/8 内网段
排除广播包 not broadcast and not multicast 减少噪音
组合条件 host 192.168.1.1 and port 80 与关系

小技巧:捕获过滤器不支持「或」关系里的括号嵌套太深。我曾经在排查一个 DNS 故障时,想同时抓 UDP 53 和 TCP 53,直接写 port 53 就行了,别画蛇添足。

显示过滤器:抓完之后再精细筛选

显示过滤器就不一样了。它是在数据包已经抓进内存之后,你用它来「隐藏」不关心的包。注意,是隐藏,不是删除。你随时可以清掉过滤器,所有包又回来了。

显示过滤器的语法比捕获过滤器强大得多。它能深入到协议字段里。举个例子:

http.request.method == "GET"
tcp.analysis.flags
dns.qry.name contains "baidu"
ip.src == 192.168.1.1 and tcp.dstport == 443

我个人习惯把常用的显示过滤器存成按钮。怎么存?在过滤器栏输入表达式,点右边的「+」号,起个名字。下次直接点按钮,一秒切换。

注意:显示过滤器区分大小写。比如 http 是小写,HTTP 就不认。我见过有人排查了半天,结果是大小写写错了。

这里有个对比表,帮你搞清楚两者的区别:

对比项 捕获过滤器 显示过滤器
作用时机 抓包之前 抓包之后
语法基础 BPF Wireshark 专有语法
性能影响 减少抓包量,省内存 只影响显示,不省内存
表达能力 简单 强大,可深入协议字段
典型场景 高流量环境、嵌入式设备 日常分析、问题定位

着色规则:一眼看出异常

Wireshark 默认会给不同协议上色。比如 HTTP 是绿色,TCP 是浅蓝。但默认规则不够用。我建议你自定义一套着色规则,专门标记异常。

怎么配?进 View → Coloring Rules。你可以新建规则,比如:

  • TCP 重传: 背景红色,文字白色。看到红色就知道有丢包。
  • TCP 窗口满: 背景橙色。说明接收端处理不过来。
  • HTTP 5xx: 背景深红。服务端报错。
  • DNS 响应超时: 背景黄色。域名解析有问题。

我的经验:着色规则一定要用「高对比」配色。别用浅红配浅灰,你盯着屏幕看十分钟眼睛就花了。我一般用深色背景 + 白色文字,或者亮色背景 + 黑色文字,确保一目了然。

着色规则的优先级很重要。规则是从上往下匹配的,匹配到第一条就停。所以把最严重的异常(比如 TCP 重传)放在最上面。

统计工具:从数据里挖出真相

Wireshark 的统计功能,很多人忽略了。其实它比一条条翻包高效得多。我常用的几个:

1. 协议层次统计

进 Statistics → Protocol Hierarchy。它能告诉你整个抓包文件里,每种协议占了多少带宽、多少包数。有一次我排查一个「网速慢」的问题,一看协议层次,发现 ARP 广播占了 30% 的流量。原来是有人接了环路,交换机在疯狂泛洪。

2. 会话统计

进 Statistics → Conversations。它会列出所有 TCP/UDP 会话,按流量大小排序。你一眼就能看出哪个 IP 在「吃带宽」。我习惯先看「Bytes A→B」那一列,谁最大谁就是嫌疑犯。

3. 端点统计

进 Statistics → Endpoints。它显示每个 IP 或 MAC 地址的总流量。适合快速定位「哪个设备在狂发包」。

4. IO 图表

进 Statistics → IO Graph。这是我最喜欢的工具。你可以画出一条时间线,看流量波动。比如你怀疑某个时间段有攻击,直接拉出那个时间段的图,流量尖峰一目了然。

进阶用法:在 IO 图表里可以叠加多个过滤器。比如同时画 TCP 重传和正常流量的曲线,对比着看。重传曲线和正常流量曲线同步飙升,那基本就是网络拥塞了。

知识体系总览

下面这张图,把本章的核心逻辑串起来了。你一看就明白这四个工具各自在什么阶段用:

Wireshark 核心操作知识体系 Wireshark 核心操作知识体系 捕获过滤器 捕获数据包 显示过滤器 着色规则(视觉标记) 统计工具(协议/会话/端点/IO图) 核心逻辑: 1. 抓包前用捕获过滤器减少噪音,节省内存。 2. 抓包后用显示过滤器精确筛选,配合着色规则快速定位异常。 3. 最后用统计工具从宏观角度验证结论,避免「只见树木不见森林」。

实战组合拳:一个案例串起来

光讲理论没意思。我给你说个真实案例。

有一次,用户反馈「访问公司官网特别慢,有时候打不开」。我上去排查:

  1. 先设捕获过滤器: host 官网IP and port 443。只抓官网的 HTTPS 流量,其他全扔掉。
  2. 开始抓包: 让用户再访问一次,抓了大概 30 秒。
  3. 用显示过滤器: 输入 tcp.analysis.retransmission,只看重传包。好家伙,一屏红色。
  4. 着色规则自动标记: 因为我已经配好了重传红色,一眼就看到重传集中在某个时间段。
  5. 用统计工具验证: 打开 IO 图表,叠加两条曲线——正常流量和重传流量。发现重传曲线在用户访问时飙升,正常流量曲线却平缓。说明不是带宽不够,而是中间链路有丢包。

最后定位到是运营商某台交换机端口协商成了半双工。你想想看,如果没有这套组合拳,我可能还在一条条翻包,翻到下班都找不到原因。

避坑指南:我曾经在抓大文件传输时,忘了设捕获过滤器,结果抓了 2GB 的 pcapng 文件。Wireshark 直接卡死,等了十分钟才打开。从那以后,我抓包前必问自己一句:「我真的需要看所有包吗?」