抓包基础与界面介绍

说实话,我第一次打开 Wireshark 的时候,看着满屏的网卡列表和跳动的数据包,脑子是懵的。但别担心,这东西就跟开车一样——先认识仪表盘,再踩油门。今天我就带你把这套界面摸透,顺便聊聊抓包的那些坑。

本章核心目标:学会启动/停止抓包、理解两种过滤器的区别、掌握保存和导出 pcap 文件。这些都是后续排查问题的基本功。

主界面布局:四个区域,各司其职

Wireshark 的主界面其实就四个大块。我习惯把它们叫做「四宫格」:

  • 顶部菜单栏 + 工具栏:抓包开始/停止、打开文件、保存等操作都在这里。快捷键记一下:Ctrl+E 开始/停止,Ctrl+K 打开捕获选项。
  • 过滤器栏:分两行。上面是显示过滤器,下面是捕获过滤器。别搞混了,后面我会细说。
  • 数据包列表区:抓到的包一行行列出来。默认显示编号、时间、源地址、目标地址、协议、长度、信息摘要。
  • 数据包详情区 + 原始字节区:选中一个包,下面会展开协议树。再往下是十六进制和 ASCII 的原始数据。

嗯,这里要注意:数据包列表区的列是可以自定义的。我个人习惯把「Delta Time」和「TCP 流序号」加进去,排查重传和乱序时特别有用。

开始与停止抓包

抓包其实就三步:选网卡 → 点开始 → 等数据。但选网卡这一步,我见过太多人翻车。

  1. 点击工具栏的蓝色鲨鱼鳍图标,或者按 Ctrl+K 打开捕获选项。
  2. 在「Interface」列表里勾选你要监听的网卡。如果你不确定用哪个,选那个流量最大的——通常是你的有线或 Wi-Fi 网卡。
  3. 点击「Start」开始抓包。红色按钮亮起,数据包开始滚动。
  4. 按 Ctrl+E 停止抓包。或者点工具栏的红色停止按钮。

我曾经踩过的坑:在笔记本上同时开着 Wi-Fi 和有线网卡,结果抓了半天发现抓的是 Wi-Fi 的流量,而我要分析的是有线网卡上的业务。所以抓包前一定确认网卡名称。Windows 下可以用 ipconfig 核对 IP 地址,Linux 下用 ip addr。

抓包过滤器 vs 显示过滤器

这是新手最容易混淆的地方。我直接给你一个对比表,看完就明白。

对比项 抓包过滤器 显示过滤器
作用时机 抓包之前设置,决定哪些包被捕获 抓包之后设置,决定哪些包被显示
语法 BPF(Berkeley Packet Filter)语法 Wireshark 自己的显示过滤语法
性能影响 减少捕获的数据量,节省磁盘和内存 只影响显示,不减少已捕获的数据
典型示例 host 192.168.1.1 ip.addr == 192.168.1.1
适用场景 高流量环境,只抓特定主机的包 已抓完包,需要从大量数据中筛选

说白了,抓包过滤器是「要不要这个包」,显示过滤器是「要不要看这个包」。我个人的习惯是:生产环境抓包时,先用抓包过滤器缩小范围,避免抓一堆没用的数据;分析阶段再用显示过滤器反复筛选。

小技巧:显示过滤器支持自动补全。你输入 tcp. 之后按 Tab,Wireshark 会列出所有 TCP 相关的字段。这个功能我每天都在用,比翻文档快多了。

保存与导出 pcap 文件

抓完包不保存,等于白干。Wireshark 支持多种保存方式,我重点说三种最常用的。

  • 保存全部:Ctrl+S,默认保存为 pcapng 格式。这是新版格式,支持多接口、注释等元数据。兼容性最好。
  • 导出特定包:Ctrl+Shift+X,或者菜单「File → Export Specified Packets」。你可以按显示过滤器、包范围、标记状态来导出。我排查问题时经常只导出有问题的 TCP 流,发给同事看。
  • 导出为旧版 pcap:有些老工具(比如 tcpdump)不认 pcapng,这时候需要导出为 pcap 格式。在保存对话框里选「Wireshark/tcpdump/... - pcap」即可。

注意:pcapng 文件默认包含接口描述、统计信息等额外数据。如果你要分享给第三方,建议用 pcap 格式,兼容性更好。我曾经因为发了个 pcapng 文件给客户,对方用老版本打不开,折腾了半天才搞清楚。

本章知识体系

下面这张图把本章的核心逻辑串起来了。从启动抓包到保存导出,每一步都有对应的操作和过滤器选择。

抓包基础与界面知识体系 抓包基础与界面知识体系 启动 Wireshark 选择网卡 设置抓包过滤器 开始抓包 使用显示过滤器 保存 / 导出 pcap 抓包过滤器 BPF 语法 减少捕获数据量 显示过滤器 Wireshark 过滤语法 只影响显示

你看,整个流程是线性的。但有两个关键分支:抓包过滤器在开始抓包前设置,显示过滤器在抓包过程中或抓完后使用。这两个搞清楚了,后面学协议解析就顺了。

我的习惯:抓包前先想清楚「我要看什么」。如果是排查 HTTP 问题,我会在抓包过滤器里写 port 80 or port 443;如果是看 ARP 欺骗,就写 arp。这样抓下来的文件小,分析起来也快。