2、Wireshark核心操作:数据包列表、数据包详情、数据包字节流、抓包过滤器与显示过滤器

说实话,很多刚入行的朋友拿到Wireshark,第一反应就是「点开始,然后看那一堆花花绿绿的包飘过去」。嗯,这其实跟没看差不多。我见过太多人对着满屏的报文发呆,完全不知道从哪下手。

今天我就带你把这四个核心模块彻底捋清楚。说白了,Wireshark就三板斧:怎么看包、怎么过滤包、怎么分析包。掌握了这些,你才算真正入了抓包的门。

2.1 数据包列表:你的第一战场

打开Wireshark,最显眼的就是上面那个不停滚动的列表。这就是数据包列表,也叫Packet List面板。它默认展示每个包的编号、时间、源地址、目标地址、协议、长度和Info信息。

我个人习惯,一上来先做两件事:

  • 调整时间格式:默认是「相对时间」,我一般改成「绝对时间(时:分:秒.微秒)」。这样方便跟服务器日志对时间。
  • 开启着色规则:Wireshark默认就有颜色标记。比如TCP SYN包是深红色,HTTP是绿色,DNS是浅蓝。一眼扫过去,你就能知道流量的大致构成。
小技巧:点击列表顶部的列标题,可以快速排序。比如我想看哪个包最大,就点一下「Length」列。再点一下就是倒序。

我在项目中遇到过一个问题:客户说网络卡,我抓了5分钟包,列表里密密麻麻全是TCP重传的红色包。根本不用看详情,光看颜色就知道问题出在哪了。

2.2 数据包详情:层层剥开看本质

在列表里点中一个包,下面就会出现详情面板。这里Wireshark帮你把二进制数据解析成了人类能读懂的层级结构。从上到下依次是:

  • Frame:物理层信息,比如帧大小、时间戳
  • Ethernet II:数据链路层,源MAC和目标MAC
  • IP:网络层,源IP和目标IP
  • TCP/UDP:传输层,端口号、序列号、标志位
  • 应用层:比如HTTP的请求行、响应码

你想想看,一个网络包从网线到应用,中间经历了多少层封装?Wireshark帮你一层层拆开,每一层都对应一个协议头。我经常跟团队说:「看详情,就是看每一层协议头里的字段值」

重点:在详情面板里,你点中任意一行,下面的字节流面板就会高亮对应的十六进制数据。这个联动功能非常实用,能帮你把「抽象的概念」和「实际的二进制」对应起来。

我记得有一次排查一个诡异的HTTP 400错误。应用层日志只说了「请求格式错误」,但没说是哪错了。我打开详情面板,一层层往下翻,最后在HTTP Header里发现了一个非法字符。嗯,这就是细节的力量。

2.3 数据包字节流:最原始的二进制

最下面那个面板,就是字节流面板。左边是十六进制,右边是对应的ASCII字符。说实话,日常分析中你很少需要直接看二进制。但有两个场景,我建议你一定要看:

  1. 协议解析出错时:Wireshark有时候会解析错。这时候你得看原始字节,自己判断。
  2. 分析加密流量:虽然内容看不懂,但你可以看握手阶段的随机数、证书等关键字段。

字节流面板里,灰色的是协议头,黑色的是数据载荷。你点中详情面板里的某个字段,字节流面板就会自动选中对应的字节。这个联动,说白了就是Wireshark最核心的交互逻辑。

2.4 抓包过滤器:别什么都往兜里装

很多人一上来就点「开始捕获」,结果抓了一堆没用的广播包、ARP包。我建议你养成一个好习惯:抓包之前,先想清楚你要看什么

抓包过滤器是在抓包之前设置的,它决定了哪些包能进入Wireshark的缓冲区。语法用的是BPF(Berkeley Packet Filter),格式是:协议 方向 类型 值

常用的几个,我列出来:

需求 过滤器表达式
只抓某个IP的流量 host 192.168.1.100
只抓HTTP流量 tcp port 80
排除广播包 not broadcast
抓某个网段的流量 net 192.168.1.0/24
注意:抓包过滤器一旦设置,不符合条件的包根本不会进入缓冲区。如果你设错了,就得重新抓。我曾经在排查一个间歇性丢包问题时,忘了设抓包过滤器,结果抓了2G的垃圾数据,关键包全被淹没了。从那以后,我每次抓包前都会先确认过滤器。

2.5 显示过滤器:大海捞针的利器

显示过滤器是在抓包之后用的。它不会删除任何包,只是把不符合条件的包隐藏起来。这个功能我几乎每时每刻都在用。

语法跟抓包过滤器完全不同,它用的是Wireshark自己的表达式格式。比如:

  • http:只看HTTP协议
  • ip.addr == 192.168.1.1:只看这个IP的流量
  • tcp.port == 443:只看443端口的流量
  • http.response.code == 404:只看返回404的HTTP响应

显示过滤器最强大的地方在于,它可以组合使用。比如我想看「从192.168.1.100发出的、且是TCP SYN包」:

ip.src == 192.168.1.100 and tcp.flags.syn == 1 and tcp.flags.ack == 0

你输入的时候,Wireshark会自动帮你补全字段名。如果表达式是绿色的,说明语法正确;如果是红色的,说明写错了。这个功能很贴心。

我的习惯:我会把常用的显示过滤器保存下来。比如「只看TCP重传」的过滤器是 tcp.analysis.retransmission,我直接存成按钮,下次一键点击就行。

2.6 一张图看懂核心逻辑

下面这张图,是我自己总结的Wireshark核心操作流程。你照着这个顺序走,基本不会乱。

Wireshark核心操作流程 ① 选择网络接口 ② 设置抓包过滤器(可选) ③ 开始抓包 ④ 分析数据:列表 → 详情 → 字节流 ⑤ 使用显示过滤器精确定位 核心面板 数据包列表 数据包详情 字节流 两种过滤器 抓包过滤器 (抓前设置) 显示过滤器 (抓后筛选) 联动查看 点详情→看字节

这张图把整个流程串起来了。你从选择接口开始,到设置抓包过滤器,再到开始抓包,然后通过三个面板联动分析,最后用显示过滤器精确定位。每一步都有它的意义。

我曾经带过一个新人,他抓了包不知道怎么看。我就让他照着这个流程走一遍。先看列表里有没有异常颜色,再点开详情看协议头,最后用过滤器把可疑的包单独拎出来。半小时后他就跟我说:「原来这么简单。」

嗯,确实就这么简单。关键是你要养成这个习惯。


公众号:蓝海资料掘金营,微信deep3321