Wireshark 入门:装好它,看懂它,用起来
说实话,很多网络工程师干了三五年,抓包工具还是只会点“开始”和“停止”。
Wireshark 这东西,你把它当黑盒用,它就是个体力活;你把它当显微镜用,它就能帮你看到网络里每一比特的流动。今天咱们就从零开始,把 Wireshark 装好、界面认全、过滤器搞明白,最后拿 ping 百度做个开苞实验。
安装 Wireshark:别踩我踩过的坑
安装本身不复杂,但有几个细节我吃过亏,得跟你提个醒。
- 下载来源:只去官网
wireshark.org下载。第三方站点的安装包可能捆绑了广告软件,我见过有人装完 Wireshark 浏览器多了三个工具栏。 - WinPcap / Npcap 选择:安装过程中会提示安装抓包驱动。Windows 10/11 用户务必选 Npcap,别再用老掉牙的 WinPcap。Npcap 支持 WinPcap API 兼容模式,而且能抓本地回环流量——这个能力在调试本机服务时非常有用。
- 以管理员身份运行:装完后第一次启动,右键选“以管理员身份运行”。否则 Wireshark 打不开网卡列表,你会看到一个空荡荡的界面,还以为自己装了个假软件。
界面介绍:别被密密麻麻的窗口吓到
第一次打开 Wireshark,你可能会觉得它像个飞机驾驶舱。别慌,核心区域就四个,我按使用频率给你排个序。
| 区域 | 名称 | 作用 |
|---|---|---|
| ① | 网卡列表(Capture) | 显示所有可用网卡,点击即可开始抓包 |
| ② | 数据包列表(Packet List) | 实时显示抓到的每个包,按时间顺序排列 |
| ③ | 数据包详情(Packet Details) | 选中某个包后,这里展示协议栈的逐层解析 |
| ④ | 原始字节(Packet Bytes) | 十六进制 + ASCII 的原始数据,适合深度分析 |
我个人习惯把③和④并排显示,这样既能看协议解析,又能对照原始字节。你可以在 View → Packet Bytes → Show as 里调成“Side by side”。
抓包过滤器 vs 显示过滤器:这俩不是一回事
很多新手把这两个概念搞混,结果抓了一堆垃圾包,然后抱怨 Wireshark 卡。我当年也犯过这个错。
简单说:抓包过滤器是“抓之前”设的,显示过滤器是“抓之后”用的。
| 对比项 | 抓包过滤器(Capture Filter) | 显示过滤器(Display Filter) |
|---|---|---|
| 设置时机 | 抓包开始前 | 抓包进行中或结束后 |
| 语法 | BPF(Berkeley Packet Filter) | Wireshark 专有语法(更强大) |
| 是否丢弃数据 | 是,不符合条件的包直接丢弃 | 否,只是隐藏,数据还在内存里 |
| 典型场景 | 只抓 DNS 流量,减少干扰 | 从大量流量中筛选出 HTTP 请求 |
| 示例 | host 8.8.8.8 |
ip.addr == 8.8.8.8 |
第一个抓包实验:ping 百度
理论说再多,不如动手抓一个。咱们来抓一次 ping 百度的 ICMP 包。
步骤一:设置抓包过滤器
在 Wireshark 主界面的 Capture → Options 里,找到 Capture Filter 输入框,填入:
icmp and host 110.242.68.66
这里 110.242.68.66 是百度的一个 IP(你可以先 ping 一下确认当前解析结果)。只抓 ICMP 协议且目标 IP 是百度的包,这样就不会被其他流量干扰。
步骤二:开始抓包
点击 Start 按钮,然后打开命令行窗口,执行:
ping baidu.com -n 4
等 ping 执行完毕,回到 Wireshark 点击 Stop。
步骤三:分析抓到的包
你应该能看到 8 个包:4 个 Echo Request(ping 请求),4 个 Echo Reply(ping 响应)。选中任意一个包,在 Packet Details 面板里展开 Internet Control Message Protocol,你会看到:
- Type:8 表示请求,0 表示响应
- Code:0(正常)
- Sequence number:每个包递增,用来匹配请求和响应
嗯,这里要注意:如果只看到请求没有响应,说明网络不通或者防火墙拦截了 ICMP。我在某次机房巡检时就遇到过,ping 内网网关有去无回,最后发现是交换机 ACL 把 ICMP 给 drop 了。
知识体系:一张图看懂本章核心
下面这张图把 Wireshark 入门的三个核心环节串起来了。你可以把它当作操作地图。
避坑指南:新手最容易犯的三个错
- 抓包过滤器写错语法:比如把
host 8.8.8.8写成host=8.8.8.8,Wireshark 不会报错,但过滤器不生效。我建议你每次设完过滤器后,先点旁边的 Compile BPF 按钮验证一下。 - 忘记停止抓包:Wireshark 默认会把所有包缓存到内存里。如果你抓了一夜没停,第二天电脑可能直接卡死。我习惯在抓包前先设一个 Capture → Options → Stop capture automatically after…,比如 1000 个包或 10 分钟。
- 忽略时间戳精度:默认显示的是相对时间(从抓包开始算)。排查延迟问题时,记得右键点击时间列,选 Column Preferences → Field type → Absolute date and time,这样才能跟系统日志对得上。