3. Wireshark 快速上手:安装与界面介绍、首选项配置、捕获过滤器与显示过滤器的区别
好,咱们正式开始动手了。这一章我带你把 Wireshark 装好、跑起来,再把那些看着眼花缭乱的界面和按钮捋一遍。别急,我保证不会让你一上来就面对满屏的十六进制发懵。
很多新手拿到 Wireshark 第一反应是——这啥?这么多窗口、这么多颜色、这么多协议树。其实说白了,它就是个「网络显微镜」。你只要学会怎么调焦距、怎么看切片,剩下的就是经验问题了。
本章核心目标:装好工具、看懂界面、配好首选项、分清两种过滤器。完成这三步,你就能开始抓第一个包了。
3.1 安装与首次启动
Wireshark 的安装没什么玄学,但有几个坑我得提前告诉你。
3.1.1 下载与安装步骤
- 去官网下载:
https://www.wireshark.org/download.html。别去第三方站点,我见过有人下到带广告的捆绑包。 - 选择对应平台:Windows 选 64-bit Installer,macOS 选 Intel/Apple Silicon 对应版本,Linux 直接用包管理器。
- 安装时注意 Npcap:Windows 下安装向导会提示安装 Npcap,一定要勾选。这是抓包的底层驱动,不装它你什么都抓不到。
- 重启(Windows 用户):装完 Npcap 建议重启一次,确保驱动加载成功。
我曾经遇到过:有学员装完 Wireshark 发现「接口列表是空的」,折腾半天才发现是 Npcap 没装好。嗯,这个坑我替你们踩过了。
3.1.2 Linux/macOS 快速安装
# Ubuntu/Debian
sudo apt update && sudo apt install wireshark -y
# CentOS/RHEL
sudo yum install wireshark -y
# macOS (Homebrew)
brew install --cask wireshark
Linux 下安装后可能需要把当前用户加入 wireshark 组,否则普通用户没权限抓包:
sudo usermod -aG wireshark $USER
# 然后注销重新登录
3.2 界面介绍——别被吓到,其实就三块
第一次打开 Wireshark,你会看到这样一个界面。别慌,我把它拆成三块来讲。
你看,其实就五个区域。从上到下依次是:
- ① 菜单栏 + 工具栏:文件、编辑、视图、捕获、分析……所有功能入口都在这里。工具栏的快捷按钮我后面会讲。
- ② 过滤器输入框:左边是捕获过滤器,右边是显示过滤器。这两个东西长得像但完全不一样,3.4 节我会重点讲。
- ③ 包列表窗格:抓到包以后,每一行就是一个数据包。列名包括编号、时间、源地址、目的地址、协议、长度、信息。
- ④ 包详情窗格:选中某个包,这里会以树形结构展示协议的每一层。从物理层到应用层,一层层展开看。
- ⑤ 十六进制窗格:最原始的二进制数据,左边是偏移量,中间是十六进制,右边是对应的 ASCII 字符。
我个人习惯:刚上手时,先把包列表窗格拉大一点,因为大部分排错信息都在这一层。详情窗格和十六进制窗格可以缩小,等需要深挖协议细节时再展开。
3.3 首选项配置——让工具更顺手
Wireshark 默认配置能用,但不好用。我建议你花 5 分钟做几项调整,后面能省大量时间。
3.3.1 打开首选项
菜单栏 → Edit → Preferences(Windows/Linux)或 Wireshark → Preferences(macOS)。
3.3.2 我建议你改的几项
| 配置项 | 路径 | 推荐值 | 为什么改 |
|---|---|---|---|
| 时间显示格式 | Appearance → Columns | Seconds Since Beginning of Capture | 默认是「绝对时间」,排错时看相对时间差更方便 |
| 自动滚动 | Capture → Auto Scroll | 关闭 | 抓大流量时自动滚动会让你眼花,手动滚动更可控 |
| 解析器设置 | Protocols → HTTP | 勾选 Reassemble HTTP headers | 不勾选的话,HTTP 头部可能被拆成多个包,看着费劲 |
| 列显示 | Appearance → Columns | 添加 Delta Time 列 | 显示相邻包的时间差,排查延迟问题必备 |
| 颜色规则 | View → Coloring Rules | 保留默认即可,但可以自定义高亮特定协议 | 一眼看出哪些包是 TCP 重传、哪些是 HTTP 请求 |
注意:改完首选项后,记得点 Save,否则下次打开又恢复默认了。我刚开始用的时候就吃过这个亏,每次都要重新配一遍。
3.4 捕获过滤器 vs 显示过滤器——最容易被搞混的概念
好,这是本章的重头戏。很多新手甚至一些老手都搞不清这两个过滤器的区别。我一句话给你讲明白:
捕获过滤器:在抓包之前设置,决定「哪些包进内存」。
显示过滤器:在抓包之后设置,决定「哪些包显示在屏幕上」。
你想想看,如果你在抓一个千兆网口的流量,不设捕获过滤器的话,内存很快就会被撑爆。而显示过滤器只是把不相关的包隐藏了,数据还在内存里。
3.4.1 捕获过滤器(Capture Filter)
语法基于 BPF(Berkeley Packet Filter),也就是 tcpdump 那套东西。位置在工具栏左侧的输入框,旁边写着「Capture Filter」或者有个小漏斗图标。
常用示例:
# 只抓 192.168.1.100 的流量
host 192.168.1.100
# 只抓 HTTP 流量(TCP 80 端口)
port 80
# 只抓某个网段的流量
net 192.168.1.0/24
# 排除某个 IP
not host 10.0.0.1
# 组合条件:抓 80 端口且来自 192.168.1.x
port 80 and src net 192.168.1.0/24
避坑指南:捕获过滤器不支持协议名(比如 http),只能用端口号。想抓 HTTPS?写 port 443,别写 https,Wireshark 不认识。
3.4.2 显示过滤器(Display Filter)
语法基于 Wireshark 自己的 display filter language,功能强大得多。位置在工具栏右侧的输入框,旁边写着「Display Filter」或者有个放大镜图标。
常用示例:
# 只看 HTTP 请求
http.request
# 只看某个 IP 的流量
ip.addr == 192.168.1.100
# 只看 TCP 端口 443
tcp.port == 443
# 只看 DNS 查询
dns
# 组合条件:HTTP 且源 IP 是 192.168.1.100
http and ip.src == 192.168.1.100
# 排除 ARP 包
!arp
3.4.3 核心区别对比表
| 对比维度 | 捕获过滤器 | 显示过滤器 |
|---|---|---|
| 生效时机 | 抓包开始前 | 抓包完成后 |
| 语法基础 | BPF(tcpdump 风格) | Wireshark display filter language |
| 是否影响内存 | 是——不匹配的包根本不会进入内存 | 否——所有包都在内存,只是隐藏了 |
| 支持协议名 | 不支持(只能用端口) | 支持(如 http、dns、tcp) |
| 支持字段级过滤 | 有限(只能基于 IP、端口、协议类型) | 强大(如 http.request.method == "GET") |
| 典型场景 | 高流量环境、内存受限、只关心特定流量 | 事后分析、复杂条件组合、协议细节排查 |
我的经验:日常排错中,我 80% 的时间都在用显示过滤器。捕获过滤器只在两种情况下用:一是流量太大怕撑爆内存,二是远程抓包带宽有限。你想想看,显示过滤器可以随时改条件,而捕获过滤器一旦设错了就得重新抓,多麻烦。
3.4.4 一个容易犯的错
我曾经见过有人把显示过滤器的语法写进捕获过滤器输入框,结果 Wireshark 直接报错,一个包都抓不到。比如:
# 错误示例——这是显示过滤器的语法,不能用在捕获过滤器
http.request
# 正确写法——捕获过滤器要用 BPF 语法
port 80
记住:左边是 BPF,右边是 display filter。两个输入框挨着,但语法体系完全不同。
3.5 本章小结
到这,你已经完成了 Wireshark 的安装、界面认知、首选项配置,以及最核心的过滤器概念区分。说白了,你现在已经可以打开 Wireshark,选一个网卡,点一下「开始」,然后看着包哗哗地进来了。