2. 抓包基础:选网卡、启停抓包、文件操作与过滤器快速上手

说实话,很多初学者拿到 Wireshark 第一反应就是——点开就抓。结果呢?抓了一堆乱七八糟的数据,自己都看懵了。我刚开始干网络那会儿也犯过这毛病,抓了半小时,发现全是跟自己设备无关的广播包。嗯,今天咱们就把这第一步走扎实。

2.1 选对网卡,抓包就成功了一半

Wireshark 启动后,你会看到一个网卡列表。别急着点,先看清楚。

核心原则:选那个 有实际流量、IP 地址正确 的网卡。别选虚拟机的虚拟网卡,除非你确实要抓虚拟机流量。

我个人习惯先看一眼网卡后面的 IP 地址。如果显示 0.0.0.0 或者 169.254.x.x,那说明这张网卡没拿到有效 IP,抓了也多半是废包。

网卡类型 典型用途 我踩过的坑
有线以太网卡 抓公司内网、服务器流量 有一次抓了半天没数据,结果是网线松了……
无线网卡 (Wi-Fi) 抓无线客户端流量 注意:默认只能抓到自己发的包,抓不到别人的
虚拟网卡 (VMware/VirtualBox) 抓虚拟机与宿主机通信 选错了会抓到宿主机本身的流量,很乱
Loopback (回环) 抓本机进程间通信 (127.0.0.1) Windows 下默认抓不到,需要装 Npcap 并勾选

小技巧:双击网卡名称,Wireshark 会直接开始抓包。但我建议你先单击选中,看看底部的「捕获过滤器」输入框,有时候这里能帮你省大事。

2.2 开始与停止抓包——别让数据淹死你

选好网卡,点击那个蓝色的「鲨鱼鳍」图标,或者直接双击网卡,抓包就开始了。你会看到数据包像流水一样刷屏。

这时候很多人会慌:「怎么这么多包?我看不过来啊!」

别急。抓包不是让你实时看完所有包的。你只需要关注几个关键操作:

  • 开始抓包:点击工具栏的 蓝色鲨鱼鳍 按钮,或菜单 捕获 → 开始。
  • 停止抓包:点击 红色方块 按钮,或菜单 捕获 → 停止。
  • 重新开始:点击 绿色鲨鱼鳍 按钮(带循环箭头),会清空当前数据重新抓。

警告:我曾经在客户现场抓包,忘了停止,结果抓了 2 个 G 的文件。打开的时候电脑直接卡死。记住:抓到你要的包就立刻停止,别让它一直跑。

还有一个实用操作:抓包过程中,你可以随时在显示过滤器里输入条件,Wireshark 会实时过滤显示结果,但后台仍然在继续抓。这个后面会细讲。

2.3 保存与打开抓包文件——你的证据要存好

抓完包,你得保存下来。Wireshark 默认格式是 .pcapng,这是新一代的抓包格式,支持多接口、注释等信息。老一点的工具可能用 .pcap,Wireshark 也兼容。

保存时我建议你养成两个习惯:

  1. 文件名要有意义。别叫 抓包1.pcapng,要叫 2025-04-10_用户反馈登录慢.pcapng。不然过两天你自己都忘了这是啥。
  2. 只保存需要的包。如果你只对某几个包感兴趣,先选中它们,然后 文件 → 导出特定分组。这样文件小,打开快。
操作 快捷键 说明
保存当前抓包 Ctrl + S 保存为 .pcapng 格式
另存为 Ctrl + Shift + S 可选择 .pcap 或 .pcapng
打开抓包文件 Ctrl + O 支持 .pcap、.pcapng 等
合并抓包文件 Ctrl + M 把多个抓包文件拼在一起

提示:打开别人发给你的抓包文件时,如果提示「未识别的协议」,别慌。可能是对方用了特殊端口,你手动 解码为 一下就行。这个后面章节会讲。

2.4 抓包过滤器快速上手——只抓你想要的

这是今天最核心的内容。抓包过滤器(Capture Filter)是在 抓包开始前 设置的,它决定了哪些包能进入 Wireshark 的「口袋」。设置对了,你的抓包文件会干净很多。

你想想看,如果你只想看 HTTP 流量,结果抓了一堆 ARP、DNS、SSDP 广播包,那不是给自己添乱吗?

抓包过滤器的语法用的是 BPF (Berkeley Packet Filter),说白了就是一套简单的表达式。我常用的几个给你列出来:

# 只抓 IP 地址为 192.168.1.1 的流量
host 192.168.1.1

# 只抓某个网段的流量
net 192.168.1.0/24

# 只抓 TCP 端口 80 的流量(HTTP)
tcp port 80

# 只抓 UDP 端口 53 的流量(DNS)
udp port 53

# 只抓某个 MAC 地址的流量
ether host 00:11:22:33:44:55

# 组合条件:抓 192.168.1.1 的 HTTP 流量
host 192.168.1.1 and tcp port 80

# 排除某个 IP
not host 10.0.0.1

重点:抓包过滤器是在 网卡选择界面 的「捕获过滤器」输入框里填的。不是在主界面的显示过滤器里填!这两个地方长得像,但作用完全不同。

我曾经有一次排查一个应用慢的问题,抓包时没设过滤器,结果抓了 10 万多个包。我花了两个小时才找到那关键的 3 个包。后来我学乖了:抓之前先想清楚我要看什么,然后设好过滤器。

下面这张图帮你理清抓包过滤器和显示过滤器的区别:

抓包过滤器 vs 显示过滤器 抓包过滤器 (Capture Filter) tcp port 80 作用:只让 HTTP 包进入 其他包直接丢弃 设置时机:抓包开始前 语法:BPF 显示过滤器 (Display Filter) http.request 作用:从已抓到的包中 筛选显示 HTTP 请求 设置时机:抓包开始后 语法:Wireshark 专用表达式 两者不冲突,可以组合使用:先过滤抓,再过滤看

你看,抓包过滤器就像门口的保安,只让符合条件的人进来。显示过滤器就像办公室里的秘书,从已经进来的人里再挑出你要见的。两者配合使用,效率最高。

2.5 实战小练习——抓一次你自己的 HTTP 请求

光说不练假把式。你现在就可以试一下:

  1. 打开 Wireshark,选择你的上网网卡。
  2. 在捕获过滤器里输入:tcp port 80
  3. 点击开始抓包。
  4. 打开浏览器,随便访问一个 HTTP 网站(比如 http://example.com)。
  5. 回到 Wireshark,点击停止抓包。
  6. 你会看到只有 TCP 80 端口的包,干净利落。

扩展一下:如果你访问的是 HTTPS 网站(443 端口),把过滤器改成 tcp port 443。但 HTTPS 的包内容是加密的,你只能看到握手过程,看不到具体数据。这个后面讲 SSL/TLS 时会细说。

嗯,今天的内容就到这儿。抓包基础打牢了,后面分析协议才能得心应手。记住:选对网卡、设好过滤器、及时保存,这三点做好了,你已经超过 80% 的初学者了。