Wireshark 入门:安装、界面与过滤器基础

好,咱们正式开始动手。这一章我带你把 Wireshark 装好,把界面认熟,再把两个最核心的过滤器搞清楚。说白了,后面所有抓包分析都离不开这些东西。我自己带团队的时候,新人来了第一件事就是过这一套,基础打不牢,后面分析 UDP 丢包就是瞎猜。

2.1 安装 Wireshark——别踩这些坑

Wireshark 的安装其实很简单,但有几个细节我吃过亏,得跟你提个醒。

2.1.1 下载与版本选择

去官网 wireshark.org 下载。别去第三方站点,我见过有人下到带广告的捆绑包。选稳定版就行,比如 4.x 系列。别追最新版,有时候新版本对旧网卡驱动支持不太好。

我的习惯:Windows 下我一般选 64-bit Installer。macOS 用 DMG 包。Linux 用户直接用包管理器——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",这样老工具也能用。

我曾经遇到过:有次给客户部署,忘了勾这个兼容模式,结果他们老旧的监控脚本全挂了。排查了半天才发现是 API 不匹配。嗯,这个选项别漏。

2.1.3 安装后验证

装完后打开 Wireshark,能看到网卡列表就说明成功了。随便选一个网卡点一下,如果能抓到包,那就 OK。

# Linux 下验证命令行版本
tshark --version
# 输出类似:
# TShark (Wireshark) 4.0.6

2.2 界面介绍——别被密密麻麻的窗口吓到

第一次打开 Wireshark,很多人会觉得眼花。其实就三大块,搞清楚了就不乱。

2.2.1 主界面布局

从上到下依次是:

  1. 菜单栏与工具栏——文件、捕获、分析等菜单,常用按钮都在这里。
  2. 显示过滤器栏——绿色背景的输入框,后面重点讲。
  3. 数据包列表区——抓到包的核心展示区,每一行就是一个包。
  4. 数据包详情区——选中某个包后,这里展示协议层级结构。
  5. 数据包字节区——十六进制和 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 载荷大小,异常长度可能是丢包信号
小技巧:Delta Time 列对 UDP 丢包分析特别有用。正常流中包间隔很均匀,一旦出现大于 2-3 倍平均间隔的 Gap,十有八九是丢了包。

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
避坑指南:我曾经在分析视频流丢包时,忘了排除 mDNS (端口 5353) 的广播包,结果抓了 10 万包,90% 都是局域网广播。后来我习惯在捕获过滤器里先加 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 本章知识体系总览

下面这张图把本章的核心逻辑串起来了。你保存下来,后面几章会反复用到这些概念。

Wireshark 入门知识体系 Wireshark 入门知识体系 1. 安装与验证 2. 界面三大区域 包列表区 包详情区 字节区 3. 过滤器 捕获过滤器 (BPF) 抓包前筛选 显示过滤器 抓包后精准搜索 核心目标:为 UDP 丢包分析打好工具基础

这张图你看明白了吗?从上到下就是咱们的操作流程:装好工具 → 熟悉界面 → 掌握两种过滤器。后面分析 UDP 丢包时,每一步都会用到这些基础。

2.6 本章小结

这一章我们干了三件事:把 Wireshark 装好、把界面认熟、把捕获过滤器和显示过滤器搞明白。你可能会觉得过滤器语法有点多,但别急,后面实战章节我会带着你反复用,用几次就记住了。