Wireshark 入门:安装、界面与过滤器基础
好,咱们正式开始动手。这一章我带你把 Wireshark 装好,把界面认熟,再把两个最核心的过滤器搞清楚。说白了,后面所有抓包分析都离不开这些东西。我自己带团队的时候,新人来了第一件事就是过这一套,基础打不牢,后面分析 UDP 丢包就是瞎猜。
2.1 安装 Wireshark——别踩这些坑
Wireshark 的安装其实很简单,但有几个细节我吃过亏,得跟你提个醒。
2.1.1 下载与版本选择
去官网 wireshark.org 下载。别去第三方站点,我见过有人下到带广告的捆绑包。选稳定版就行,比如 4.x 系列。别追最新版,有时候新版本对旧网卡驱动支持不太好。
sudo apt install wireshark 或者 yum install wireshark。
2.1.2 安装过程中的关键选项
安装时有个坑——WinPcap 还是 Npcap?
Wireshark 早期依赖 WinPcap,但现在官方推荐 Npcap。我建议你选 Npcap,它支持更多现代网卡特性,而且对 Windows 10/11 兼容更好。安装 Npcap 时记得勾上 "Install in WinPcap API-compatible Mode",这样老工具也能用。
2.1.3 安装后验证
装完后打开 Wireshark,能看到网卡列表就说明成功了。随便选一个网卡点一下,如果能抓到包,那就 OK。
# Linux 下验证命令行版本
tshark --version
# 输出类似:
# TShark (Wireshark) 4.0.6
2.2 界面介绍——别被密密麻麻的窗口吓到
第一次打开 Wireshark,很多人会觉得眼花。其实就三大块,搞清楚了就不乱。
2.2.1 主界面布局
从上到下依次是:
- 菜单栏与工具栏——文件、捕获、分析等菜单,常用按钮都在这里。
- 显示过滤器栏——绿色背景的输入框,后面重点讲。
- 数据包列表区——抓到包的核心展示区,每一行就是一个包。
- 数据包详情区——选中某个包后,这里展示协议层级结构。
- 数据包字节区——十六进制和 ASCII 原始数据。
我个人习惯把详情区拉大一点,因为分析 UDP 丢包时,要看传输层和 IP 层的细节,窗口太小容易漏信息。
2.2.2 数据包列表区——你该看哪些列
默认列有 No.、Time、Source、Destination、Protocol、Length、Info。对于 UDP 分析,我建议你再加两列:
| 列名 | 添加方法 | 作用 |
|---|---|---|
| Delta Time | 右键列头 → Column Preferences → 添加 | 看相邻包的时间间隔,丢包往往伴随间隔突变 |
| UDP Length | 在 Info 列右键 → Apply as Column | 快速判断 UDP 载荷大小,异常长度可能是丢包信号 |
2.2.3 数据包详情区——协议树怎么看
点开一个 UDP 包,详情区会展开类似这样的结构:
Frame (物理层)
├── Ethernet II (数据链路层)
├── Internet Protocol Version 4 (网络层)
│ ├── Source IP
│ ├── Destination IP
│ └── Identification / Flags / Fragment Offset
└── User Datagram Protocol (传输层)
├── Source Port
├── Destination Port
├── Length
└── Checksum
分析 UDP 丢包时,我重点看 IP 层的 Identification 和 Fragment Offset,以及 UDP 层的 Checksum。为什么?因为 IP 分片和校验和错误是丢包的常见原因。
2.3 捕获过滤器——抓包前就筛掉垃圾
捕获过滤器在开始抓包之前设置。它的作用是让 Wireshark 只抓你关心的流量,减少干扰。说白了,就是给网卡装个筛子。
2.3.1 语法基础
捕获过滤器用的是 BPF (Berkeley Packet Filter) 语法。核心格式:
[protocol] [direction] [host/port/net] [value]
常用例子:
| 需求 | 过滤器表达式 |
|---|---|
| 只抓 UDP 包 | udp |
| 抓特定 IP 的 UDP 包 | udp host 192.168.1.100 |
| 抓特定端口的 UDP 包 | udp port 53 |
| 抓两个主机间的 UDP 流量 | udp host 192.168.1.1 and 192.168.1.2 |
| 排除某个端口 | udp and not port 5353 |
not port 5353 和 not port 1900,清净多了。
2.3.2 设置位置
在 Wireshark 主界面,点击 捕获 → 选项,或者直接点工具栏的齿轮图标。然后在输入框里写表达式,点开始即可。
2.4 显示过滤器——抓完包后的精准搜索
显示过滤器是抓包之后用的。它不删除任何包,只是把不符合条件的包隐藏起来。这个功能我一天能用上百次。
2.4.1 语法基础
显示过滤器的语法更丰富,支持协议字段级过滤。格式:
[protocol].[field] [operator] [value]
常用操作符:
| 操作符 | 含义 | 示例 |
|---|---|---|
== |
等于 | udp.port == 1234 |
!= |
不等于 | ip.src != 192.168.1.1 |
> / < |
大于 / 小于 | udp.length > 1000 |
contains |
包含字符串 | frame contains "error" |
&& / || |
与 / 或 | udp.port == 53 && ip.src == 8.8.8.8 |
2.4.2 针对 UDP 丢包分析的常用过滤器
我整理了几个实战中高频使用的:
- 只看 UDP 流量:
udp - 看特定会话:
ip.addr == 10.0.0.1 && udp.port == 5000 - 找大包(可能触发分片):
udp.length > 1400 - 找校验和错误:
udp.checksum.status == Bad - 找重传(虽然 UDP 本身不重传,但应用层可能):
tcp.analysis.retransmission(如果上层用了类 TCP 机制)
udp.checksum.status == Bad 扫一遍,如果有坏校验和,那丢包原因大概率是链路层比特错误。如果没有,再看 ip.fragments 相关字段,判断是否因为分片丢失。
2.4.3 显示过滤器的小技巧
Wireshark 的过滤器输入框有自动补全。你输入 udp. 后,它会弹出所有 UDP 相关字段。这个功能我经常用,记不住字段名时特别管用。
另外,输入框的背景色会告诉你语法对不对:
- 绿色——语法正确,放心用
- 红色——语法错误,检查一下
- 黄色——可能有歧义,但能运行
2.5 本章知识体系总览
下面这张图把本章的核心逻辑串起来了。你保存下来,后面几章会反复用到这些概念。
这张图你看明白了吗?从上到下就是咱们的操作流程:装好工具 → 熟悉界面 → 掌握两种过滤器。后面分析 UDP 丢包时,每一步都会用到这些基础。
2.6 本章小结
这一章我们干了三件事:把 Wireshark 装好、把界面认熟、把捕获过滤器和显示过滤器搞明白。你可能会觉得过滤器语法有点多,但别急,后面实战章节我会带着你反复用,用几次就记住了。