4. Wireshark 基础:界面、过滤器与着色规则

好,咱们正式开始接触 Wireshark。说实话,我第一次打开这个软件的时候,看着满屏滚动的数据包,脑子是懵的。但别怕,这东西用熟了,就跟看串口日志一样自然。

这一章,我带你快速过一遍 Wireshark 的核心操作。你不需要记住所有按钮,只要掌握三个东西:界面布局、两种过滤器、着色规则。剩下的,边用边查就行。

4.1 Wireshark 界面:你只需要关注这四个区域

打开 Wireshark,默认界面大概长这样。别被菜单栏吓到,咱们抓蜂窝模组的包,90% 的时间只盯着四个区域:

区域 名称 作用
① 显示过滤器工具栏 输入过滤表达式,只显示你关心的包
② 数据包列表区 按时间顺序列出所有抓到的包,一行一个
③ 协议树区 选中一个包后,这里展示它的协议层级细节
④ 原始字节区 十六进制 + ASCII 显示包的原始数据

我个人习惯把③和④拉大一点,因为看 AT 指令和 NAS 消息时,协议树里的字段最直观。原始字节区嘛,偶尔用来确认一下字节序。

小技巧: 双击协议树里的某个字段,Wireshark 会自动在底部高亮对应的原始字节。反过来,在原始字节区点一个字节,协议树也会定位到对应字段。这个联动功能,查错时特别好用。

4.2 抓包过滤器:在抓之前就“掐掉”噪音

抓包过滤器,是在你开始抓包之前就设置好的。它的作用是让 Wireshark 只抓取你感兴趣的数据,其他的直接丢掉。这在嘈杂的射频环境里特别有用。

比如,你只想抓模组和基站之间的信令,不想看电脑的聊天记录。那就在抓包对话框里输入:

host 192.168.1.100   # 只抓与模组IP相关的包
port 5683            # 只抓CoAP协议的包(蜂窝物联网常用)
not arp              # 过滤掉ARP广播,那玩意儿太吵了

语法用的是 BPF (Berkeley Packet Filter),核心就是 type dir proto 三段式。举个例子:

  • host 10.0.0.2 —— 只抓源或目标 IP 是 10.0.0.2 的包
  • tcp port 80 —— 只抓 TCP 80 端口的包
  • icmp —— 只抓 Ping 包
注意: 抓包过滤器一旦设置,抓包过程中不能修改。我曾经在调试 NB-IoT 时忘了加 not broadcast,结果抓了 10 分钟全是 ARP 包,气得我直接重抓。所以,开始抓包前,一定先想清楚你要看什么。

4.3 显示过滤器:抓完之后的“精准搜索”

显示过滤器,是抓包结束之后用的。它不会删除任何数据,只是把不符合条件的包“藏起来”。你可以随时修改表达式,非常灵活。

这是 Wireshark 最强大的功能,没有之一。语法比 BPF 丰富得多,直接操作协议字段:

# 只看某个IP的通信
ip.addr == 192.168.1.100

# 只看HTTP GET请求
http.request.method == "GET"

# 只看RRC连接建立相关的包(蜂窝模组常用)
nas-eps.message_type == 0x41

# 组合条件:源IP是模组,且端口是5683
ip.src == 192.168.1.100 and udp.port == 5683

表达式输入框的背景色会给你反馈:

  • 绿色:语法正确,放心用
  • 红色:语法错误,检查一下拼写
  • 黄色:可能有歧义,但能运行

我个人习惯把常用的显示过滤器保存成按钮。点一下“+”号,给表达式起个名字,比如“只看附着流程”,下次直接点按钮就行,不用重新敲。

核心区别:
  • 抓包过滤器:抓之前设,硬过滤,丢掉的包再也找不回来。
  • 显示过滤器:抓之后设,软过滤,随时可以改,数据都在。
调试阶段,我建议你抓包时尽量用显示过滤器。除非你确定某些包绝对没用,再用抓包过滤器掐掉,省存储空间。

4.4 数据包着色规则:一眼看出“异常”

Wireshark 默认会给不同协议的数据包涂上颜色。比如 TCP 是淡紫色,UDP 是淡蓝色,HTTP 是绿色。但默认规则对蜂窝模组抓包来说,不太够用。

我通常会自定义几条着色规则,专门用来标记关键信令:

颜色 过滤表达式 用途
红色 nas-eps.message_type == 0x41 Attach Request(附着请求)
橙色 nas-eps.message_type == 0x42 Attach Accept(附着接受)
绿色 lte-rrc.ul_ccch.message.c1 RRC 连接建立
紫色 gtp GTP-U 用户面数据

设置方法很简单:视图 → 着色规则 → 新建。把上面的表达式填进去,选个显眼的颜色。这样,抓包列表里红色就是附着请求,橙色就是附着接受,一眼扫过去就知道流程走到哪一步了。

我的习惯: 我会把“异常包”也设一个颜色。比如 tcp.analysis.flags 涂成深红色,这样重传、丢包、乱序的包在列表里特别扎眼,不用一个个翻。

4.5 本章知识体系

下面这张图,帮你把本章的核心逻辑串起来。从抓包到分析,每一步该用什么工具,一目了然。

Wireshark 基础操作流程 Wireshark 基础操作流程 ① 抓包前 设置抓包过滤器 ② 抓包中 实时观察数据包列表 ③ 抓包后 使用显示过滤器 分析工具:协议树 + 原始字节 + 着色规则 输出:定位问题 / 确认信令流程 核心原则:抓包时尽量用显示过滤器,着色规则帮你一眼发现异常

嗯,这张图把整个流程串起来了。你抓包前设好过滤器,抓包时盯着列表,抓包后用显示过滤器精确定位,最后配合协议树和着色规则做分析。每一步都有对应的工具,别乱。

4.6 避坑指南

最后,分享几个我踩过的坑:

  • 抓包过滤器写错了,不会报错,只是抓不到任何包。 我曾经在表达式里把 host 拼成 hst,结果抓了半小时空文件,还以为是模组没发数据。所以,开始抓包后先看一眼列表,确认有数据进来。
  • 显示过滤器里,字段名大小写敏感。 ip.addr 是对的,IP.Addr 就是错的。Wireshark 的自动补全功能很好用,别手敲,用 Tab 键补全。
  • 着色规则不要设太多。 超过 10 条,列表看起来就像彩虹,反而分不清重点。我一般只设 5-6 条,专门针对当前调试的任务。