admin 管理员组

文章数量: 1184232

注:本文为 “wireshark 使用” 教程合辑。
原文资料有点老,但原理是一样的。
图片清晰度受引文原图所限。
略作重排,如有内容异常,请看原文。


第 1 章 介绍

1.1 什么是 Wireshark

Wireshark 是一款网络包分析工具,主要功能为捕获网络数据报文并解析展示其结构与内容,可类比为监测网络传输的专业计量工具(功能优于基础计量设备)。

此前同类工具多存在价格高昂或私有授权的限制,Wireshark 的出现打破了这一局面,是目前广泛应用的开源网络分析软件。

1.1.1 主要应用

  • 网络管理员:排查网络故障
  • 网络安全工程师:检测安全隐患
  • 开发人员:验证协议执行逻辑
  • 学习者:理解网络协议工作原理

1.1.2 特性

  • 跨平台支持:UNIX、Windows 系统
  • 实时捕获:网络接口数据报文实时抓取
  • 协议解析:展示报文详细协议信息
  • 数据管理:支持捕获文件的保存与重新打开
  • 格式兼容:导入/导出多种捕获工具数据格式
  • 过滤与查找:多条件过滤、查找目标报文
  • 可视化展示:按规则高亮显示报文
  • 统计分析:生成多种网络统计报告
  • 扩展功能:支持协议扩展与插件集成

图 1.1 Wireshark 捕捉包并允许检视其内容

1.1.3 捕捉多种网络接口

支持以太网、无线局域网等多种网络接口,完整支持列表参考:
https://wiki.wireshark/CaptureSetup/NetworkMedia

1.1.4 支持多种其它程序捕捉的文件

兼容多种网络分析软件的捕获文件格式,具体可查阅官方技术文档。

1.1.5 支持多格式输出

可将捕获数据导出为其他捕获工具支持的格式,具体可查阅官方技术文档。

1.1.6 对多种协议解码提供支持

支持数百种网络协议的解码(又称“协议解析”),具体支持列表参考官方协议文档。

1.1.7 开源软件

遵循 GNU 通用公共许可证(GPL 协议),可免费在任意设备上使用,源代码完全开放。支持用户自定义扩展协议或集成插件,相关应用已广泛推广。

1.1.8 Wireshark 不能做的事

  • 非入侵检测系统:不主动告警网络异常操作,但可通过捕获数据辅助分析异常事件 [3]。
  • 不参与网络事务处理:仅被动监测网络数据,不主动发送报文(名称解析功能可禁用)。

1.2 系统需求

以下为 Wireshark 安装运行的软硬件环境要求…

1.2.1 一般说明

  • 以下为最低配置,适用于中等负载网络,高负载场景需更高配置 [4]。
  • 高负载网络捕获可能快速占用磁盘空间(例:100 Mbit/s 全双工以太网捕获速率达 750 Mbytes/min),需配备高性能 CPU、大容量内存及充足磁盘空间。
  • 内存不足会导致程序异常终止,解决方案参考:
    https://wiki.wireshark/KnownBugs/OutOfMemory
  • 多处理器仅在“实时更新包列表”模式下(捕获与显示分线程执行)可能提升性能,多数操作(如过滤)为单线程执行。

1.2.2 Microsoft Windows

操作系统

Windows 2000/XP(各版本)/Server 2003/Vista(推荐 XP)。

硬件
  • 处理器:32 位奔腾级(≥400 MHz);64 位需 WoW64 仿真。
  • 内存:≥128 MB(推荐 ≥256 MB)。
  • 磁盘:≥75 MB 可用空间(保存捕获文件需额外空间)。
  • 显示:≥800×600 分辨率、≥16 bit 色深(256 色设备需选“legacy GTK1”)。
网络接口
  • 以太网:支持所有 Windows 兼容网卡。
  • 无线局域网卡:参考 MicroLogix 支持列表(部分不支持 802.11 包头及无数据帧)。
  • 其他接口:
  • https://wiki.wireshark/CaptureSetup/NetworkMedia
补充说明
  • 旧版 Windows(95/98/ME/NT 4.0)不再支持,最后兼容版本及下载链接:

  • Windows 95/98/ME:Ethereal 0.99.0(需 WinPCap 3.1)
    https://ethereal/download.html

  • Windows NT 4.0:Wireshark 0.99.4(含 WinPCap 3.1)
    https://prdownloads.sourceforge/wireshark/wireshark-setup-0.99.4.exe

  • Windows CE 及嵌入式版本不支持。

  • 64 位系统需 WinPCap 4.0+ 及 WoW64 仿真。

  • 多显示器配置可能存在兼容问题。

1.2.3 Unix/Linux

支持多个 UNIX 类系统,硬件要求参考 Windows 平台,官方提供二进制包的平台包括:
Apple Mac OS X、Debian GNU/Linux、FreeBSD、NetBSD、OpenPKG、Red Hat Fedora/Enterprise Linux、rPath Linux、Sun Solaris(i386/Sparc)。

无二进制包的平台可下载源代码编译,编译经验可邮件反馈至 wireshark-dev [AT] wireshark。

1.3 从哪里可以得到 Wireshark

最新版本下载:
https://www.wireshark/download.html

版本更新周期:4-8 周,订阅 Wireshark-announce 邮件列表可获取发布通知(详见 1.6.4 节)。

1.4 Wireshark 简史 [6]

1997 年:Gerald Combs 为排查网络问题及学习网络知识,开发 Ethereal(Wireshark 前身)。
1998 年:Ethereal 0.2.0 发布,Gilbert Ramirez、Guy Harris、Richard Sharpe 等先后加入开发。
2006 年:项目迁移并更名为 Wireshark。

1.5 Wireshark 开发维护

  • 开发主体:最初由 Gerald Combs 开发,现由 Wireshark 团队维护(松散组织,负责 Bug 修复与功能增强)。

  • 贡献机制:开源协议(GPL)允许用户修改代码,反馈改进可获得社区认可、代码优化及长期维护支持。

  • 资源获取:源代码及二进制包下载:
    https://www.wireshark/download.html

1.6 汇报问题和获得帮助

1.6.1 网站

官方网站:提供全面的软件相关信息。
https://www.wireshark

1.6.2 百科全书

Wireshark Wiki:包含交换网络捕获、协议参考等扩展内容,支持用户在线编辑贡献。
https://wiki.wireshark

1.6.3 FAQ

常见问题解答,咨询前建议优先查阅,避免重复提问。

1.6.4 邮件列表

  • Wireshark-users:用户安装与使用咨询。

  • wireshark-announce:版本发布通知(4-8 周/次)。

  • wireshark-dev:开发相关交流。

  • 订阅与存档:支持邮件搜索查询历史问题。
    https://www.wireshark

1.6.5 报告问题

  • 前提:确认安装最新版本。
  • 需提供信息:
  1. 软件及依赖库版本(wireshark –v 命令获取)。
  2. 操作系统平台详情。
  3. 问题详细描述(操作步骤、触发条件)。
  4. 完整错误/警告文本(避免模糊表述)。
  • 注意事项:
  • 不发送 >100 KB 文件及机密信息(如密码)。
  • 大文件可应需求单独发送。

1.6.6 在 UNIX/Linux 平台追踪软件错误

执行以下命令生成调试文件(需安装 GDB),并发送至 wireshark-dev [AT] wireshark:

$ gdb `whereis wireshark | cut -f2 -d: | cut -d' ' -f2` core >&bt.txt
backtrace
^D
$

注:第一行命令需严格保留反引号格式。

1.6.7 在 Windows 平台追踪软件错误

无符号文件(.pdb),无法生成有效调试文件,按 1.6.5 节方式提交问题报告即可。

[3] 译者注:Wireshark 不主动识别入侵行为,但可通过捕获的网络包分析异常痕迹。
[4] 译者注:最低配置为经验值,适用于多数场景,非绝对标准。
[5] 译者注:多处理器仅在捕获与显示分线程时提升性能,操作无增益。
[6] 本节涉及技术术语,已保持翻译准确性。
[7] 译者注:模糊表述无法支撑问题定位,需提供完整错误信息。
[8] 译者注:反引号用于命令替换,需严格按格式输入。

第 2 章 编译/安装 Wireshark

2.1 须知

使用 Wireshark 需先完成以下任一操作:

  • 获取适配操作系统的二进制安装包并安装;
  • 下载源代码并编译生成适配本地系统的安装文件。

目前仅有少数 Linux 发行版预装 Wireshark,且多为旧版本;UNIX 及 Windows 系统均未预装该软件。因此,需自行获取最新版本并完成安装。

本章将详细说明 Wireshark 源代码与二进制包的获取方式,以及编译、安装的完整流程。通常需遵循以下步骤:

  1. 下载所需文件(源代码或二进制发行包);
  2. 若下载源代码,需将其编译为二进制包(编译过程可能需整合依赖包);
  3. 将二进制包安装至目标路径。

2.2 获得源文件与二进制包

Wireshark 源代码及二进制发行包均可通过官方网站获取:https://www.wireshark

选择对应下载链接后,优先选择地理距离较近的镜像站点以提升下载速度。

下载所有依赖文件编译源代码时,除 Wireshark 源文件外,通常需额外下载多个依赖包,具体要求将在后续章节说明。
注意若网站提供多个二进制发行版,需选择与本地平台匹配的版本;部分版本由用户自行编译分享,需确认兼容性。

基于兼容性与版本时效性考虑,自行编译源代码可能是更便捷的选择。

2.3 在 UNIX 下安装之前

编译或安装二进制包前,需确保系统已安装以下依赖包:

  1. GTK+(The GIMP Tool Kit)及 Glib 下载
    https://www.gtk
  2. Libpcap(Wireshark 捕获网络包的依赖库)下载
    https://www.tcpdump

部分操作系统支持通过 RPM 等包管理工具安装二进制依赖包,若不支持则需下载源代码自行编译。

例 2.1 从源文件编译 GTK+

gzip -dc gtk+-1.2.10.tar.gz | tar xvf -
./configure
make install
注意需将命令中的版本号替换为实际下载的 GTK+ 版本;
解压后若目录名称变更,需同步修改命令中的路径(tar xvf 命令执行后会显示实际解压目录)。
注意Linux 或安装了 GNU tar 的系统,可简化命令为 tar zxvf gtk+-1.2.10.tar.gz
部分 UNIX 系统支持使用 gunzip –cgzcat 替代 gzip –dc
注意若在 Windows 环境下下载 GTK+ 源文件,文件名可能变更为 gtk+-1_2_8_tar.gz 格式。

若编译过程中出现错误,可参考 GTK+ 官方网站的故障排查文档。

例 2.2 编译、安装 Libpcap

gzip -dc libpcap-0.9.4.tar.Z | tar xvf -
cd libpcap-0.9.4
./configure
make
make install
注意需根据下载的 Libpcap 版本修改目录名称(tar xvf 命令执行后会显示实际解压目录)。

包管理工具安装依赖(推荐)

  • RedHat 6.x 及衍生发行版(如 Mandrake):可通过 RPM 包快速安装依赖,示例命令如下:
cd /mnt/cdrom/RedHat/RPMS
rpm -ivh glib-1.2.6-3.i386.rpm
rpm -ivh glib-devel-1.2.6-3.i386.rpm
rpm -ivh gtk+-1.2.6-7.i386.rpm
rpm -ivh gtk+-devel-1.2.6-7.i386.rpm
rpm -ivh libpcap-0.4-19.i386.rpm
注意RedHat 6.2 之后的版本,依赖包名称可能变更,需使用与系统版本匹配的 RPM 包。
  • Debian 系统:可通过 apt-get 自动安装依赖,命令如下:
    apt-get install wireshark-dev
    

2.4 在 UNIX 下编译 Wireshark

遵循以下步骤编译 Wireshark 源代码:

  1. 解压源文件:
  • Linux 系统:
    tar zxvf wireshark-0.99.5.tar.gz
    
  • UNIX 系统:
    gzip -d wireshark-0.99.5.tar.gz
    tar xvf wireshark-0.99.5.tar
    

| 注意 | 也可使用管道命令 gzip –dc wireshark-0.99.5.tar.gz | tar xvf - 完成解压 [9];若在 Windows 环境下下载,文件名中的点可能替换为下划线,需同步修改命令中的文件名。 |
| :— | :-- |

  1. 进入源代码目录:

    cd wireshark-0.99.5
    
  2. 配置编译参数:

    ./configure
    

若配置过程报错,需排查依赖缺失或版本不兼容问题,修复后重新执行配置(故障排查详见 2.6 节)。

  1. 编译源代码:

    make
    
  2. 安装二进制文件:

    make install
    

安装完成后,输入 wireshark 命令即可启动程序。

2.5 在 UNIX 下安装二进制包

UNIX 类系统的二进制包安装方式因发行版而异(如 AIX 用 smit、Tru64 UNIX 用 setld),以下为常见发行版的安装方法:

2.5.1 Linux 或类 Linux 系统安装 RPM 包

rpm -ivh wireshark-0.99.5.i386.rpm

若提示缺少依赖,需先安装 2.3 节提及的依赖包后再重试。

2.5.2 Debian 系统安装 Deb 包

apt-get install wireshark

apt-get 会自动处理依赖关系并完成安装。

2.5.3 Gentoo Linux 系统通过 Portage 安装

USE="adns gtk ipv6 portaudio snmp ssl kerberos threads selinux" emerge wireshark

该命令会安装 Wireshark 及所有推荐的附加组件。

2.5.4 FreeBSD 系统安装包

pkg_add -r wireshark

pkg_add 会自动下载并安装 Wireshark 及依赖。

2.6 解决 UNIX 下安装过程中的问题 [10]

配置阶段(configure)错误

  • 排查方法:查看源代码目录下的 config.log 文件,关键错误信息通常位于文件末尾;
  • 常见原因:缺少 GTK+ 或 Libpcap,或版本低于最低要求;
  • 解决方案:安装对应依赖包或升级至兼容版本。

编译链接耗时过长或失败

  • 常见原因:系统预装的 sed 命令版本过旧(如 Solaris 系统),导致 libtool 脚本执行异常;
  • 解决方案:下载并安装最新版 sed
    https://directory.fsf/GNU/sed.html

其他未解决问题

可向 wireshark-dev [AT] wireshark 发送邮件求助,需附上 config.log 文件、make 命令的输出日志等关键信息,以便开发者定位问题。

2.7 在 Windows 下编译源

Windows 平台推荐直接使用二进制包安装(详见 2.8 节)。若需编译源代码(仅限开发场景),请参考官方开发文档,获取最新编译指南。
https://wiki.wireshark/Development

2.8 在 Windows 下安装 Wireshark

2.8.1 安装 Wireshark

Wireshark 二进制安装包名称格式为 Wireshark-setup-x.y.z.exe,内置最新版 WinPcap,无需单独下载。安装步骤如下:

  1. 下载安装包:
    https://www.wireshark/download.html#releases
  2. 双击执行安装包,按向导完成安装,期间可选择需安装的组件(建议保持默认配置,不了解功能时请勿随意修改)。
组件选择 [11]
  1. 程序(GTK1 与 GTK2 接口不可同时安装):
  • Wireshark GTK1:GUI 网络分析工具,兼容 256 色(8bit)显示模式,但部分高级统计功能不可用;
  • Wireshark GTK2:GUI 网络分析工具(推荐),功能更完整;
  • GTK-Wimp:GTK2 窗口模拟组件,使界面风格贴近原生 Windows 程序(推荐);
  • TShark:命令行网络分析工具。
  1. 插件/扩展(增强分析能力):
  • Dissector Plugins:协议解析插件;
  • Tree Statistics Plugins:树状统计插件;
  • Mate:元分析与追踪引擎(实验性),可配置显示过滤规则,参考:https://wiki.wireshark/Mate;
  • SNMP MIBs:SNMP 协议详细解析支持。
  1. 工具集(命令行辅助工具):
  • Editcap:读取捕获文件并将部分或全部报文写入新文件(支持文件拆分、合并);
  • Text2Pcap:将 ASCII 十六进制 dump 数据转换为 libpcap 格式捕获文件;
  • Mergecap:合并多个捕获文件为单个文件;
  • Capinfos:显示捕获文件的详细信息(如报文数量、捕获时间等)。
  1. 其他组件:
  • User’s Guide:本地用户手册,未安装时帮助菜单将跳转至在线文档。
附加任务配置
  • Start Menu Shortcuts:创建开始菜单快捷方式;
  • Desktop Icon:创建桌面图标;
  • Quick Launch Icon:创建快速启动栏图标;
  • Associate file extensions to Wireshark:将捕获文件格式关联至 Wireshark(双击文件默认用 Wireshark 打开)。
WinPcap 安装配置

Wireshark 依赖 WinPcap 实现网络包捕获,安装向导会提示相关配置:

  • 若系统未安装 WinPcap,需勾选“Install WinPcap x.x”(默认勾选);
  • “Start WinPcap service ‘NPF’ at startup”:勾选后开机自动启动 WinPcap 服务,非管理员用户也可执行捕获操作;
  • WinPcap 相关信息:
  • Wireshark 官方文档:
    https://wiki.wireshark/WinPcap
  • WinPcap 官方网站:
    https://www.winpcap
命令行安装选项

可通过命令行参数定制安装流程,常用参数如下:

  • /NCRC:禁用 CRC 校验;
  • /S:静默安装(无界面),静默模式下不会自动安装 WinPcap
  • /desktopicon=yes/no:是否创建桌面图标(适用于静默模式);
  • /quicklaunchicon=yes/no:是否创建快速启动栏图标(适用于静默模式);
  • /D=<路径>:指定安装目录(需作为最后一个参数,路径含空格需用引号包裹)。

例 2.5 命令行安装示例

wireshark-setup-0.99.5.exe /NCRC /S /desktopicon=yes /quicklaunchicon=no /D="C:\Program Files\Foo"

2.8.2 手动安装 WinPcap

注意常规场景无需手动安装 WinPcap,Wireshark 安装向导会自动处理。
仅当需测试非内置版本的 WinPcap(如 alpha/beta 版)时,才需手动操作。

手动安装 WinPcap 可通过以下渠道下载安装包:

  • 官方网站:
    https://www.winpcap
  • 镜像站点:
    https://www.winpcap/misc/mirrors.htm

下载的安装包名称通常含“auto-installer”,支持在 NT4.0/2000/XP/Vista 系统安装。

2.8.3 更新 Wireshark

Wireshark 版本更新周期约 8-12 周,订阅 Wireshark-announce 邮件列表可获取更新通知(详见 1.6.4 节)。更新流程:

  1. 下载最新版本安装包;
  2. 双击执行安装包,按向导完成安装(无需卸载旧版本,安装过程会自动覆盖);
  3. 更新后无需重启系统,原有配置会保留。

2.8.4 更新 WinPcap

WinPcap 更新频率约为每年 1 次,可通过其官方网站获取新版本通知。更新注意事项:

  • 安装新版本前需卸载旧版本(部分新版本安装包会自动卸载旧版);
  • 安装完成后需重启系统生效。
警告卸载旧版 WinPcap 后,若未及时安装新版,Wireshark 将无法执行捕获操作。

2.8.5 卸载 Wireshark

通过“控制面板→添加/删除程序”,选择“Wireshark”并执行卸载。默认卸载选项:

  • 移除组件;
  • 保留个人配置文件及 WinPcap(避免影响其他依赖 WinPcap 的程序)。

2.8.6 卸载 WinPcap

通过“控制面板→添加/删除程序”,选择“WinPcap”并执行卸载。卸载后需重启系统,且 Wireshark 将无法再捕获网络包(仅可打开已保存的捕获文件)。

[9] 译者注:“管道”为计算机术语,指将前一个命令的输出作为后一个命令的输入,此处翻译准确。

[10] 译者注:UNIX/Linux 下安装需依赖特定系统库,流程为“安装依赖→解压源码→配置→编译→安装”;二进制包安装更简便,推荐优先使用包管理工具。

[11] 译者注:组件名称为软件专有术语,保留原文以确保准确性。

第 3 章 用户界面

3.1 须知

完成 Wireshark 安装后,本章将系统介绍以下内容:

  • 用户界面的操作方法;
  • 网络包的捕捉、查看与过滤流程;
  • 其他功能的使用方式。

3.2 启动 Wireshark

可通过 Shell 命令行或系统资源管理器启动 Wireshark。

提示启动时可指定命令行参数,详见第 9.2 节 “从命令行启动 Wireshark”。
注意后文截图基于多平台及多 GUI 工具包(GTK1.x/2.x)制作,界面样式可能与实际运行效果存在差异,但功能完全一致,不影响理解与使用。

3.3 主窗口

Wireshark 主窗口(图 3.1)是操作界面,打开捕捉文件后默认显示以下组成部分:

图 3.1 主窗口界面

  1. 菜单(见 3.4 节):提供所有功能的入口;
  2. 主工具栏(见 3.13 节):快速访问常用功能;
  3. 过滤工具栏(见 3.14 节):配置和应用显示过滤规则(详见 6.3 节 “浏览时进行过滤”);
  4. 包列表面板(见 3.15 节):显示每个包的摘要信息,选中后可在其他面板查看详情;
  5. 包详情面板(见 3.16 节):展示选中包的协议层级与字段详情;
  6. 包字节面板(见 3.17 节):以十六进制和 ASCII 格式显示选中包的数据,与包详情面板字段联动高亮;
  7. 状态栏(见 3.18 节):显示程序状态及捕捉数据统计信息。
注意主窗口的面板布局、显示选项可通过首选项自定义,详见第 9.5 节 “首选项”。

3.3.1 导航快捷键

包列表面板与包详情面板支持以下快捷键操作,提升浏览效率:

快捷键描述
Tab/Shift+Tab在不同面板或控件间切换焦点
Up/Down在当前面板中向上/向下选择包或协议字段
Ctrl+Up/Ctrl+Down/F7/F8无论焦点在哪个面板,直接向上/向下切换包
Left/Right在包详情面板中折叠/展开选中的协议树分支
Backspace在包详情面板中返回当前节点的父节点
Return/Enter在包详情面板中固定选中的协议树节点

此外,在主窗口直接输入字符,会自动填充到过滤工具栏的输入框中。

3.4 主菜单

主菜单位于窗口顶部,包含 8 个菜单项,支持鼠标点击或快捷键操作(快捷键标注于菜单项右侧)。

菜单项功能概述详情章节
File捕捉文件的打开、保存、合并、导出、打印及程序退出3.5 节 “File 菜单”
Edit包查找、标记、时间参考设置及程序首选项配置3.6 节 “Edit 菜单”
View界面布局、显示格式(时间、颜色、字体)等可视化设置3.7 节 “View 菜单”
Go包的快速定位(跳转至指定包、首尾包、历史浏览记录等)3.8 节 “Go 菜单”
Capture网络接口选择、捕捉参数配置、捕捉启停及捕捉过滤器管理3.9 节 “Capture 菜单”
Analyze显示过滤配置、协议分析开关、TCP 流追踪等深度分析功能3.10 节 “Analyze 菜单”
Statistics生成捕捉数据的摘要、协议层级、会话、端点等统计报告3.11 节 “Statistics 菜单”
Help帮助文档、支持协议列表、在线资源及软件版本信息3.12 节 “Help 菜单”

3.5 “File” 菜单

File 菜单专注于捕捉文件的管理操作,具体功能如下:

图 3.3 File 菜单

菜单项快捷键描述
Open…Ctrl+O打开捕捉文件对话框,载入文件进行浏览(详见 5.2.1 节 “打开捕捉文件对话框”)
Open Recent-显示最近打开的文件列表,快速重新载入
Merge-打开合并对话框,将选中文件与当前打开文件合并(详见 5.4 节 “合并捕捉文件”)
CloseCtrl+W关闭当前文件,未保存时会提示是否保存(可通过首选项关闭提示)
SaveCtrl+S保存当前文件,未指定文件名时弹出保存对话框(详见 5.3.1 节);动态捕捉时不可用,需停止后保存
Save AsShift+Ctrl+S将当前文件另存为其他路径或格式(详见 5.3.1 节)
File Set>List Files-显示当前文件集合的列表(详见 5.5 节 “文件集合”)
File Set>Next File-跳转到文件集合中的下一个文件,无下一个时灰色不可选
File Set>Previous File-跳转到文件集合中的上一个文件,无上一个时灰色不可选
Export>as “Plain Text” File…-将全部或部分包导出为 ASCII 文本格式(详见 5.6.1 节)
Export>as “PostScript” File…-将全部或部分包导出为 PostScript 格式(详见 5.6.2 节)
Export>as “CSV” File…-导出包摘要为 CSV 格式(支持电子表格打开,详见 5.6.3 节)
Export>as “PSML” File…-导出全部或部分包为 PSML(包摘要标记语言)XML 格式(详见 5.6.4 节)
Export>as “PDML” File…-导出全部或部分包为 PDML(包详情标记语言)XML 格式(详见 5.6.5 节)
Export>Selected Packet Bytes…-导出包字节面板中选中的二进制数据(详见 5.6.6 节)
PrintCtrl+P打印全部或部分包,弹出打印配置对话框(详见 5.7 节 “打印包”)
QuitCtrl+Q退出 Wireshark,未保存文件时提示是否保存

3.6 “Edit” 菜单

Edit 菜单提供包操作及程序配置相关功能:

图 3.4 Edit 菜单

菜单项快捷键描述
Copy>As FilterShift+Ctrl+C将包详情面板中选中的字段转换为显示过滤规则,复制到剪贴板
Find Packet…Ctrl+F打开查找对话框,按条件搜索包(详见相关章节)
Find NextCtrl+N查找下一个符合当前搜索条件的包
Find PreviousCtrl+B查找上一个符合当前搜索条件的包
Mark Packet(toggle)Ctrl+M标记或取消标记当前选中的包(详见 6.9 节 “标记包”)
Find Next MarkShift+Ctrl+N跳转到下一个被标记的包
Find Previous MarkShift+Ctrl+B跳转到上一个被标记的包
Mark All Packets-标记当前文件中的所有包
Unmark All Packets-取消所有包的标记
Set Time Reference(toggle)Ctrl+T将当前包的时间设为参考时间(详见 6.10.1 节 “包参考时间”)
Find Next Reference-跳转到下一个时间参考包
Find Previous Reference-跳转到上一个时间参考包
Preferences…Shift+Ctrl+P打开首选项对话框,自定义程序各项参数(详见 9.5 节 “首选项”)

3.7 “View” 菜单

View 菜单用于配置界面显示效果,包括面板显示/隐藏、时间格式、颜色规则等:

图 3.5 View 菜单

菜单项快捷键描述
Main Toolbar/Filter Toolbar/Statusbar-分别控制主工具栏、过滤工具栏、状态栏的显示与隐藏
Packet List/Packet Details/Packet Bytes-分别控制三个面板的显示与隐藏
Time Display Format 子菜单-配置时间戳显示格式(互斥选项),详见 6.10 节 “时间显示格式及参考时间”
Time Display Format>Automatic-根据文件格式精度自动适配时间戳显示
Time Display Format>Seconds 及子选项-设置时间戳精度(1 秒、0.1 秒、微秒等)
Name Resolution 子菜单-配置名称解析功能(MAC 层、网络层、传输层地址解析,详见 7.6 节 “名称解析”)
Colorize Packet List-切换包列表的彩色显示模式(彩色显示可能降低文件加载速度)
Auto Scroll in Live Capture-实时捕捉时自动滚动包列表,始终显示最新包
Zoom In/Zoom Out/Normal SizeCtrl++/Ctrl±/Ctrl+=增大、缩小、恢复默认字体大小
Resize All Columns-自动调整包列表列宽,确保内容完全显示
Expand Subtrees/Expand All/Collapse All-展开选中包的子分支、展开所有分支、折叠所有分支
Coloring Rules…-打开颜色规则对话框,自定义包的彩色显示规则(详见 9.3 节 “包色彩显示设置”)
Show Packet in New Window-在新窗口单独显示当前选中的包(仅包含详情和字节面板)
ReloadCtrl+R重新载入当前捕捉文件

3.8 “Go” 菜单

Go 菜单提供包的快速定位功能,提升浏览效率:

图 3.6 Go 菜单

菜单项快捷键描述
Back/ForwardAlt+Left/Alt+Right跳转至历史浏览记录中的上一个/下一个包
Go to PacketCtrl+G打开对话框,输入包序号后跳转至指定包(详见 6.8 节 “到指定的包”)
Go to Corresponding Packet-跳转到当前包的应答包(无应答包时灰色不可选)
Previous Packet/Next PacketCtrl+Up/Ctrl+Down跳转到包列表中的上一个/下一个包
First Packet/Last Packet-跳转到包列表中的第一个/最后一个包

3.9 “Capture” 菜单

Capture 菜单专注于网络包捕捉相关操作:

图 3.7 Capture 菜单

菜单项快捷键描述
Interface…-打开接口选择对话框,选择用于捕捉的网络接口(详见 4.4 节 “捕捉接口对话框”)
Options…Ctrl+K打开捕捉选项对话框,配置捕捉参数并启动捕捉(详见 4.5 节 “捕捉选项对话框”)
Start-按上次保存的参数立即启动捕捉
StopCtrl+E停止当前正在进行的捕捉(详见 4.9.1 节 “停止捕捉”)
Restart-停止当前捕捉并按相同参数重新启动
Capture Filters…-打开捕捉过滤器对话框,创建、编辑、保存过滤器(详见 6.6 节 “定义,保存过滤器”)

3.10 “Analyze” 菜单

Analyze 菜单提供协议分析及过滤配置功能:

图 3.8 Analyze 菜单

菜单项快捷键描述
Display Filters…-打开显示过滤器对话框,创建、编辑、保存过滤器(详见 6.6 节 “定义,保存过滤器”)
Apply as Filter 子菜单-将选中的协议字段直接应用为显示过滤规则
Prepare a Filter 子菜单-将选中的协议字段填充到过滤工具栏,不立即应用
Firewall ACL Rules-根据选中包生成多种防火墙的 ACL 规则(支持 Cisco IOS、iptables 等)
Enable Protocols…Shift+Ctrl+R打开协议启用对话框,选择需要分析的协议(详见 9.4.1 节 “Enable Protocols 对话框”)
Follow TCP Stream-追踪并显示选中 TCP 流的完整数据(详见相关协议分析章节)

3.11 “Statistics” 菜单

Statistics 菜单用于生成捕捉数据的各类统计报告,支持协议、会话、性能等多维度分析:

图 3.9 Statistics 菜单

菜单项快捷键描述
Summary-显示捕捉数据摘要(包数量、捕捉时间、协议分布等,详见 8.2 节 “摘要窗口”)
Protocol Hierarchy-显示协议层级统计(各层协议占比,详见 8.3 节 “Protocol Hierarchy 窗口”)
Conversations-显示通信会话列表(两端设备间的连接,详见相关章节)
EndPoints-显示通信端点列表(所有参与通信的地址,详见 8.4.2 节 “Endpoints 窗口”)
IO Graphs-生成自定义 IO 图表(如包数量-时间曲线,详见 8.6 节 “IO Graphs 窗口”)
Conversation List/Endpoint List-分别显示组合式会话列表、组合式端点列表(详见 8.5.3 节、8.4.3 节)
Service Response Time-显示服务响应时间统计(请求与应答的时间间隔,详见 8.7 节 “服务相应时间”)
协议专用统计项(HTTP/SIP/RTP 等)-针对特定协议的统计分析(详见 8.8 节 “协议指定统计窗口”)
VOIP Calls…-显示 VoIP 呼叫统计及分析结果

3.12 “Help” 菜单

Help 菜单提供各类辅助资源,帮助用户快速上手及解决问题:

图 3.10 Help 菜单

菜单项快捷键描述
ContentsF1打开本地帮助文档
Supported Protocols-显示 Wireshark 支持的协议及工具列表
Manual Pages 子菜单-打开本地安装的手册页面(通过浏览器访问)
Wireshark Online 子菜单-访问 Wireshark 官方网站、论坛、文档等在线资源
About Wireshark-显示软件版本、插件信息、安装目录等详情
注意部分版本可能因浏览器配置问题无法打开在线资源,可通过首选项检查浏览器设置;若不支持浏览器调用,相关菜单可能隐藏。

3.13 “Main” 工具栏

主工具栏提供常用功能的快速访问入口,功能与对应菜单项完全一致。未启用的功能(如未打开文件时的“保存”)会显示为灰色不可选。

图 3.11 主工具栏

工具栏项对应菜单项描述
接口Capture/Interfaces…打开网络接口选择对话框(详见 4.3 节 “开始捕捉”)
选项Capture/Options…打开捕捉参数配置对话框(详见 4.4 节 “捕捉接口对话框”)
Start/Stop/RestartCapture/Start/Stop/Restart捕捉的启动、停止、重启操作
OpenFile/Open…打开捕捉文件(详见 5.2.1 节 “打开捕捉文件对话框”)
Save AsFile/Save As…另存当前文件(详见 5.3.1 节)
CloseFile/Close关闭当前文件
ReloadView/Reload重新载入当前文件
PrintFile/Print…打印捕捉文件(详见 5.7 节 “打印包”)
Find PacketEdit/Find Packet…打开包查找对话框(详见 6.7 节 “查找包”)
Go Back/Go ForwardGo/Back/Forward跳转历史浏览记录
Go to PacketGo/Go to Packet…跳转至指定序号的包
Go to First/Last PacketGo/First/Last Packet跳转至第一个/最后一个包
ColorizeView/Colorize Packet List切换包列表彩色显示模式
Auto ScrollView/Auto Scroll in Live Capture切换实时捕捉自动滚动模式
Zoom In/Zoom Out/Normal SizeView/Zoom In/Out/Normal Size字体缩放操作
Resize ColumnsView/Resize All Columns自动调整包列表列宽
Capture FiltersCapture/Capture Filters…打开捕捉过滤器配置对话框(详见 6.6 节)
Display FiltersAnalyze/Display Filters…打开显示过滤器配置对话框(详见 6.6 节)
Coloring RulesView/Coloring Rules…打开颜色规则配置对话框(详见 9.3 节)
PreferencesEdit/Preferences…打开程序首选项对话框(详见 9.5 节)
HelpHelp/Contents打开本地帮助文档

3.14 “Filter” 工具栏

过滤工具栏用于配置和应用显示过滤规则,是包分析的主要工具:

图 3.12 过滤工具栏

工具栏组件功能描述
过滤表达式按钮打开“过滤表达式”对话框,通过协议字段可视化构建过滤规则(详见 6.5 节 “Filter Expression 对话框”)
过滤输入框手动输入或修改过滤表达式,支持语法实时校验(红色背景表示语法错误,绿色表示合法);
下拉列表保存历史输入,重启后不丢失
清除按钮清空过滤输入框,取消当前过滤规则
应用按钮应用输入框中的过滤表达式(也可通过回车键确认应用);
大文件过滤可能需要一定时间

3.15 “Packet List” 面板

包列表面板以表格形式显示每个包的摘要信息,每行对应一个包:

图 3.13 包列表面板

默认列说明

  • No.:包的序号(过滤后序号保持不变,不重新排序);
  • Time:包的时间戳(格式可通过 View 菜单配置,详见 6.10 节);
  • Source:包的源地址(MAC 地址、IP 地址等,取决于协议层);
  • Destination:包的目标地址;
  • Protocol:包的最高层协议类型(如 TCP、HTTP、ARP);
  • Info:包的关键附加信息(如 TCP 端口、HTTP 请求方法、ARP 操作类型)。

操作说明

  • 选中某行后,包详情面板和包字节面板会同步显示该包的详细信息;
  • 右击行可打开上下文菜单,支持过滤、标记、查找等快速操作(详见 6.3 节 “浏览时过滤包”);
  • 列的显示与否、顺序可通过首选项自定义(详见 9.5 节 “首选项”)。

3.16 “Packet Details” 面板

包详情面板以树状结构展示选中包的协议层级及字段详情,从底层到高层协议逐层展开:

图 3.14 包详情面板

特殊字段说明

  • 衍生字段:Wireshark 基于包数据计算或关联生成的字段,以括号标注(如 TCP 协议的 [SEQ/ACK analysis]);
  • 链接字段:与其他包存在关联时,字段显示为蓝色下划线,双击可跳转至关联包。

操作说明

  • 点击协议名称前的“+/-”可展开/折叠该层协议字段;
  • 选中字段后,包字节面板会高亮显示对应的数据区域;
  • 右击字段可打开上下文菜单,支持将字段作为过滤条件、复制字段值等操作(详见 6.4 节 “建立显示过滤表达式”)。

3.17 “Packet Bytes” 面板

包字节面板以十六进制和 ASCII 两种格式显示选中包的原始数据,与包详情面板联动:

图 3.15 包字节面板

面板布局

  • 左侧:数据偏移量(以字节为单位);
  • 中间:十六进制格式的数据(每两个字符代表一个字节);
  • 右侧:对应的 ASCII 字符(不可打印字符显示为“.”)。

特殊情况

当 Wireshark 对包进行分片重组后(详见 7.5 节 “合并包”),面板底部会显示多个选项卡,可切换查看原始分片或重组后的完整数据:

图 3.16 带选项卡的包字节面板

注意重组后的数据可能来自多个原始包,选项卡菜单可通过右击切换。

3.18 状态栏

状态栏位于窗口底部,根据程序状态显示不同信息:

1. 初始状态(未打开文件)

图 3.17 初始状态栏

显示“未打开文件”的提示信息。

2. 打开文件后

图 3.18 打开文件后的状态栏

  • 左侧:当前文件名称、大小、捕捉持续时间等信息;
  • 右侧:统计数据(P:总捕捉包数;D:当前显示包数;M:标记包数)。

3. 选中协议字段后

图 3.19 选中协议字段后的状态栏

显示选中字段的名称、偏移量、长度及数据值,括号内的字段标识(如 app.opcode)可直接作为显示过滤条件。

第 4 章 实时捕捉数据包

4.1 介绍

实时捕捉数据包是 Wireshark 的特色功能之一。

Wireshark 捕捉引擎具备以下特点:

  • 支持多种网络接口的捕捉(以太网、令牌环网、ATM 等);
  • 支持多种机制触发停止捕捉,例如捕捉文件大小、捕捉持续时间、捕捉包数量等;
  • 捕捉时可同步显示包解码详情;
  • 支持设置过滤规则,减少捕捉数据量(见 4.8 节 “捕捉时过滤”);
  • 长时间捕捉时可设置生成多个文件,针对超长时间捕捉,可配置文件大小阈值、仅保留最新 N 个文件等策略(见 4.6 节 “捕捉文件格式、模式设置”)。

Wireshark 捕捉引擎在以下方面存在限制:

  • 暂不支持从多个网络接口同时实时捕捉(可通过启动多个程序实例分别捕捉后合并文件实现类似效果);
  • 暂不支持根据捕捉到的数据内容触发停止捕捉或其他操作。

4.2 准备工作

首次配置 Wireshark 捕捉数据包时可能遇到部分问题,以下是关键注意事项:

提示更全面的捕捉设置向导可参考:<https://wiki.wireshark/CaptureSetup
  1. 必须拥有 root/Administrator 权限才能启动捕捉[12];
  2. 需选择正确的网络接口以确保捕捉目标数据;
  3. 需明确捕捉位置,确保能获取到目标通信数据;
  4. 其他与操作系统、网络环境相关的配置要求。

若遇到设置问题,建议参考上述官方向导获取解决方案。

4.3 开始捕捉

可通过以下任意方式启动数据包捕捉:

  1. 打开“捕捉接口”对话框(图 4.1),浏览本地可用网络接口,选择目标接口启动捕捉;
  2. 点击“捕捉选项”按钮打开配置对话框(图 4.2),完成参数设置后启动捕捉;
  3. 若当前需求与上次捕捉设置一致,可直接点击“开始捕捉”按钮或对应菜单项快速启动;
  4. 已知捕捉接口名称时,可通过命令行启动(示例如下),命令行参数详情见 9.2 节 “从命令行启动 Wireshark”:
wireshark -i eth0 -k

上述命令将从 eth0 接口启动捕捉。

4.4 捕捉接口对话框

从“捕捉”菜单选择“Interface…”,将弹出“捕捉接口”对话框(图 4.1):

警告打开该对话框时,系统会实时显示捕捉数据,此过程会消耗一定系统资源。
请尽快选择目标接口并关闭对话框,避免影响系统性能。
注意对话框仅显示本地已检测的网络接口,Wireshark 可能无法识别所有接口,且不支持检测远程接口,仅能使用列表中显示的可用接口。

图 4.1 捕捉接口对话框

对话框字段说明

  • IP:Wireshark 解析的接口第一个 IP 地址;未获取 IP 时显示“Unknown”;多 IP 接口仅显示首个(无法指定显示顺序);
  • Packets:打开对话框后,该接口累计捕捉到的包数量;无数据时灰度显示;
  • Packets/s:最近一秒内该接口捕捉到的包数量;无数据时灰度显示;
  • Stop:停止当前接口的捕捉进程;
  • Capture:使用上次捕捉设置,从选中接口立即启动捕捉;
  • Options:打开该接口的捕捉选项对话框(见 4.5 节 “捕捉选项对话框”);
  • Details(仅 Win32 系统):打开对话框显示接口详细信息;
  • Close:关闭“捕捉接口”对话框。

4.5 捕捉选项对话框

从“捕捉”菜单选择“Options…”(或主工具栏对应按钮),将弹出“捕捉选项”对话框(图 4.2):

图 4.2 捕捉选项对话框

提示若不了解各项参数含义,建议保持默认设置。

对话框分为多个配置区域,具体说明如下:

4.5.1 捕捉参数配置

  • Interface:下拉列表选择用于捕捉的网络接口(一次仅能选择一个)。默认优先显示支持捕捉的非环回接口;无此类接口时显示环回接口。部分系统(如 Windows)的环回接口不支持捕捉。命令行参数 -i <interface> 可替代该设置;

  • IP address:显示选中接口的 IP 地址;未分配 IP 时显示“unknown”;

  • Link-layer header type:链路层包头类型,默认设置适用于绝大多数场景,特殊场景配置见 4.7 节 “链路层包头类型”;

  • Buffer size: n megabyte (s):设置捕捉缓存大小(仅 Windows 平台支持)。该缓存用于临时存储捕捉数据,写入磁盘前暂存于此。若捕捉过程中出现丢包,可尝试增大该值;

  • Capture packets in promiscuous mode:启用杂收模式。未启用时,Wireshark 仅能捕捉进出本机的数据包;启用后可捕捉局域网内其他设备的数据包[13]。

    注意若其他应用程序已将网卡设置为杂收模式,即使未勾选此选项,Wireshark 仍会工作于杂收模式。
    注意杂收模式下未必能接收网段内所有数据包,详细说明见
    https://www.wireshark/faq.html#promiscsniff
  • Limit each packet to n bytes:设置每个包的最大捕捉字节数(即“snaplen”[14])。默认值 65535 适用于大多数协议,配置原则如下:

    1. 不确定时保持默认值;
    2. 仅需包头数据(如链路层、IP、TCP 包头)时,可设置较小值,减少 CPU 占用和缓存消耗,降低繁忙网络中的丢包概率;
    3. 若设置过小导致包数据被截断,可能影响后续数据分析(如包重组失败);
  • Capture Filter:输入捕捉过滤规则(详见 4.8 节 “捕捉时过滤”),默认为空。点击右侧按钮可打开“捕捉过滤器”对话框,创建或选择已保存的过滤器(详见 6.6 节 “定义,保存过滤器”)。

4.5.2 捕捉文件配置

捕捉文件相关设置的详细说明见 4.6 节 “捕捉文件格式、模式设置”:

  • File:指定捕捉文件存储路径。默认空白时,数据暂存于临时文件夹;点击右侧按钮可通过文件浏览器选择存储位置;
  • Use multiple files:启用多文件模式,达到指定条件时自动切换至新文件;
  • Next file every n megabyte (s):仅启用多文件模式时有效,文件大小达到指定值后切换新文件;
  • Next file every n minutes (s):仅启用多文件模式时有效,捕捉持续时间达到指定值后切换新文件;
  • Ring buffer with n files:仅启用多文件模式时有效,限制生成文件数量,达到上限后覆盖最早的文件;
  • Stop capture after n file (s):仅启用多文件模式时有效,生成指定数量文件后停止捕捉。

4.5.3 停止条件配置

  • … after n packet (s):捕捉到指定数量的数据包后停止;
  • … after n megabytes (s):捕捉数据总量达到指定大小(字节/千字节/兆字节/吉字节)后停止;未启用多文件模式时该选项灰色不可选;
  • … after n minute (s):捕捉持续时间达到指定值后停止。

4.5.4 显示选项配置

  • Update list of packets in real time:实时更新包列表面板。启用后 Wireshark 会启动两个独立进程(捕捉进程与显示进程),实时传输并显示数据;未启用时,仅在捕捉结束后显示所有数据;
  • Automatic scrolling in live capture:实时捕捉时自动滚动包列表面板,始终显示最新包。未启用“实时更新”时该选项灰色不可选;
  • Hide capture info dialog:启用后隐藏捕捉信息对话框。

4.5.5 名称解析配置

  • Enable MAC name resolution:启用 MAC 地址名称解析(详见 7.6 节 “名称解析”);
  • Enable network name resolution:启用网络层地址(IP 地址)名称解析(详见 7.6 节 “名称解析”)。

4.5.6 操作按钮

  • Start:完成配置后,点击启动捕捉;
  • Cancel:取消配置并退出对话框。

启动捕捉后,可在数据收集完成时停止捕捉(见 4.9 节 “在捕捉过程中”)。

4.6 捕捉文件格式、模式设置

捕捉过程中,libpcap 捕捉引擎(Linux 环境)会将网卡接收的数据包暂存于系统缓存,再由 Wireshark 读取并写入用户指定的文件。捕捉文件支持多种存储模式,具体说明如下:

提示处理数百兆以上的大文件时,Wireshark 操作速度会显著降低。
若计划长时间捕捉或在高吞吐量网络中使用,建议启用“多文件”选项,将数据分割为多个小文件,提升后续处理效率。
注意多文件模式可能截断数据包的上下文关联信息。
Wireshark 会保留已载入文件中的上下文数据(如流连接、协议建立阶段信息),若关联数据分布在不同文件中,可能导致分析时无法识别完整上下文(如连接建立阶段在文件 1,数据传输阶段在文件 2,分析文件 2 时无法获取建立阶段信息)。
提示捕捉文件的目录管理相关信息可参考对应章节。

存储模式说明

“File” 选项“Use multiple files” 选项“Ring buffer with n files” 选项存储模式最终文件命名方式
---单个临时文件etherXXXXXX(XXXXXX 为唯一标识)
foo.cap--单个命名文件foo.cap
foo.cap-多文件连续模式foo_00001_20040205110102.cap、foo_00002_20040205110102.cap…(按切换顺序编号,包含时间戳)
foo.cap多文件循环模式foo_00001_20040205110102.cap、foo_00002_20040205110102.cap…(达到文件数量上限后,覆盖最早文件)
  1. 单个临时文件:默认模式,捕捉数据存储于临时文件,捕捉结束后可由用户指定文件名保存;
  2. 单个命名文件:数据存储于用户指定的单个文件,适用于短时间捕捉;
  3. 多文件连续模式:达到切换条件(文件大小、时间)时自动创建新文件,持续生成文件直至捕捉停止;
  4. 多文件循环模式:限制文件总数,达到上限后覆盖最早的文件,可控制磁盘空间占用,适用于长时间无人值守捕捉。

4.7 链路层包头类型

多数场景下无需手动设置链路层包头类型,以下为需自定义的特殊场景及配置建议:

  1. BSD 系统 + 802.11 无线设备:可选“802.11”或“Ethernet”。“Ethernet”模式下捕捉包带有伪以太网帧头;“802.11”模式下保留原始 802.11 帧头。若后续分析工具不支持 802.11 帧头,选择“Ethernet”;
  2. Endace DAG 卡 + 同步串口线:可选“PPP over serial”或“Cisco HDLC”,根据实际使用的封装协议选择;
  3. Endace DAG 卡 + ATM 网络:可选“RFC 1483 IP-over-ATM”或“Sun raw ATM”。捕捉 RFC 1483 封装的 IP 数据,或后续分析工具不支持 SunATM 帧头时,选择前者;否则选择后者;
  4. 以太网环境 + DOCSIS 通信:可选“Ethernet”或“DOCSIS”。在 Cisco 电缆调制解调器终端系统(CMTS)环境下捕捉 DOCSIS 通信时,选择“DOCSIS”;普通以太网捕捉选择“Ethernet”。

4.8 捕捉时过滤

Wireshark 使用 libpcap/winpcap 过滤语法进行捕捉过滤,语法规则与 tcpdump 兼容。

提示捕捉过滤示例可参考:<https://wiki.wireshark/CaptureFilters

过滤语法规则

捕捉过滤表达式由基本单元通过逻辑运算符(and/or/not)组合而成,优先级:not > and > or,语法格式如下:

[not] primitive [and|or [not] primitive ...]
基本单元类型
  1. 主机过滤
  • [src|dst] host <host>:过滤指定主机(IP 地址或域名)的数据包。src 表示源主机,dst 表示目标主机;未指定时,源或目标为该主机的包均会被捕捉;
  • 示例:host 10.0.0.5(捕捉与 10.0.0.5 相关的所有包)、src host 10.0.0.5(仅捕捉源为 10.0.0.5 的包)。
  1. 以太网地址过滤
  • ether [src|dst] host <ehost>:过滤指定以太网地址(MAC 地址)的数据包。src/dst 用法同上;
  • 示例:ether dst host 00:11:22:33:44:55(仅捕捉目标 MAC 为 00:11:22:33:44:55 的包)。
  1. 网关过滤
  • gateway host <host>:过滤通过指定主机作为网关的数据包(以太网地址为该主机,但 IP 源/目标地址均非该主机);
  • 示例:gateway host 192.168.1.1(捕捉通过 192.168.1.1 网关转发的包)。
  1. 网络过滤
  • [src|dst] net <net> [{mask <mask>}|{len <len>}]:过滤指定网络的数据包。支持子网掩码(如 192.168.1.0 mask 255.255.255.0)或 CIDR 格式(如 192.168.1.0/24);
  • 示例:dst net 10.0.0.0/8(仅捕捉目标网络为 10.0.0.0/8 的包)。
  1. 端口过滤
  • [tcp|udp] [src|dst] port <port>:过滤 TCP/UDP 协议的指定端口数据包。tcp|udp 需位于 src|dst 之前;
  • 示例:tcp port 80(捕捉 TCP 80 端口相关包)、udp dst port 53(仅捕捉 UDP 目标端口 53 的 DNS 包)。
  1. 包长度过滤
  • less|greater <length>:过滤长度小于(less)或大于(greater)指定值的数据包(单位:字节);
  • 示例:greater 1000(仅捕捉长度超过 1000 字节的包)。
  1. 协议过滤
  • ip|ether proto <protocol>:过滤指定协议的数据包(支持 IP 层或以太网层协议);
  • 示例:ip proto icmp(捕捉 ICMP 协议包)、ether proto 0x0800(捕捉以太网类型为 IPv4 的包)。
  1. 广播/多播过滤
  • ether|ip broadcast|multicast:过滤以太网或 IP 层的广播/多播包;
  • 示例:ip broadcast(捕捉 IP 广播包)。
  1. 复杂表达式过滤
  • <expr> relop <expr>:通过字节偏移量和数值比较创建复杂过滤规则,详细语法见 tcpdump 官方文档(<https://www.tcpdump/tcpdump_man.html);
  • 示例:tcp[13] & 0x02 != 0(捕捉 TCP SYN 标志位为 1 的包,即连接建立请求包)。
过滤示例
  1. 捕捉来自 10.0.0.5 的 Telnet 通信(TCP 23 端口):
tcp port 23 and host 10.0.0.5
  1. 捕捉非 10.0.0.5 发起的 Telnet 通信:
tcp port 23 and not src host 10.0.0.5

4.8.1 自动过滤远程通信

若 Wireshark 运行于远程主机(如通过 SSH、X11 窗口转发、终端服务器连接),远程连接本身会产生大量无关数据包。Wireshark 可通过分析环境变量自动识别远程连接,生成过滤规则以排除这些无关数据。

支持的环境变量
  • SSH_CONNECTION/SSH_CLIENT(SSH 连接):格式为 <remote IP> <remote port> <local IP> <local port>
  • REMOTEHOST(tcsh 等终端):存储远程主机名;
  • DISPLAY(X11 窗口):格式为 [remote name]:<display num>
  • SESSIONNAME(终端服务器):存储远程会话名称。

4.9 在捕捉过程中

启动捕捉后,将显示“捕捉信息对话框”(图 4.3),实时展示捕捉到的包数量、捕捉持续时间及协议分布统计。

提示若需隐藏该对话框,可在“捕捉选项”对话框中勾选“Hide capture info dialog”。

4.9.1 停止捕捉

可通过以下方式停止正在进行的捕捉:

  1. 点击“捕捉信息对话框”中的“Stop”按钮(若已隐藏该对话框,需通过其他方式停止);
  2. 选择菜单项“Capture/Stop”;
  3. 点击主工具栏的“Stop”按钮;
  4. 使用快捷键 Ctrl+E;
  5. 若已配置自动停止条件(如指定包数量、时间、文件大小),达到条件后将自动停止。

4.9.2 重新启动捕捉

重新启动捕捉将清空上次捕捉的所有数据,适用于捕捉到无关数据后需重新开始的场景。可通过以下方式实现:

  1. 选择菜单项“Capture/Restart”;
  2. 点击主工具栏的“Restart”按钮。

重新启动捕捉等效于“停止当前捕捉 → 立即启动新捕捉”,无需重新配置参数。


[12] Windows 环境下,若 Wireshark 以服务形式启动,非管理员用户也可能具备捕捉权限,具体可参考安装相关说明。
[13] 网卡默认仅处理目标 MAC 地址为自身或广播/多播地址的数据包;启用杂收模式后,网卡会接收所有经过的数据包并提交给操作系统,供 Wireshark 捕捉分析。
[14] “snaplen”是“snapshot length”的缩写,即“快照长度”,表示捕捉时每个数据包的最大截取字节数。

第 5 章 文件输入/输出及打印

5.1 说明

本章将详细介绍捕捉数据的输入输出相关操作,包括:

  • 打开/导入多种格式的捕捉文件;
  • 保存/导出多种格式的捕捉文件;
  • 合并多个捕捉文件;
  • 打印数据包。

5.2 打开捕捉文件

Wireshark 支持读取已保存的捕捉文件,操作方式为选择菜单“File/Open”或点击工具栏对应按钮,此时将弹出“打开文件对话框”(详见 5.2.1 节)。

便捷操作提示部分平台支持文件拖放功能,直接从文件管理器将目标文件拖动至 Wireshark 主窗口即可打开,无需通过对话框选择。

载入新文件时,若当前文件未保存,Wireshark 会提示是否保存以避免数据丢失(可在首选项中关闭该提示)。

除 Wireshark 原生的 libpcap 格式(兼容 tcpdump/Windump 及其他基于 libpcap/WinPcap 的工具)外,还支持多种第三方捕捉文件格式,具体列表见 5.2.2 节。

5.2.1 打开捕捉文件对话框

“打开文件对话框”用于浏览并选择需载入的捕捉文件,其显示样式因操作系统及 GTK+ 工具集版本而异,但功能保持一致。

对话框特性说明对话框的显示风格由操作系统和 GTK+ 工具集版本决定,但文件选择、目录导航等基础操作逻辑在所有平台中保持统一。
基本操作
  • 导航至目标文件所在目录;
  • 选中文件后点击“Open/OK”按钮载入;
  • 点击“Cancel”按钮取消操作,返回主窗口。
Wireshark 扩展功能
  • 文件预览:选中文件后,可查看文件大小、包数量等基础信息;
  • 显示过滤器预设:通过“Filter”输入框指定显示过滤器,载入文件后将自动应用该过滤规则。输入过程中会实时进行语法检查,语法正确时背景色为绿色,错误或未完成输入时为红色。点击“Filter”按钮可打开过滤对话框,辅助生成过滤表达式(详见 6.3 节 “浏览时过滤包”);
  • 名称解析设置:通过复选框指定是否在载入文件时执行地址解析(详见 7.6 节 “名称解析”)。
高效操作提示对于超大文件,建议在打开前预设显示过滤器和名称解析规则,可显著减少载入时间和系统资源占用。
后续仍可在主窗口中修改这些设置,但会重新触发数据处理流程,耗时较长。
不同环境下的对话框示例
对话框类型适用环境特性说明
Windows 下的打开对话框Microsoft Windows(安装 GTK2)支持 Wireshark 扩展功能,“Help”按钮可打开本节用户手册;若未输入文件扩展名,将自动添加对应格式的标准扩展名(如.pcap);
无法识别的文件会导致“Open”按钮灰色不可用[a]。
新版 GTK 下的打开对话框Unix/Linux(GTK 版本 ≥ 2.4)采用 Gimp/GNOME 桌面环境风格,“+”按钮可将选中目录添加至收藏夹,“-”按钮可移除收藏夹中的目录(“Home”“Desktop”“Filesystem”不可移除);
无法识别的文件会导致“Open”按钮灰色不可用。
旧版 GTK 下的打开对话框Unix/Linux(GTK 版本 < 2.4)、Microsoft Windows(安装 GTK1)采用传统 Gimp/GNOME 或 Windows GTK1 风格,功能简洁;
无法识别的文件会导致“Open”按钮灰色不可用。

[a] 实际测试中,Wireshark 会尝试打开任意选中的文件,部分不兼容格式可能出现打开失败提示,而非直接禁用“Open”按钮。

5.2.2 输入文件格式

Wireshark 支持的捕捉文件格式如下:

  • libpcap、tcpdump 及其他采用 tcpdump 捕捉格式的工具生成的文件;
  • Sun snoop 和 atmsnoop 格式;
  • Shomiti/Finisar Surveyor 捕捉格式;
  • Novell LANalyzer 捕捉格式;
  • Microsoft Network Monitor 捕捉格式;
  • AIX 的 iptrace 捕捉格式;
  • Cinco Networks NetXray 捕捉格式;
  • Network Associates 基于 Windows 的 Sniffer 和 Sniffer Pro 捕捉格式;
  • Network General/Network Associates 基于 DOS 的 Sniffer 捕捉格式(压缩或未压缩);
  • AG Group/WildPackets EtherPeek/TokenPeek/AiroPeek/EtherHelp/PacketGrabber 捕捉格式;
  • RADCOM 的 WAN/LAN Analyzer 捕捉格式;
  • Network Instruments Observer 9 版本捕捉格式;
  • Lucent/Ascend 路由器调试输出文件;
  • HP-UX 的 nettl 格式;
  • Toshiba 的 ISDN 路由器转储输出文件;
  • ISDN4BSD i4btrace 工具生成的文件;
  • EyeSDN USB S0 设备的捕捉文件;
  • Cisco Secure 入侵检测系统的 IPLog 格式;
  • pppd 日志(pppdump 格式);
  • VMS 系统的 TCPIPtrace/TCPtrace/UCX$TRACE 工具输出文件;
  • DBS Etherwatch VMS 工具的文本输出文件;
  • Visual Networks 的 Visual UpTime 流量捕捉格式;
  • CoSine L2 调试输出文件;
  • Accellent 的 5Views LAN 代理输出文件;
  • Endace Measurement Systems 的 ERF 格式捕捉文件;
  • Linux Bluez Bluetooth 协议栈的 hcidump -w 输出文件;
  • Catapult DCT2000 .out 文件。
格式兼容性提示部分特殊包类型(如令牌环包)的捕捉文件可能无法被 Wireshark 完全支持,以太网环境下的大多数格式通常可正常打开。若遇到打开失败,可检查文件格式是否与包类型匹配。

5.3 保存捕捉包

通过菜单“File->Save As…”可将当前捕捉数据保存为文件,保存时可选择目标包范围和文件格式。

数据保存提示保存操作可能导致部分辅助信息丢失(如已标记为丢弃的包),具体细节可参考相关技术文档。

5.3.1 “Save Capture File As/保存文件为”对话框

该对话框用于配置保存参数,包括文件名、保存目录、包范围和文件格式,其显示样式因操作系统及 GTK+ 版本而异,但功能一致。

对话框特性说明对话框的显示风格由操作系统和 GTK+ 工具集版本决定,但文件名输入、目录选择、格式设置等基础功能在所有平台中保持统一。
不同环境下的对话框示例
对话框类型适用环境特性说明
Windows 下的保存为对话框Microsoft Windows(安装 GTK2)支持 Wireshark 扩展功能,“Help”按钮可打开本节用户手册;若未输入文件扩展名,将自动添加对应格式的标准扩展名(如.pcap)。
新版 GTK 下的保存为对话框Unix/Linux(GTK 版本 ≥ 2.4)采用 Gimp/GNOME 桌面环境风格,“Browse for other folders”前的“+”按钮可展开目录选择面板,精确指定保存位置。
旧版 GTK 下的保存为对话框Unix/Linux(GTK 版本 < 2.4)、Microsoft Windows(安装 GTK1)采用传统 Gimp/GNOME 或 Windows GTK1 风格,功能简洁,仅支持基础的文件名和目录设置。
操作步骤
  1. 输入目标文件名;
  2. 选择保存目录;
  3. 配置包范围(见 5.8 节 “包范围选项”);
  4. 通过“File type/文件类型”下拉列表选择保存格式(见 5.3.2 节);
  5. 点击“Save/OK”按钮执行保存,若遇到权限不足、磁盘空间不足等问题,会弹出错误提示,确认后可重新配置;
  6. 点击“Cancel”按钮取消操作,不保存任何数据。
格式兼容性提示部分保存格式可能因当前捕捉数据的包类型而不可用,具体取决于数据链路层类型和协议支持情况。
Wireshark 支持跨格式保存,即可以一种格式打开文件,再以另一种格式保存。

5.3.2 输出格式

Wireshark 可将捕捉数据保存为其原生的 libpcap 格式,或其他第三方工具支持的格式,具体如下:

  • libpcap、tcpdump 及其他采用 tcpdump 捕捉格式的工具兼容格式(.pcap、.cap、*.dmp);
  • Accellent 5Views 格式(*.5vw);
  • HP-UX 的 nettl 格式(.TRC0、.TRC1);
  • Microsoft Network Monitor - NetMon 格式(*.cap);
  • Network Associates Sniffer - DOS 格式(.cap、.enc、.trc、.fdc、*.syc);
  • Network Associates Sniffer - Windows 格式(*.cap);
  • Network Instruments Observer 9 版本格式(*.bfr);
  • Novell LANalyzer 格式(*.tr1);
  • Sun snoop 格式(.snoop、.cap);
  • Visual Networks Visual UpTime 流量格式(.)。
时间戳精度提示不同文件格式的时间戳精度存在差异,将数据保存为非原生格式时,可能会降低时间戳的精度。
具体影响见 7.3 节 “时间戳”。

5.4 合并捕捉文件

当需要将多个捕捉文件整合为一个时(如多接口分别捕捉后汇总分析),可通过以下三种方式实现:

  1. 选择菜单“File->Merge”,打开“合并文件对话框”(见 5.4.1 节);
  2. 拖放功能:将多个文件拖动至 Wireshark 主窗口,系统会创建临时文件并按时间顺序合并;若仅拖放一个文件,将替换当前已打开的文件;
  3. mergecap 命令行工具:提供丰富的合并选项,支持批量处理和自动化操作,具体用法见相关工具文档。

5.4.1 合并文件对话框

该对话框用于选择待合并的文件并配置合并规则,操作逻辑与“打开捕捉文件对话框”类似(见 5.2.1 节)。

数据保存提示若当前文件未保存,Wireshark 会在打开合并对话框前提示是否保存,避免合并过程中丢失数据。
合并规则配置

对话框提供三种合并方式,可根据需求选择:

  • 将包插入已存在文件前:将选中文件的数据包添加至当前已载入文件的开头;
  • 按时间顺序合并文件:对当前已载入文件和选中文件的所有数据包按时间戳排序后合并;
  • 追加包到当前文件:将选中文件的数据包添加至当前已载入文件的末尾。
不同环境下的对话框示例
对话框类型适用环境特性说明
Windows 下的“合并”对话框Microsoft Windows(安装 GTK2)采用 Windows 风格,支持 Wireshark 扩展的合并规则配置功能。
新版 GTK 下的合并对话框Unix/Linux(GTK 版本 ≥ 2.4)采用 Gimp/GNOME 桌面环境风格,合并规则选项以单选钮形式呈现,操作直观。
旧版 GTK 下的合并对话框Unix/Linux(GTK 版本 < 2.4)、Microsoft Windows(安装 GTK1)采用传统风格,合并规则选项简洁,仅支持基础的合并方式配置。

5.5 文件集合

在捕捉过程中启用“Multiple Files/多文件”选项(见 4.6 节 “捕捉文件格式、模式设置”)时,捕捉数据会被分割为多个文件,这些文件统称为“文件集合”。

手动管理大量文件集合较为繁琐,Wireshark 提供专门的文件集合管理功能,简化操作流程。

文件集合识别机制

文件集合中的文件名遵循统一命名规则:前缀_序号_日期时间.后缀,例如“test_00001_20060420183910.pcap”。Wireshark 通过扫描当前载入文件所在目录,识别具有相同前缀和后缀的文件,自动归类为同一文件集合。

该机制存在一定局限性:

  • 若多次捕捉使用相同前缀和后缀,可能导致不同捕捉任务的文件被误判为同一集合;
  • 文件更名或移动至其他目录后,将无法被识别为原集合的一部分。

文件集合操作

通过菜单“File->File Set”可访问以下管理功能:

  • List Files:打开“文件列表对话框”,显示当前文件集合的所有文件;
  • Next Files:关闭当前文件,打开集合中的下一个文件;
  • Previous Files:关闭当前文件,打开集合中的前一个文件。
5.5.1 文件列表对话框

该对话框以表格形式展示文件集合中所有文件的关键信息,每行对应一个文件:

  • Filename:文件名。双击文件名或选中后点击确认,可关闭当前文件并载入该文件;
  • Created:文件创建时间;
  • Last Modified:文件最后修改时间;
  • Size:文件大小(单位:字节)。

对话框底部显示“…directory:”字段,标明所有文件所在的目录。每次打开或关闭集合中的文件时,对话框内容会实时更新。点击“Close”按钮可关闭该对话框。

5.6 导出数据

Wireshark 支持多种格式的数据包导出功能,适用于数据共享、二次分析等场景。本节介绍常用导出方式,特殊场景的导出方法将在对应章节补充说明。

功能说明部分特殊数据(如加密流量、自定义协议数据)可能需要通过专用插件或工具导出,具体需结合数据类型和分析需求选择。

5.6.1 “Export as Plain Text File”对话框

用于将数据包导出为纯 ASCII 文本格式,适用于打印或文本编辑工具分析。

配置选项
  • Export to file:指定导出文件路径和名称;
  • Packet Range:选择导出的包范围(见 5.8 节 “包范围选项”);
  • Packet Details:配置导出的数据包细节(如摘要、详细信息、字节数据等)。

5.6.2 “Export as PostScript File”对话框

用于将数据包导出为 PostScript 格式,该格式适用于专业打印和跨平台文档共享。

格式转换提示PostScript 文件可通过 ghostscript 工具转换为 PDF 格式。
例如:ps2pdf foo.ps(foo.ps 为导出的 PostScript 文件名)。
配置选项
  • Export to file:指定导出文件路径和名称;
  • Packet Range:选择导出的包范围(见 5.8 节 “包范围选项”);
  • Packet Details:配置导出的数据包细节(如摘要、详细信息、字节数据等)。

5.6.3 “Export as CSV (Comma Separated Values) File”对话框

用于将数据包摘要信息导出为 CSV 格式,可被 Excel、WPS 等电子表格工具直接打开,便于数据统计和筛选。

配置选项
  • Export to file:指定导出文件路径和名称;
  • Packet Range:选择导出的包范围(见 5.8 节 “包范围选项”)。

5.6.4 “Export as PSML File”对话框

用于将数据包摘要信息导出为 PSML 格式(Packet Summary Markup Language),该格式是基于 XML 的标准化数据包摘要格式,详细规范见 <https://www.nbee/Docs/NetPDL/PSML.htm

图 5.13 导出为 PSML 文件对话框

配置选项
  • Export to file:指定导出文件路径和名称;
  • Packet Range:选择导出的包范围(见 5.8 节 “包范围选项”)。

该对话框无“Packet Details”相关选项,因 PSML 格式仅包含数据包摘要信息,不支持详细字段配置。

5.6.5 “Export as PDML File”对话框

用于将数据包完整信息导出为 PDML 格式(Packet Details Markup Language),该格式是基于 XML 的标准化数据包详细描述格式,详细规范见 <https://www.nbee/Docs/NetPDL/PDML.htm

格式说明PDML 格式目前仍处于测试阶段,尚未形成稳定发行版,后续版本可能会调整格式规范,导出文件需注意版本兼容性。

图 5.14 导出为 PDML 文件对话框

配置选项
  • Export to file:指定导出文件路径和名称;
  • Packet Range:选择导出的包范围(见 5.8 节 “包范围选项”)。

该对话框无“Packet Details”相关选项,因 PDML 格式会默认包含数据包的完整详细信息,无需额外配置。

5.6.6 “Export Selected Packet Bytes”对话框

用于导出选中数据包的原始字节数据,适用于提取特定数据包的二进制内容进行独立分析。

图 5.15 导出选中数据包字节对话框

配置选项
  • Name:指定导出文件名称;
  • Save in folder:指定导出文件保存目录;
  • Browse for other folders:通过文件浏览器选择自定义保存目录。

5.6.7 “Export Objects”对话框

用于扫描当前打开的捕捉文件或实时捕捉的数据包,提取 HTTP 传输的对象(如 HTML 文档、图片、可执行文件等),并重组为原始文件格式保存至磁盘。

若处于实时捕捉状态,该对话框会在发现新对象后几秒内自动更新列表。保存的对象无需额外处理,可直接用对应工具打开(如图片用图片查看器、可执行文件在兼容平台上运行)。该功能在 GTK1 环境下的 Wireshark 中不可用。

图 5.16 导出对象对话框

列表字段说明
  • Packet num:包含该对象数据的数据包编号(多个对象可能存在于同一个数据包中);
  • Hostname:发送该对象的 HTTP 服务器主机名;
  • Content Type:对象的 HTTP 内容类型(如 text/html、image/jpeg 等);
  • Bytes:对象的字节大小;
  • Filename:对象的文件名(取自 URL 最后一个“/”后的部分)。若为 HTTP POST 请求结果,该字段可能为复杂字符串。
操作按钮说明
  • Help:打开本节用户手册;
  • Close:关闭对话框;
  • Save As:保存当前选中的对象,默认文件名为“Filename”字段显示的名称,可自定义修改;
  • Save All:保存列表中所有对象,系统会提示选择保存目录。若文件名包含操作系统不支持的字符,会弹出错误提示,该对象将不被保存,其他对象正常保存。

5.7 打印包

打印数据包的操作方式为选择菜单“File->Print…”,弹出“Print”对话框(图 5.17),可配置打印格式、范围等参数。

5.7.1 打印对话框

图 5.17 打印对话框

配置选项
  • Printer:打印输出类型选择(单选钮):
  • Print Text:以纯文本格式打印;
  • PostScript:通过 PostScript 打印驱动生成输出[15];
  • Output to file:勾选后将打印内容保存为文件,而非直接发送至打印机。需指定文件路径和名称,未勾选时文件路径输入框和“Browse”按钮灰色不可用;
  • Print command:设置打印命令(仅 Unix/Linux 平台支持)。默认命令为 lpr,可修改为指定打印队列,例如 lpr -Pmypostscript(打印至名为 mypostscript 的队列)。未勾选“Output to file”时该字段灰色不可用;
  • Packet Range:选择需打印的包范围(见 5.8 节 “包范围选项”);
  • Packet Format:配置打印格式(见 5.9 节 “包格式选项”)。

5.8 包范围选项

“包范围选项”用于控制导出、打印等操作涉及的数据包范围,在多个对话框中均有出现(如保存、导出、打印对话框)。

图 5.18 包范围选项卡

配置规则
  • 数据来源选择
  • Captured:对所有捕捉到的数据包应用范围规则;
  • Displayed:仅对当前显示的数据包(已应用显示过滤器)应用范围规则;
  • 范围类型选择
  • All packets:处理所有数据包;
  • Selected packet only:仅处理当前选中的单个数据包;
  • Marked packets only:仅处理已标记的数据包;
  • From first to last marked packet:处理第一个至最后一个标记数据包之间的所有数据包(包含首尾标记包);
  • Specify a packet range:手动指定数据包范围,格式支持:
  • 单个编号:如“5”(处理第 5 个包);
  • 区间:如“10-15”(处理第 10 至 15 个包,包含首尾);
  • 混合格式:如“5,10-15,20-”(处理第 5 个包、第 10-15 个包、第 20 个至最后一个包)。

5.9 包格式选项

“包格式选项”用于配置导出、打印等操作中数据包的显示内容,在多个对话框中均有出现(如保存、导出、打印对话框)。

图 5.19 包格式选项卡

配置选项
  • Packet summary line:导出/打印数据包摘要行(即“Packet List”面板显示的内容);
  • Packet Details:导出/打印数据包详细信息(即“Packet Details”面板的树形结构),支持三种显示状态:
  • All collapsed:折叠所有分支,仅显示顶层协议名称;
  • As displayed:保持当前面板的展开/折叠状态;
  • All expanded:展开所有分支,显示完整的协议字段信息;
  • Packet bytes:导出/打印数据包原始字节数据(即“Packet Bytes”面板显示的十六进制和 ASCII 编码内容);
  • Each Packet on a new page:每个数据包单独占用一页(文本格式中会在数据包之间添加分节符,打印时每页仅显示一个数据包)。

[15] 若无需物理打印,可勾选“Output to file”将 PostScript 格式内容保存为文件,默认扩展名为.out。如需用 Acrobat 打开,可将扩展名改为.ps,或直接拖放至 Acrobat Distiller 生成 PDF 文件。PostScript 格式输出具有更规范的排版(如页首显示列名),优于纯文本格式打印。

第 6 章 处理已经捕捉的包

6.1 浏览捕捉的包

捕捉完成后或打开已保存的包文件时,点击包列表面板中的任意数据包,即可在包详情面板查看该包的树状结构协议解析,并在包字节面板查看对应的十六进制与 ASCII 编码数据。

树状结构中,点击左侧“+”标记可展开任意协议层级;点击面板中的字段名称可选中该字段,此时包字节面板会同步高亮显示该字段对应的原始字节数据。例如,选中 TCP 协议的应答号(ack:190)时,字节面板中对应的数据区域会被标记,便于关联协议字段与原始数据(图 6.1)。

图 6.1 Wireshark 选择了一个 TCP 包后的界面

实时捕捉过程中(需在捕捉选项对话框中勾选“实时更新包列表(update list of packet in real time)”),同样支持上述选择与浏览操作。

此外,可通过分离窗口单独浏览数据包:在包列表面板选中目标包后,选择菜单“Display->Show Packet in New Window”,即可在新窗口中查看该包的完整信息(图 6.2)。该功能便于同时对比多个数据包的细节。

图 6.2 在分离窗口浏览包

6.2 弹出菜单项

在包列表面板、包详情面板、包字节面板中点击右键,会弹出与当前面板相关的上下文菜单,提供快捷操作选项。

6.2.1 包列表面板的弹出菜单

包列表面板的右键菜单包含标记包、过滤配置、数据复制、协议分析等功能(图 6.3),具体选项及说明如下表所示。

图 6.3 包列表面板弹出菜单

表 6.1 包列表弹出菜单项说明

菜单项对应主菜单项功能描述
Mark Packet (toggle)Edit标记或取消标记当前选中的数据包
Set Time Reference (toggle)Edit为当前选中的数据包设置或取消时间参考
Apply as FilterAnalyze将当前选中项的属性作为显示过滤器并立即应用
Prepare a FilterAnalyze基于当前选中项生成显示过滤表达式,但不立即应用,可进一步编辑
Conversation Filter-基于当前包的源/目标地址生成显示过滤器,仅显示该地址对之间的所有会话(不分方向)
STCP-预留功能,暂未实现具体作用
Follow TCP StreamAnalyze提取并显示当前包所属的 TCP 流的完整数据(按流重组)
Follow SSL StreamAnalyze提取并显示当前包所属的 SSL 流的完整数据(按流重组)
Copy/Summary (TEXT)-将当前包的摘要信息以制表符分隔的文本格式复制到剪贴板
Copy/Summary (CSV)-将当前包的摘要信息以逗号分隔的 CSV 格式复制到剪贴板
Copy/As Filter-基于当前选中项生成显示过滤表达式并复制到剪贴板
Copy/Bytes (Offset Hex Text)-将当前包的原始字节以“偏移量+十六进制+ASCII”格式复制到剪贴板
Copy/Bytes (Offset Text)-将当前包的原始字节以“偏移量+十六进制”格式复制到剪贴板(不含 ASCII 文本部分)
Copy/Bytes (Printable Text Only)-将当前包的原始字节中可打印的 ASCII 字符复制到剪贴板(排除非打印字符)
Copy/Bytes (HEX Stream)-将当前包的原始字节以无分隔符的十六进制字符串格式复制到剪贴板
Copy/Bytes (Binary Stream)-将当前包的原始字节以原生二进制格式复制到剪贴板(MIME 类型为 application/octet-stream),GTK+1.x 环境不支持
Export Selected Packet Bytes…File将当前选中包的原始字节导出为二进制文件
Decode As…Analyze自定义当前包的协议解析方式(如将特定端口的流量解析为指定协议)
Print…File打印当前选中的数据包
Show Packet in New WindowView在新窗口中显示当前选中的数据包

6.2.2 包详情面板的弹出菜单

包详情面板的右键菜单围绕协议字段操作展开,支持字段复制、过滤配置、协议解析调整等功能(图 6.4),具体选项及说明如下表所示。

图 6.4 包详情面板弹出上下文菜单项

表 6.2 包详情面板弹出菜单项说明

菜单项对应主菜单项功能描述
Expand SubtreesView展开当前选中字段所在的子树层级
Expand AllView展开当前包所有协议层级的子树
Collapse AllView折叠当前包所有已展开的协议子树
Copy/Description-将当前选中字段的描述文本复制到剪贴板
Copy/As FilterEdit基于当前选中字段生成显示过滤表达式并复制到剪贴板
Copy/Bytes (Offset Hex Text)-将当前选中字段对应的原始字节以“偏移量+十六进制+ASCII”格式复制到剪贴板
Copy/Bytes (Offset Hex)-将当前选中字段对应的原始字节以“偏移量+十六进制”格式复制到剪贴板(不含 ASCII 文本部分)
Copy/Bytes (Printable Text Only)-将当前选中字段对应的原始字节中可打印的 ASCII 字符复制到剪贴板
Copy/Bytes (Hex Stream)-将当前选中字段对应的原始字节以无分隔符的十六进制字符串格式复制到剪贴板
Copy/Bytes (Binary Stream)-将当前选中字段对应的原始字节以原生二进制格式复制到剪贴板(MIME 类型为 application/octet-stream),GTK+1.x 环境不支持
Export Selected Packet Bytes…File将当前选中字段对应的原始字节导出为二进制文件
Apply as FilterAnalyze将当前选中字段的属性作为显示过滤器并立即应用
Prepare a FilterAnalyze基于当前选中字段生成显示过滤表达式,但不立即应用,可进一步编辑
Follow TCP StreamAnalyze提取并显示当前字段所属的 TCP 流的完整数据
Follow SSL StreamAnalyze提取并显示当前字段所属的 SSL 流的完整数据
Wiki Protocol Page-打开当前选中协议对应的 Wireshark Wiki 参考页面
Filter Field Reference-打开当前选中字段的过滤语法参考页面
Protocol Preferences…-打开当前选中协议的偏好设置对话框(若该协议支持自定义配置)
Decode As…Analyze自定义当前包的协议解析方式
Resolve Name…View对当前选中字段中的地址信息执行名称解析(如 IP 地址解析为域名)
Go to corresponding Packet…Go跳转到与当前选中字段相关联的其他数据包(如 TCP 确认包对应的原始包)

6.3 浏览时过滤包

Wireshark 提供两种过滤机制:捕捉过滤(捕捉时筛选数据包)和显示过滤(浏览时隐藏无关数据包)。本节重点介绍显示过滤,捕捉过滤相关内容见 4.8 节 “捕捉时过滤”。

显示过滤的作用是在不修改原始捕捉文件的前提下,隐藏不感兴趣的数据包,聚焦于目标分析对象。过滤规则可基于协议类型、字段值、数据长度等多种条件制定。

基本过滤操作

在主窗口的过滤输入框中输入过滤表达式,按下回车键即可应用过滤。例如:

  • 输入 tcp 并回车,仅显示所有 TCP 协议的数据包(图 6.5);
  • 输入 ip.addr == 192.168.0.1 并回车,仅显示源地址或目标地址为 192.168.0.1 的数据包。

图 6.5 用 TCP 协议过滤

过滤应用后,包列表面板仅显示符合条件的数据包,未显示的数据包仍保留在捕捉文件中,点击“Clear”按钮可清除过滤规则,恢复显示所有数据包。

过滤支持范围

显示过滤仅支持 Wireshark 可识别的协议和字段。可过滤的字段为包详情面板中已标注协议缩写的字段(如 ip.addrtcp.port),完整字段列表可通过“Filter Expression”对话框查看(见 6.5 节)。

6.4 建立显示过滤表达式

Wireshark 的显示过滤语法支持字段比较、逻辑组合、子串提取等操作,可构建复杂的过滤规则。更多过滤示例可参考 Wireshark Wiki 页面:<https://wiki.wireshark/DisplayFilters。

6.4.1 显示过滤字段

包详情面板中的每个字段均可作为过滤条件,字段名称格式为“协议缩写.字段名称”(如 ip.src 表示 IP 源地址、tcp.flags.syn 表示 TCP SYN 标志位)。

完整的过滤字段列表可通过菜单“Help/Support Protocols”访问“Display Filter Fields”页面查看。

6.4.2 比较操作符

通过比较操作符可对字段值进行条件判断,支持的操作符及示例如下表所示。

表 6.3 显示过滤比较操作符

英文标识C 风格标识功能描述示例
eq==等于ip.addr == 10.0.0.5(IP 地址为 10.0.0.5)
ne!=不等于ip.addr != 10.0.0.5(IP 地址不为 10.0.0.5)
gt>大于frame.pkt_len > 10(帧长度大于 10 字节)
lt<小于frame.pkt_len < 128(帧长度小于 128 字节)
ge>=大于等于frame.pkt_len ge 0x100(帧长度大于等于 256 字节)
le<=小于等于frame.pkt_len <= 0x20(帧长度小于等于 32 字节)

6.4.3 逻辑操作符与子串提取

逻辑操作符

通过逻辑操作符可组合多个过滤条件,支持的操作符及示例如下表所示。

表 6.4 显示过滤逻辑操作符

英文标识C 风格标识功能描述示例
and&&逻辑与(同时满足两个条件)ip.addr == 10.0.0.5 and tcp.flags.fin(IP 地址为 10.0.0.5 且 TCP 标记位为 FIN)
or||逻辑或(满足任一条件)ip.addr == 10.0.0.5 or ip.addr == 192.1.1.1(IP 地址为 10.0.0.5 或 192.1.1.1)
xor^^逻辑异或(仅满足一个条件)tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29(令牌环目标地址前 3 字节为 0.6.29 或源地址前 3 字节为 0.6.29,但不同时满足)
not!逻辑非(不满足条件)not llc(排除 LLC 协议的数据包)
子串提取操作符

通过方括号 [] 可提取字段值的子串,支持多种范围表示方式,示例如下:

  • eth.src[0:3] == 00:00:83:提取以太网源地址的前 3 个字节(偏移量 0,长度 3),判断是否为 00:00:83;
  • eth.src[1-2] == 00:83:提取以太网源地址的第 2-3 个字节(偏移量 1 至 2),判断是否为 00:83;
  • eth.src[:4] == 00:00:83:00:提取以太网源地址的前 4 个字节(从偏移量 0 至 3),判断是否为 00:00:83:00;
  • eth.src[4:] == 20:20:提取以太网源地址的第 5 个字节及以后(从偏移量 4 开始),判断是否为 20:20;
  • eth.src[2] == 83:提取以太网源地址的第 3 个字节(偏移量 2),判断是否为 83;
  • eth.src[0:3,10:2,:4] == 00:00:83:00:83:00:组合多个子串(前 3 字节、第 11-12 字节、前 4 字节),判断拼接后的结果是否匹配。

6.4.4 常见过滤错误及注意事项

错误示例:使用 != 排除地址

若需排除包含 IP 地址 1.2.3.4 的所有数据包,直接使用 ip.addr != 1.2.3.4 会产生非预期结果。原因是 ip.addr 同时包含源地址和目标地址,该表达式会匹配“源地址≠1.2.3.4”或“目标地址≠1.2.3.4”的数据包,而大多数数据包会满足这一条件(仅当源地址和目标地址均为 1.2.3.4 时不匹配)。

正确用法:使用逻辑非 ! 包裹条件

排除包含 IP 地址 1.2.3.4 的数据包,正确表达式为:

!(ip.addr == 1.2.3.4)

该表达式表示“不满足‘IP 地址包含 1.2.3.4’的数据包”,即完全排除源地址或目标地址为 1.2.3.4 的所有数据包。

6.5 “Filter Expression / 过滤表达式” 对话框

对于不熟悉过滤语法或协议字段的用户,可通过“Filter Expression”对话框可视化构建过滤表达式,降低操作难度。该对话框同时也是学习过滤语法的有效工具。

对话框打开方式

在过滤输入框右侧点击“Expression”按钮,或在包列表面板/包详情面板的右键菜单中选择“Prepare a Filter->Add Expression”,即可打开该对话框(图 6.6)。

图 6.6 过滤表达式对话框

对话框配置选项

Field Name(字段名称)

左侧列表按协议分类展示所有可过滤字段。点击协议名称前的“+”可展开该协议的字段列表,选择目标字段后,右侧会自动显示该字段的描述信息。

Relation(关系操作符)

中间下拉列表提供所有支持的比较操作符,包括:

  • 一元操作符:is present(字段存在即匹配);
  • 二元操作符:==!=><>=<= 等(需配合字段值使用)。
Value(字段值)

若选择二元操作符,需在该输入框中输入字段值,值的格式需与字段类型匹配(如 IP 地址字段输入 IPv4/IPv6 地址,端口字段输入数字)。

Predefined values(预设值)

部分字段(如 TCP 标志位、IP 协议号)提供预设值列表,选择字段后可直接从下拉列表中选择目标值,无需手动输入。

确认与取消
  • 点击“OK”按钮,生成的过滤表达式会自动填入主窗口的过滤输入框;
  • 点击“Cancel”按钮,取消当前配置并关闭对话框。

6.6 定义与保存过滤器

对于常用的复杂过滤表达式,可将其定义为预设过滤器并保存,避免重复输入。捕捉过滤器和显示过滤器的定义、保存方式类似,以下统一说明(差异点会单独标注)。

打开过滤器配置对话框

通过以下两种方式打开对话框:

  • 捕捉过滤器:选择菜单“Capture->Capture Filters…”;
  • 显示过滤器:选择菜单“Analyze->Display Filters…”。

对话框界面如图 6.7 所示,支持新建、编辑、删除、保存过滤器。

图 6.7 “捕捉过滤器”和“显示过滤器”对话框

对话框操作选项

New(新建)

在“Filter name”和“Filter string”中分别输入过滤器名称和表达式,点击“New”按钮,将新过滤器添加到列表中。若未输入名称或表达式,默认名称为“new”。

Delete(删除)

选中列表中的过滤器,点击“Delete”按钮可删除该过滤器。若未选中任何过滤器,该按钮灰色不可用。

Filter name(过滤器名称)

编辑当前选中过滤器的名称,名称仅用于标识,可重复但不建议(会影响使用体验)。

Filter string(过滤器表达式)

编辑当前选中过滤器的表达式:

  • 显示过滤器:输入过程中会实时进行语法检查,语法正确时输入框背景为绿色,错误时为红色;
  • 捕捉过滤器:无实时语法检查,需手动确保表达式正确。
Add Expression(添加表达式)

仅显示过滤器支持该功能,点击后打开“Filter Expression”对话框(见 6.5 节),辅助构建过滤表达式。

OK(应用并关闭)

仅显示过滤器支持该功能,点击后将当前选中的过滤器应用到主窗口,并关闭对话框。

Save(保存)

保存当前所有过滤器配置(包括新建、编辑的过滤器),配置文件会存储在 Wireshark 的用户配置目录中。注意:仅点击“OK”或“Apply”不会保存过滤器,关闭 Wireshark 后未保存的配置会丢失

Close(关闭)

关闭对话框,放弃所有未保存的配置。

6.7 查找包

通过“查找包”功能可快速定位符合特定条件的数据包,支持按显示过滤、十六进制值、字符串等方式查找。

打开查找对话框

选择菜单“Edit->Find Packet…”,打开“Find Packet”对话框(图 6.8)。

图 6.8 “Find Packet / 查找包”对话框

查找方式配置

Display filter(显示过滤查找)

在“Filter”输入框中输入显示过滤表达式,选择查找方向后点击“Find”,即可查找符合条件的数据包。例如:

  • 查找 192.168.0.1 发起的 TCP 三次握手的 SYN 包,表达式为 ip.addr == 192.168.0.1 and tcp.flags.syn
Hex Value(十六进制值查找)

在输入框中输入十六进制字符串(如 00:00),查找数据包原始字节中包含该序列的包。

String(字符串查找)

在输入框中输入字符串,可选择匹配方式(如区分大小写、全字匹配),查找数据包中包含该字符串的包。

查找方向

  • Up:向上查找(包编号递减方向);
  • Down:向下查找(包编号递增方向)。

快捷查找命令

  • Find Next:按上次的查找配置继续查找下一个匹配的数据包;
  • Find Previous:按上次的查找配置反向查找上一个匹配的数据包。

6.8 跳转到指定的包

通过“Go”菜单可快速跳转到包列表中的特定位置,支持按编号、历史记录、关联包等方式跳转。

6.8.1 基于历史记录跳转

  • Go Back:返回上一次浏览的数据包(类似浏览器的后退功能);
  • Go Forward:前进到下一次浏览的数据包(类似浏览器的前进功能)。

6.8.2 按编号跳转

选择菜单“Go->Go to Packet…”,打开“Go to packet”对话框(图 6.9),输入目标数据包的编号,点击“OK”即可跳转到该包。

图 6.9 “Go to packet / 转到指定包”对话框

6.8.3 跳转到关联包

选择菜单“Go->Go to Corresponding Packet…”,可跳转到与当前选中字段相关联的数据包(如 TCP 确认包对应的原始数据报、DNS 响应包对应的请求包)。

快捷操作:包详情面板中,关联字段会以超链接形式显示,双击该字段也可直接跳转。

6.8.4 跳转到首尾包

  • Go to First Packet:跳转到包列表中的第一个数据包;
  • Go to Last Packet:跳转到包列表中的最后一个数据包。

6.9 标记包

标记包功能可在包列表面板中为重要数据包添加标记(标记后背景色为黑色),便于在大型包文件中快速识别和定位。

注意事项

  • 包标记仅保存在当前会话中,关闭文件后标记会丢失,不会存储在捕捉文件中;
  • 标记后的数据包可用于控制保存、导出、打印的范围(见 5.8 节 “包范围选项”)。

标记操作

通过“Edit”菜单可执行以下标记操作:

  • Mark Packet (toggle):标记或取消标记当前选中的单个数据包(包列表面板右键菜单也支持该操作);
  • Mark All Packets:标记包列表中的所有数据包;
  • Unmark All Packets:取消所有数据包的标记。

6.10 时间显示格式及参考时间

每个数据包在捕捉时都会记录时间戳,时间戳会存储在捕捉文件中,用于分析数据包的时间顺序和间隔。时间戳的显示格式和精度可自定义,同时支持设置时间参考点简化间隔计算。

时间显示格式

通过菜单“View->Time Display Format”可选择以下时间显示格式:

  • Date and Time of Day:绝对日期和时间(如 1970-01-01 01:02:03.123456);
  • Time of Day:绝对时间(如 01:02:03.123456);
  • Seconds Since Beginning of Capture:相对于捕捉开始时间或最后一个时间参考点的秒数(如 123.123456);
  • Seconds Since Previous Captured Packet:相对于前一个捕捉数据包的时间间隔(如 1.123456);
  • Seconds Since Previous Displayed Packet:相对于前一个显示数据包的时间间隔(过滤后生效,如 1.123456)。

时间精度设置

通过菜单“View->Time Display Precision”可选择时间戳的显示精度:

  • Automatic:使用捕捉文件格式原生的时间戳精度(默认选项);
  • Seconds/Centiseconds/Milliseconds/Microseconds/Nanoseconds:强制使用指定精度,不足部分补 0,超出部分截断。

示例:若原始时间戳为 1.123456(微秒精度),选择“Nanoseconds”精度后显示为 1.123456000;选择“Seconds”精度后显示为 1。

6.10.1 时间参考设置

时间参考是自定义的时间起点,设置后所有后续数据包的时间戳都会相对于该参考点计算,便于分析特定事件后的时间间隔(如某一请求发起后的响应时间)。

注意事项
  • 时间参考仅保存在当前会话中,关闭文件后会丢失;
  • 仅当时间显示格式为“Seconds Since Beginning of Capture”时,时间参考的效果最明显。
时间参考操作

通过“Edit->Time Reference”菜单或包列表面板右键菜单可执行以下操作:

  • Set Time Reference (toggle):为当前选中的数据包设置或取消时间参考;
  • Find Next:查找下一个设置了时间参考的数据包;
  • Find Previous:查找上一个设置了时间参考的数据包。

设置时间参考的数据包,其时间列会显示“REF”标记(图 6.10),后续数据包的时间戳均以该包为起点计算。

图 6.10 时间参考举例


[16] 十六进制转储中,190 对应的十六进制值为 0xBE,在字节面板中会显示为“BE”(十六进制)和对应的 ASCII 字符(若为可打印字符)。

第 7 章 高级特性

7.1 概述

本章将详细介绍 Wireshark 的若干高级功能,这些功能适用于复杂网络场景下的数据包分析,包括流数据提取、时间戳精细控制、时区处理、数据包合并、名称解析优化及校验和验证等。

7.2 “Follow TCP Stream” 功能

当分析 TCP 协议时,若需查看应用层数据(如 Telnet 密码、HTTP 响应内容)或提取完整通信流,可使用 “Follow TCP Stream” 功能。该功能会自动生成显示过滤器,筛选目标 TCP 流的所有数据包,并以可读格式展示流数据。

操作方式

  1. 在包列表面板选中任意一个目标 TCP 数据包;
  2. 通过以下方式触发功能:
  • 工具栏菜单:Analyze -> Follow TCP Stream
  • 右键菜单:选中数据包后右键单击,选择 Follow TCP Stream

执行后,Wireshark 会自动应用过滤规则(仅显示该 TCP 流的数据包),并弹出流数据查看对话框(图 7.1)。

图 7.1 “Follow TCP Stream” 对话框

对话框功能说明

流数据显示规则
  • 数据顺序与网络传输顺序一致;
  • 双向通信区分颜色:A 到 B 的数据标记为红色,B 到 A 的数据标记为蓝色(可通过 Edit -> Preferences -> Colors 自定义颜色);
  • 非打印字符显示为圆点(.)。
操作选项
  1. Save As:以当前选择的格式保存流数据;
  2. Print:以当前格式打印流数据;
  3. Direction:选择流显示方向:
  • Entire conversation:显示完整双向通信;
  • Data from A to B only:仅显示 A 到 B 的数据;
  • Data from B to A only:仅显示 B 到 A 的数据;
  1. Filter out this stream:应用过滤规则,排除当前 TCP 流的所有数据包;
  2. Close:关闭对话框,移除当前流的显示过滤规则。
数据格式选择

支持多种格式查看流数据,适配不同协议类型:

  1. ASCII:适用于基于 ASCII 的协议(如 HTTP、Telnet);
  2. EBCDIC:适用于 IBM 大型机相关协议;
  3. HEX Dump:十六进制转储格式,显示所有原始数据,适用于二进制协议;
  4. C Arrays:以 C 语言数组格式导出,便于导入自定义程序;
  5. RAW:原生二进制格式,“Save As” 时保存为二进制文件,可用于第三方工具进一步分析。

7.3 时间戳机制

时间戳是数据包捕捉时记录的时间信息,用于分析数据包的时序关系和间隔。Wireshark 的时间戳处理涉及来源、格式转换、精度控制等多个方面,以下详细说明。

7.3.1 时间戳来源

  • 实时捕捉时:Wireshark 通过 libpcap(Windows 平台为 WinPcap)库从操作系统内核获取时间戳;
  • 读取捕捉文件时:时间戳直接从文件中提取,无需重新生成。

7.3.2 Wireshark 内置时间格式

Wireshark 内置时间戳格式为:

  • 日期:从 1970-01-01(Unix 时间戳起始点)开始计算;
  • 时间:精确到纳秒(10⁻⁹ 秒),格式为 日期 时间.纳秒(如 1970-01-01 00:00:00.123456789)。

用户可通过 View -> Time Display Format 自定义显示格式(见 6.10 节),Wireshark 会自动在内部格式与显示格式之间转换。

7.3.3 捕捉文件格式的时间戳精度

不同捕捉文件格式支持的时间戳精度不同,常见格式如下:

捕捉文件格式时间戳精度说明
libpcap微秒(10⁻⁶ 秒)Wireshark 默认格式,固定精度为 6 位小数
pcapng纳秒(10⁻⁹ 秒)支持可变精度,可存储精度信息
Microsoft Network Monitor毫秒(10⁻³ 秒)精度较低,仅支持 3 位小数

注意:若将高精度时间戳(如纳秒)保存到低精度格式(如 libpcap),多余的精度会被截断,导致数据丢失。

7.3.4 时间戳准确性

Wireshark 本身不生成时间戳,准确性完全依赖捕捉系统(操作系统、硬件性能、网卡类型等),需注意以下几点:

  • USB 网卡的时间戳精度较差:数据包需经过 USB 总线传输到内核后才打时间戳,传输延迟会导致误差;
  • 高性能场景建议使用有线网卡:PCIe 接口网卡的时间戳延迟远低于 USB 网卡;
  • 系统时间同步:需确保捕捉设备的系统时间准确(可通过 NTP 协议同步),否则时间戳基准会偏移。

7.4 时区处理

时区问题主要影响跨时区捕捉文件的分析,要理解 UTC 时间与本地时间的转换逻辑。以下从时区基础、计算机时区设置、Wireshark 时区适配三方面说明。

7.4.1 时区与夏令时基础

时区(Time Zone)
  • 定义:地球按经度划分为 24 个时区,每个时区的本地时间基于 UTC(协调世界时)偏移计算,偏移范围为 -12:00 至 +14:00(如北京时区为 UTC+8);
  • 作用:使本地时间与日出日落周期匹配,避免全球统一时间导致的作息混乱;
  • 参考资料:
    时区维基百科
    https://en.wikipedia/wiki/time_zone
    UTC 维基百科
    https://en.wikipedia/wiki/Coordinated_Universal_Time
夏令时(Daylight Saving Time, DST)
  • 定义:部分国家在夏季将时间调快 1 小时(少数地区为 2 小时),以充分利用白昼时间;
  • 影响:夏令时期间,时区偏移会增加 1 小时(如柏林冬季为 UTC+1,夏季为 UTC+2);
  • 参考资料:
    夏令时维基百科
    https://en.wikipedia/wiki/Daylight_saving

7.4.2 计算机时区正确设置

跨时区分析时,需按以下步骤设置计算机时区:

  1. 优先设置时区:在操作系统中选择正确的时区(如北京时区为“Asia/Shanghai”);
  2. 同步系统时间:通过 NTP 协议(参考 NTP 官方网站)同步系统时间,确保 UTC 基准准确;
  3. 旅行时的调整:仅修改时区,无需手动调整本地时间,系统会自动转换 UTC 为新时区的本地时间。

7.4.3 Wireshark 与时区的交互逻辑

Wireshark 对时区的处理依赖捕捉文件格式和系统时区设置,规则如下:

1. 捕捉文件的时间戳存储格式
  • UTC 存储格式:libpcap、Sniffer、EtherPeek 等格式,时间戳以 UTC 存储,不随时区变化;
  • 本地时间存储格式:Microsoft Network Monitor、Dos-based Sniffer 等格式,时间戳以捕捉设备的本地时间存储。
2. Wireshark 的时间转换与显示
  • 读取 UTC 存储的文件:Wireshark 自动将 UTC 转换为当前计算机的本地时间显示;
  • 读取本地时间存储的文件:Wireshark 先将文件中的本地时间转换为 UTC,再转换为当前计算机的本地时间显示;
  • 跨时区分析示例:
    若在洛杉矶(UTC-8)捕捉一个数据包,本地时间为 02:00,文件中存储的 UTC 时间为 10:00;
    在柏林(UTC+1)打开该文件时,Wireshark 会将 UTC 10:00 转换为柏林本地时间 11:00 显示。
3. 注意事项
  • 跨时区协作时,建议统一以 UTC 时间沟通,避免本地时间差异导致误解;
  • 若捕捉文件的时间显示异常,需检查:
  • 捕捉设备的时区和系统时间是否正确;
  • 当前分析设备的时区设置是否准确;
  • 捕捉文件的存储格式(UTC 或本地时间)。

7.5 数据包合并(Reassembling)

7.5.1 合并的定义

网络传输中,较大的数据块可能被底层协议分割为多个数据包(如 TCP 分段、IP 分片)。数据包合并是指 Wireshark 按协议规则,将分割的数据包重组为原始数据块,便于分析应用层内容。

术语说明:不同协议层的合并可能有不同名称(如 TCP 分段重组、IP 分片重组、HTTP 实体合并),Wireshark 中统一称为“合并(Reassembling)”。

7.5.2 Wireshark 合并操作

合并触发条件
  • 协议支持:需底层协议(如 TCP)和高层协议(如 HTTP)均启用合并功能;
  • 默认配置:Wireshark 从 2005 年 9 月版本起,默认启用大多数协议的合并功能;若为早期版本升级,需手动检查偏好设置。
合并结果查看

合并后的完整数据会显示在包字节面板的附加选项卡中(图 7.2),规则如下:

  • 合并结果仅在数据块的最后一个数据包中显示;
  • 多层协议合并时,会生成多个附加选项卡(如 TCP 分段重组后生成“TCP Segment Data”,HTTP 合并后生成“Uncompressed entity body”)。

图 7.2 带有合并数据选项卡的包字节面板

合并功能配置

通过 Edit -> Preferences -> Protocols 配置特定协议的合并功能:

  • 底层协议(如 TCP):需启用“Allow TCP reassembly”;
  • 高层协议(如 HTTP):需启用“Reassemble HTTP bodies spanning multiple TCP segments”;
  • 配置提示:高层协议的合并设置会提示是否依赖底层协议的合并功能,需确保多层协议配置一致。

7.6 名称解析(Name Resolution)

名称解析是将数字标识(如 MAC 地址、IP 地址、端口号)转换为人类可读格式(如设备名、域名、服务名)的过程,Wireshark 支持多协议层的名称解析,可通过系统服务或配置文件实现。

7.6.1 名称解析的优缺点

优点
  • 简化分析:通过域名、服务名快速识别通信对象(如将 80 端口解析为 HTTP);
  • 提高效率:避免记忆复杂的数字标识。
缺点
  • 可用性依赖外部服务:DNS 服务器不可用时,IP 地址解析失败;
  • 解析结果不持久化:解析结果未存储在捕捉文件中,重新打开或在其他设备上打开时可能无法重复解析;
  • 产生额外数据包:DNS 解析过程会生成新的网络请求,可能干扰捕捉结果;
  • 缓存过时问题:Wireshark 会缓存解析结果,若网络配置变化(如 DHCP 租约更新),需手动刷新。

刷新方法:选择 View -> Reload 重建包列表,应用最新的解析结果(捕捉过程中刷新无效)。

7.6.2 各协议层的名称解析逻辑

1. 以太网(MAC 层)名称解析

目标:将 MAC 地址(如 00:09:5b:01:02:03)转换为可读格式,优先级如下:

  • ARP 解析(系统服务):向操作系统查询 MAC 地址对应的 IP 地址;
  • Ethers 文件解析:读取用户指定的 ethers 文件(格式:MAC 地址 设备名),如 00:09:5b:01:02:03 homerouter
  • 厂商代码解析:提取 MAC 地址前 3 字节(IEEE 分配的厂商标识),匹配 manuf 文件中的厂商名缩写(如 00:09:5b 对应 Netgear)。
2. IP 层名称解析

目标:将 IP 地址(如 216.239.37.99)转换为域名或主机名,优先级如下:

  • DNS/ADNS 解析(系统/库服务):
  • DNS:通过 gethostbyname() 函数查询,先检查本地 hosts 文件(如 Windows 路径:C:\Windows\System32\drivers\etc\hosts),再查询 DNS 服务器,阻塞等待结果;
  • ADNS(异步 DNS):非阻塞解析,避免 DNS 服务器不可用时的卡顿,解析结果缓存后需手动刷新;
  • Hosts 文件解析:直接读取 hosts 文件中的 IP-主机名映射(如 216.239.37.99 www.google)。

警告:若 DNS 服务器不可用,启用同步 DNS 解析会导致 Wireshark 响应缓慢,建议优先使用 ADNS。

3. IPX 层名称解析

通过 ipxnets 文件实现 IPX 网络号与名称的映射(需用户手动配置该文件)。

4. TCP/UDP 端口解析(传输层)

目标:将端口号(如 80)转换为服务名,优先级如下:

  • 系统服务解析:查询操作系统的 services 文件(如 Linux 路径:/etc/services),映射端口号与服务名(如 80 -> HTTP);
  • 内置服务映射:Wireshark 内置常用端口的服务名映射,若 services 文件未定义,使用内置映射。

7.6.3 名称解析配置

通过 Edit -> Preferences -> Name Resolution 启用/禁用各协议层的名称解析:

  • 勾选对应选项:Resolve MAC addressesResolve IP addressesResolve TCP/UDP ports 等;
  • 指定配置文件路径:设置 ethershostsmanuf 等文件的自定义路径。

7.7 校验和(Checksum)验证

校验和是网络协议中用于验证数据完整性的数值,通过对数据部分进行算法计算得到(如 CRC32、IP 校验和)。发送方将数据与校验和一同传输,接收方重新计算校验和并对比,判断数据是否在传输过程中出错。

7.7.1 校验和的作用与局限性

作用
  • 检测传输错误:如数据位翻转、字节丢失、重复等;
  • 保障数据完整性:部分协议(如 TCP)会丢弃校验和不匹配的数据包,或触发重传。
局限性
  • 无法检测所有错误:任何校验和算法都存在极小的漏检概率;
  • 不提供加密:仅验证完整性,不防止数据被篡改(需配合加密协议如 TLS)。

7.7.2 Wireshark 校验和验证

验证逻辑

Wireshark 模拟接收方的校验和计算过程,对支持的协议(如 IP、TCP、UDP、ICMP)进行校验和验证,并在包详情面板标注结果:

  • 校验和正确:显示 [correct]
  • 校验和错误:显示 [invalid, must be 0x12345678](其中 0x12345678 为预期校验和)。
校验和验证与数据包合并的关系

若校验和验证发现错误,Wireshark 会禁用该数据包的合并功能,避免错误数据干扰重组结果。

7.7.3 校验和卸载(Checksum Offloading)问题

问题描述

现代网卡支持校验和卸载功能:由网卡硬件计算 TCP/IP 校验和,而非操作系统内核。此时,Wireshark 在捕捉数据包时,校验和字段尚未被硬件填充(可能为空或为无效值),导致 Wireshark 误判为校验和错误。

解决方法
  1. 关闭网卡校验和卸载:
  • Windows 平台:设备管理器 -> 网络适配器 -> 目标网卡属性 -> 高级 -> 禁用“TCP/IP 校验和卸载”;
  • Linux 平台:通过 ethtool 命令禁用(如 ethtool -K eth0 tx-checksumming off);
  1. 禁用 Wireshark 特定协议的校验和验证:
  • 选择 Edit -> Preferences -> Protocols
  • 找到对应协议(如 TCP、IP),取消勾选 Validate checksum 选项。

注意:禁用校验和验证后,Wireshark 不再标注校验和错误,需手动结合业务场景判断数据完整性。


[17] 注:部分高端网卡支持硬件时间戳功能,可在数据包接收时直接打上高精度时间戳,减少操作系统内核传输延迟导致的误差。
[18] 注:TCP/UDP 端口解析是将数字端口号转换为对应的服务名(如 443 -> HTTPS)。
[19] 注:不同网卡厂商的驱动界面可能略有差异,“校验和卸载”选项的名称可能为“TCP 校验和卸载”“IP 校验和卸载”等,需根据实际界面调整。

第 8 章 统计功能

8.1 概述

Wireshark 提供多样化的网络统计功能,涵盖捕捉文件基础信息统计、协议分布分析、端点与会话统计、流量时序图表、服务响应时间计算等场景,可辅助用户从宏观到微观层面分析网络行为。

统计功能分类如下:

  • 通用统计:捕捉文件摘要、协议层次结构、端点统计、会话统计、IO 图表;
  • 协议特定统计:服务响应时间、各类协议专属统计(如 DCE-RPC、SMB 等)。

注意:协议特定统计功能需结合对应协议的技术细节理解,若对目标协议不熟悉,统计结果可能难以解读。

8.2 摘要窗口(Summary)

摘要窗口展示当前捕捉文件的信息,涵盖文件属性、时间范围、捕捉配置、显示状态及流量统计,是快速了解捕捉数据概况的入口。

图 8.1 “Summary” 窗口

窗口分为以下模块:

  1. File(文件信息):捕捉文件的路径、大小、格式等属性;
  2. Time(时间范围):第一个数据包与最后一个数据包的捕获时间戳,以及捕捉持续时长;
  3. Capture(捕捉配置):捕捉使用的接口、捕捉过滤器、快照长度(Snaplen)等参数(仅实时捕捉的文件显示);
  4. Display(显示状态):当前应用显示过滤器后的数据包数量、被过滤掉的数据包数量;
  5. Traffic(流量统计)
  • 若未应用显示过滤,仅显示 Captured 列(所有数据包的统计数据);
  • 若已应用显示过滤,同时显示 Captured 列(原始数据)和 Displayed 列(过滤后数据);
  • 统计指标包括数据包总数、字节总数、平均速率(MBit/s)等。

8.3 协议层次结构窗口(Protocol Hierarchy)

协议层次结构窗口以树状结构展示捕捉文件中所有协议的分布情况,按网络分层模型(如数据链路层、网络层、传输层、应用层)组织,支持展开/折叠分支查看细分协议。

图 8.2 “Protocol Hierarchy” 窗口

列含义说明

列名描述
Protocol协议名称(按分层结构排列,如 Ethernet -> IP -> TCP -> HTTP)
% Packets该协议对应的数据包占总数据包的百分比
Packets该协议对应的数据包总数
Bytes该协议对应的数据包总字节数
MBit/s该协议的平均传输速率(基于捕捉持续时长计算)
End Packets仅在应用显示过滤时生效,过滤后该协议对应的数据包数
End Bytes仅在应用显示过滤时生效,过滤后该协议对应的字节总数
End MBit/s仅在应用显示过滤时生效,过滤后该协议的平均传输速率

统计规则说明

注意 1:一个数据包可能包含多个协议(如 Ethernet 帧封装 IP 数据包,IP 数据包又封装 TCP 段),因此各协议的 % Packets 之和可能超过 100%(例如图中 IP 协议占 99.17%,TCP 协议占 85.83%)。

注意 2:高层协议的统计范围可能小于底层协议。例如 TCP 协议占比 85.83%,但基于 TCP 的应用层协议(如 HTTP)占比可能更低,原因是 TCP ACK 包、SYN 包等控制包不包含应用层数据,不会被统计到高层协议中。

注意 3:部分协议可能在一个数据包中出现多次(如 IP 隧道封装场景,外层 IP 头与内层 IP 头),此时该协议会被多次计数。

8.4 端点统计窗口(Endpoints)

端点统计窗口按协议层列出网络通信中的所有逻辑端点(如 MAC 地址、IP 地址、TCP/UDP 端口),并统计每个端点的通信量。类似其他网络工具中的“主机列表(Hostlist)”功能。

8.4.1 端点的定义

网络端点是特定协议层的通信标识,不同协议层的端点定义不同:

协议层端点标识说明
EthernetMAC 地址如 00:09:5b:01:02:03
Fibre ChannelFibre Channel 地址未详细描述
FDDIFDDI MAC 地址光纤分布式数据接口的物理地址
IPv4IPv4 地址如 192.168.0.1
IPXIPX 地址未详细描述
TCPIP 地址 + TCP 端口如 192.168.0.1:80(同一 IP 地址不同端口为不同端点)
Token RingToken Ring MAC 地址令牌环网络的物理地址
UDPIP 地址 + UDP 端口如 192.168.0.1:53(同一 IP 地址不同端口为不同端点)

广播/多播端点说明:广播(如 Ethernet 广播地址 ff:ff:ff:ff:ff:ff)和多播通信会被单独统计为虚拟端点,实际数据会被所有相关单播端点接收。

8.4.2 端点统计窗口操作

图 8.3 “Endpoints” 窗口

窗口布局
  • 选项卡:每个支持的协议层对应一个选项卡,标签显示该层的端点数量(如 “Ethernet :5” 表示捕获到 5 个以太网端点);未捕获到端点的协议层选项卡为灰色,仍可查看空列表。
  • 列表内容:每行显示一个端点的统计数据,包括端点标识、数据包数、字节数、速率等。
名称解析功能

勾选窗口底部的 Name resolution 选项,可对当前协议层的端点标识进行名称解析:

  • 以太网层:MAC 地址前 3 字节解析为厂商名(如 Netgear)、通过 ARP 解析为 IP 地址、广播地址解析为 “Broadcast”;
  • IP 层:IP 地址解析为域名(通过 DNS)或主机名(通过 hosts 文件);
  • TCP/UDP 层:端口号解析为服务名(如 80 解析为 HTTP)。
实时更新支持

若在实时捕捉过程中打开该窗口,端点统计数据会随新数据包的捕获实时更新,便于监控网络中的活跃端点。

8.4.3 协议特定端点列表窗口(Protocol-Specific Endpoint List)

Before the combined window described above was available, each of its pages were shown as separate windows. Even though the combined window is much more convenient to use, these separate windows are still available. The main reason is, they might process faster for very large capture files. However, as the functionality is exactly the same as in the combined window, they won’t be discussed in detail here.

在上述合并窗口推出之前,各协议层的端点统计以独立窗口形式呈现。尽管合并窗口使用更便捷,但这些独立窗口仍被保留,主要原因是其在处理超大捕捉文件时可能具有更快的处理速度。由于其功能与合并窗口完全一致,本节不再详细说明。

8.5 会话统计窗口(Conversations)

会话统计窗口按协议层列出两个端点之间的通信会话(如两个 IP 地址之间的所有通信、两个 TCP 端口之间的连接),并统计每个会话的通信量。

8.5.1 会话的定义

网络会话指特定协议层中两个端点之间的双向通信集合。例如:

  • IP 会话:由源 IP 地址和目标 IP 地址唯一标识,包含二者之间的所有 IP 数据包;
  • TCP 会话:由源 IP:端口和目标 IP:端口唯一标识,包含该连接的所有 TCP 段(如三次握手、数据传输、四次挥手)。

8.5.2 会话统计窗口操作

图 8.4 “Conversations” 对话框

会话窗口的布局、选项卡设计、名称解析功能与端点窗口基本一致,区别在于:

  • 端点窗口聚焦“单个通信节点”的统计;
  • 会话窗口聚焦“两个节点之间的通信链路”的统计。

例如,在 TCP 会话选项卡中,每行显示一条 TCP 连接(如 192.168.0.1:80 ↔ 192.168.0.2:54321),并统计该连接的数据包数、字节数、往返时间等指标。

8.5.3 协议特定会话列表窗口(Protocol-Specific Conversation List)

Before the combined window described above was available, each of its pages were shown as separate windows. Even though the combined window is much more convenient to use, these separate windows are still available. The main reason is, they might process faster for very large capture files. However, as the functionality is exactly the same as in the combined window, they won’t be discussed in detail here.

在上述合并窗口推出之前,各协议层的会话统计以独立窗口形式呈现。尽管合并窗口使用更便捷,但这些独立窗口仍被保留,主要原因是其在处理超大捕捉文件时可能具有更快的处理速度。由于其功能与合并窗口完全一致,本节不再详细说明。

8.6 IO 图表窗口(IO Graphs)

IO 图表窗口允许用户自定义流量时序图表,通过可视化方式展示数据包数量、字节数、速率等指标随时间的变化趋势,支持同时配置 5 个不同维度的图表。

图 8.5 “IO Graphs” 窗口

配置选项说明

1. Graphs(图表配置)
  • Graph 1-5:启用/禁用对应图表(默认仅启用 Graph 1);
  • Color:图表颜色(系统预设,不可修改);
  • Filter:为当前图表指定显示过滤器,仅符合条件的数据包会被纳入统计(如 tcp.port == 80 仅统计 HTTP 流量);
  • Style:图表样式:
  • Line:折线图(默认);
  • Impulse:脉冲图(每个时间刻度显示一个垂直线段);
  • FBar:填充柱状图(每个时间刻度显示一个填充矩形)。
2. X Axis(X 轴配置)
  • Tick interval:X 轴每个刻度代表的时间间隔(可选 10s、1s、0.1s、0.01s、0.001s);
  • Pixels per tick:X 轴每个刻度占用的像素数(可选 10px、5px、2px、1px),影响图表的横向分辨率。
3. Y Axis(Y 轴配置)
  • Unit:Y 轴统计单位:
  • Packets/Tick:每个时间刻度的数据包数;
  • Bytes/Tick:每个时间刻度的字节数;
  • Bits/Tick:每个时间刻度的比特数;
  • Advanced:高级配置(支持自定义统计公式,如计算数据包平均大小);
  • Scale:Y 轴的刻度范围(可选 10、20、50、100、200、500 等),自动适配数据最大值。

8.7 服务响应时间(Service Response Time, SRT)

服务响应时间指从客户端发送请求到收到服务器响应的时间间隔,是评估网络服务性能的关键指标。Wireshark 支持对多种协议的服务响应时间进行统计。

支持的协议

  • DCE-RPC、Fibre Channel、H.225 RAS、LDAP、MGCP、ONC-RPC、SMB 等。

注意:Windows 平台下,不同协议的服务响应时间统计操作流程基本一致(或仅有细微差异)。本节以 DCE-RPC 协议为例进行说明。

8.7.1 DCE-RPC 服务响应时间窗口

DCE-RPC(Distributed Computing Environment - Remote Procedure Call)协议的服务响应时间,即客户端发起 RPC 请求到收到服务器 RPC 响应的时间间隔。

步骤 1:打开统计窗口

选择 Statistics -> Service Response Time -> DCE-RPC,弹出“Compute DCE-RPC statistics”窗口(图 8.6)。

图 8.6 “Compute DCE-RPC statistics” 窗口

步骤 2:配置过滤条件

在窗口中输入显示过滤器(如 dcerpc.opnum == 0),仅统计符合条件的 DCE-RPC 数据包,点击“Create Stat”生成统计结果。

步骤 3:查看统计结果

统计结果窗口(图 8.7)展示选定 DCE-RPC 接口的每个方法的响应时间统计:

  • 每行对应接口的一个方法(如 EPM 接口 v3 包含 7 个方法);
  • 统计指标包括:调用次数(Calls)、最小响应时间(Min)、最大响应时间(Max)、平均响应时间(Avg)、响应时间标准差(Std Dev)等。

图 8.7 “DCE-RPC Statistic for …” 窗口

Each row corresponds to a method of the interface selected (so the EPM interface in version 3 has 7 methods). For each method the number of calls, and the statistics of the SRT time is calculated.

每行对应选定接口的一个方法(例如版本 3 的 EPM 接口包含 7 个方法)。系统会为每个方法计算调用次数及服务响应时间的相关统计指标(如最小、最大、平均响应时间等)。

8.8 协议特定统计窗口(Protocol-Specific Statistics)

The protocol specific statistics windows display detailed information of specific protocols and might be described in a later version of this document. Some of these statistics are described at the <https://wiki.wireshark/Statistics pages.

协议特定统计窗口展示特定协议的详细信息,相关内容可能在本文档的后续版本中补充说明。部分统计功能的详细介绍可参考 Wireshark Wiki 页面:<https://wiki.wireshark/Statistics。

协议特定统计窗口针对不同协议提供定制化统计功能(如 HTTP 协议的请求方法统计、DNS 协议的查询类型统计),需结合具体协议的特性使用。如需了解某一协议的统计细节,建议参考上述 Wiki 链接或协议官方文档。

第 9 章 个性化 Wireshark

前言

本章 9.6 节及后续内容所描述的功能,在译者使用的 Wireshark 0.99.5 版本中未找到对应实现。

9.1 概述

Wireshark 的默认配置通常能满足多数用户的使用习惯,但在熟练掌握其基础操作后,可通过个性化设置进一步适配特定需求。本章将介绍以下内容:

  • 命令行启动 Wireshark 的方法;
  • 数据包列表的颜色规则配置;
  • 协议解码的自定义控制;
  • 各类首选项的详细设置。

9.2 命令行启动 Wireshark

Wireshark 支持通过命令行启动,同时兼容多数窗口管理软件的图形化启动方式。命令行启动提供丰富的参数选项,可实现捕捉配置、文件读取、过滤设置等功能。

9.2.1 查看命令行参数

在命令行中输入 wireshark -h,即可显示完整的参数帮助信息(含版本信息与参数说明)。以下为 Wireshark 0.99.0 版本的帮助信息示例:

Version 0.99.0

Copyright 1998-2006 Gerald Combs <gerald@wireshark> and contributors.

Compiled with GTK+ 2.6.9, with GLib 2.6.6, with WinPcap (version unknown),
with libz 1.2.3, with libpcre 6.4, with Net-SNMP 5.2.2, with ADNS, with Lua 5.1.

Running with WinPcap version 3.1 (packet.dll version 3, 1, 0, 27), based on
libpcap version 0.9 [.x] on Windows XP Service Pack 2, build 2600.

wireshark [ -vh ] [ -DklLnpQS ] [ -a <capture autostop condition> ] ...
[ -b <capture ring buffer option> ] ...
[ -B <capture buffer size> ]
[ -c <capture packet count> ] [ -f <capture filter> ]
[ -g <packet number> ] [ -i <capture interface> ] [ -m <font> ]
[ -N <name resolving flags> ] [ -o <preference/recent setting> ] ...
[ -r <infile> ] [ -R <read (display) filter> ] [ -s <capture snaplen> ]
[ -t <time stamp format> ] [ -w <savefile> ] [ -y <capture link type> ]
[ -X <eXtension option> ] [ -z <statistics> ] [ <infile> ]

9.2.2 参数说明

以下按字母顺序详细介绍各命令行参数的功能:

1. -a <capture autostop condition>

设置捕捉自动停止条件,格式为 test:value,支持以下条件类型:

  • duration:value:捕捉持续时间超过 value 秒后停止;
  • filesize:value:捕捉文件大小达到 value 千字节(1 千字节 = 1000 字节)后停止;若与 -b 参数配合使用,将切换至下一个文件继续捕捉;
  • files:value:捕捉文件数量达到 value 个后停止。
2. -b <capture ring buffer option>

启用环形缓冲区模式,捕捉数据分散存储至多个文件,支持以下配置:

  • duration:value:每 value 秒切换至下一个文件(无论当前文件是否写满);
  • filesize:value:当前文件大小达到 value 千字节后切换至下一个文件;
  • files:value:文件数量达到 value 个后,覆盖第一个文件重新写入(value=0 表示无文件数限制)。
3. -B <capture buffer size (Win32 only)>

仅适用于 Windows 平台,设置捕捉缓冲区大小(单位:MB,默认 1MB)。缓冲区用于临时存储捕捉到的数据包,若捕捉时出现丢包,可尝试增大该值。

4. -c <capture packet count>

指定实时捕捉的最大数据包数量,通常与 -k 参数配合使用。

5. -D

打印可用于捕捉的网络接口列表,每个接口将显示编号、名称及描述。接口编号或名称可作为 -i 参数的值,适用于无 ifconfig -a 命令的平台(如 Windows)或接口名称复杂的场景。

注意:若当前用户无捕捉权限(如非 root 或 Administrators 组用户),该参数可能不显示任何接口。

6. -f <capture filter>

设置捕捉过滤器表达式(语法与 Wireshark 图形化界面的捕捉过滤器一致),仅捕捉符合条件的数据包。

7. -g <packet number>

读取捕捉文件(-r 参数指定)后,直接跳转到编号为 packet number 的数据包。

8. -h

显示命令行参数帮助信息并退出。

9. -i <capture interface>

指定捕捉接口或管道:

  • 网络接口:名称需与 -D 参数输出一致,或使用接口编号;UNIX 平台可使用 netstat -iifconfig -a 查看的接口名;

  • 管道:支持命名管道(FIFO)或标准输入(使用 - 表示),输入数据需为标准 libpcap 格式。

    默认行为:未指定时,Wireshark 自动选择第一个非环回接口;若无则选择环回接口;无可用接口时报错退出。

10. -k

启动后立即开始捕捉,需与 -i 参数配合使用(指定捕捉接口)。

11. -l

启用自动滚屏功能,捕捉过程中有新数据包时,数据包列表面板自动滚动至最新条目(与 -S 参数功能一致)。

12. -m <font>

设置 Wireshark 界面显示字体(需指定字体名称及格式,如 Courier New:10)。

13. -n

禁用所有网络对象名称解析(如 TCP/UDP 端口名、主机名)。

14. -N <name resolving flags>

精细化控制名称解析类型,参数为字符串组合:

  • m:启用 MAC 地址解析;
  • n:启用网络地址(IP)解析;
  • t:启用传输层端口解析;
  • C:启用异步 DNS 查询(避免阻塞)。

    优先级:该参数优先级高于 -n,若同时指定 -n-N,以 -N 为准。

15. -o <preference/recent setting>

设置首选项或近期配置,覆盖默认值或配置文件中的设置,格式为 prefname:valueprefname 为偏好设置项名称,value 为对应值)。支持多个 -o 参数叠加,示例如下:

  • 单个设置:wireshark -o mgcp.display_dissect_tree:TRUE
  • 多个设置:wireshark -o mgcp.display_dissect_tree:TRUE -o mgcp.udp.callagent_port:2627
16. -p

禁用接口的杂收模式(Promiscuous Mode)。但部分情况下接口可能仍处于杂收模式,因此该参数无法保证仅捕捉本机发送/接收的数据包及广播、多播包。

17. -Q

捕捉完成后不自动退出,可与 -c 参数配合使用(捕捉指定数量数据包后保持界面打开)。

18. -r <infile>

指定待读取的捕捉文件,文件格式需为 Wireshark 支持的类型(如 libpcap、pcapng 等)。

19. -R <read (display) filter>

读取文件后应用显示过滤器(语法与图形化界面的显示过滤器一致),仅显示符合条件的数据包。

20. -s <capture snaplen>

设置捕捉快照长度(Snaplen),Wireshark 仅捕捉每个数据包的前 snaplen 字节数据。

21. -S

实时捕捉时立即显示数据包,通过多进程实现捕捉与显示并行(与图形化界面的“实时更新数据包列表”功能一致)。

22. -t <time stamp format>

设置时间戳显示格式,支持以下类型:

  • r:相对时间(相对于第一个数据包的时间差);
  • a:绝对时间(不含日期);
  • ad:绝对日期时间(含日期和时间);
  • d:增量时间(相对于前一个数据包的时间差);
  • e:纪元时间(从 1970-01-01 00:00:00 起的秒数)。
23. -v

显示 Wireshark 版本信息并退出。

24. -w <savefile>

指定捕捉数据的保存文件名,文件格式默认为 libpcap(Windows 平台为 pcapng)。

25. -y <capture link type>

指定捕捉的数据链路层类型,取值需为 -L 参数(显示支持的链路类型)输出的有效值,需与 -k 参数配合使用。

26. -X <eXtension option>

向 Wireshark 扩展模块传递参数,格式为 extension_key:value,支持以下扩展:

  • lua_script:lua_script_filename:加载指定的 Lua 脚本。
27. -z <statistics-string>

生成指定类型的统计信息,结果显示在实时更新的窗口中(支持的统计类型包括端点统计、会话统计、IO 图表等)。

9.3 数据包颜色显示设置

数据包颜色显示(Packet Colorization)是 Wireshark 的实用功能,通过配置颜色规则,可按过滤器条件为不同类型的数据包标记颜色,快速识别感兴趣的流量(如 HTTP 请求、ARP 包等)。

参考资源:Wireshark Wiki 提供了丰富的颜色规则示例,详见:<https://wiki.wireshark/ColoringRules。

9.3.1 打开颜色规则对话框

选择 View -> Coloring Rules...,弹出“Coloring Rules”对话框(图 9.1),可查看、编辑、新增或删除颜色规则。

图 9.1 “Coloring Rules” 对话框

9.3.2 颜色规则的应用顺序

注意
颜色规则按列表自上而下的顺序匹配,匹配到第一个符合条件的规则后,不再应用后续规则。
因此,特定协议的规则应排在通用协议规则之前(如 DNS 规则需排在 UDP 规则之前,避免 UDP 规则优先匹配导致 DNS 规则失效)。

9.3.3 新增颜色规则

  1. 点击“Coloring Rules”对话框中的“New”按钮,打开“Edit Color Filter”对话框(图 9.2);
  2. 输入规则名称(如“ARP Packets”)和过滤表达式(如“arp”,语法与显示过滤器一致);
  3. 点击“Foreground color…”或“Background color…”按钮,打开“Choose color”对话框(图 9.3),选择前景色(文字颜色)和背景色;
  4. 点击“OK”保存规则,新规则将添加到规则列表中。

图 9.2 “Edit Color Filter” 对话框

图 9.3 “Choose color” 对话框

注意
选择颜色时,需在色轮旁的颜色条中点击确认,才能将颜色值加载到 RGB 输入框;也可直接输入 RGB 值自定义颜色。

9.3.4 查看颜色规则匹配结果

应用颜色规则后,数据包列表中符合条件的数据包将按设置的颜色显示(图 9.4)。若需确认某个数据包匹配的规则,可查看数据包详情面板中的 [Coloring Rule Name: ...][Coloring Rule String: ...] 字段。

图 9.4 Wireshark 中应用颜色过滤的效果

9.4 协议解码设置

Wireshark 通过解码器(Dissector)解析不同协议的数据包,默认情况下会自动匹配协议与解码器,但部分场景(如协议使用非标准端口)可能需要手动调整解码规则。

9.4.1 启用/禁用协议解码器

通过“Enabled Protocols”对话框,可控制特定协议的解码器是否启用:

  1. 选择 Analyze -> Enabled Protocols...,打开“Enabled Protocols”对话框(图 9.5);
  2. 勾选或取消勾选协议名称前的复选框(或选中协议后按空格键),启用或禁用对应解码器;
  3. 点击“Save”按钮保存设置(OKApply 按钮仅应用当前修改,不保存至配置文件)。

图 9.5 “Enabled Protocols” 对话框

对话框按钮功能
  • Enable All:启用所有协议解码器;
  • Disable All:禁用所有协议解码器;
  • Invert:反转所有协议的启用/禁用状态;
  • OK:应用修改并关闭对话框;
  • Apply:应用修改但不关闭对话框;
  • Save:保存当前设置至配置文件;
  • Cancel:取消修改并关闭对话框。

注意:禁用底层协议解码器后,依赖该协议的高层协议将无法解析。
例如,禁用 IP 协议后,TCP、HTTP 等基于 IP 的协议数据将不会显示。

9.4.2 手动指定协议解码器

当协议使用非标准端口(如 HTTP 协议使用 8000 端口而非默认 80 端口)时,Wireshark 可能无法自动识别,需手动指定解码器:

  1. 在数据包列表中选中目标数据包;
  2. 右键单击,选择 Decode As...,打开“Decode As”对话框(图 9.6);
  3. 在“Link/Network/Transport”选项卡中(选项卡可用性取决于数据包的协议层),选择目标协议层的解码器;
  4. 点击“OK”或“Apply”应用设置。

图 9.6 “Decode As” 对话框

警告:手动指定的解码器设置仅在当前会话有效,退出 Wireshark 后将丢失,无法保存。

对话框按钮功能
  • Decode:按选择的解码器解析数据包;
  • Do not decode:取消当前协议层的解码;
  • Link/Network/Transport:切换不同协议层的解码器设置;
  • Show Current:打开“Decode As: Show”对话框(图 9.7),查看当前所有手动指定的解码器;
  • OK:应用设置并关闭对话框;
  • Apply:应用设置但不关闭对话框;
  • Cancel:取消修改并关闭对话框。

图 9.7 “Decode As: Show” 对话框

9.5 首选项配置

Wireshark 提供丰富的首选项设置,涵盖界面显示、捕捉配置、协议解码等多个维度,可通过以下步骤访问:

  1. 选择 Edit -> Preferences...,打开“Preferences”对话框(图 9.8);
  2. 左侧为树状菜单,点击可切换不同类别的设置页面;
  3. 修改设置后,点击“Save”按钮保存(OKApply 仅应用修改,不保存至配置文件)。

图 9.8 “Preferences” 对话框

注意:首选项设置会持续更新,最新的设置说明可参考 Wireshark Wiki:
https://wiki.wireshark/Preferences
 
警告OKApply 按钮仅应用当前修改,若需永久保存,必须点击 Save 按钮。

对话框按钮功能
  • OK:应用设置并关闭对话框;
  • Apply:应用设置但不关闭对话框;
  • Save:应用设置并保存至配置文件;
  • Cancel:取消所有未保存的修改,恢复至最后一次保存的状态。

9.6 用户表(User Tables)

用户表编辑器用于管理各类自定义参数表,其操作逻辑与 9.3 节“数据包颜色显示设置”类似,支持新增、编辑、删除表项及调整表项顺序。该功能主要用于存储协议解码规则、名称解析映射等自定义配置。

注意:在 Wireshark 0.99.5 版本中未找到该功能的对应实现,可能为后续版本新增特性。

9.7 创建显示过滤宏(Display Filter Macros)

显示过滤宏是复杂过滤表达式的快捷方式,通过定义宏名称与替换文本,可简化重复使用的过滤逻辑。例如,定义宏 tcp_conv 对应过滤表达式:

(ip.src == $1 and ip.dst == $2 and tcp.srcpt == $3 and tcp.dstpt == $4) or (ip.src == $2 and ip.dst == $1 and tcp.srcpt == $4 and tcp.dstpt == $3)

使用时可通过 ${tcp_conv:10.1.1.2;10.1.1.3;1200;1400} 替代完整表达式($1~$4 为参数占位符,使用时按顺序传入具体值)。

宏的管理与使用

  1. 管理入口:通过“用户表”编辑器(9.6 节)中的“Display Filter Macros”选项管理宏;
  2. 宏的字段:
  • name:宏的名称(如 tcp_conv);
  • text:宏的替换文本(含 $1~$n 占位符);
  1. 使用格式:${宏名称:参数1;参数2;...;参数n}(参数顺序需与占位符 $1~$n 对应)。

    译者注:在 Wireshark 0.99.5 版本(Windows + GTK2 环境)中未找到该功能,可能存在版本兼容性或平台限制。

9.8 Tektronics K12xx/15 RF5 协议表

Tektronics K12xx/15 设备生成的 RF5 文件(.rf5)需通过辅助文件(.stk)验证接口协议,Wireshark 不直接读取 .stk 文件,而是通过自定义协议表识别底层协议。该表通过“用户表”编辑器管理,包含以下字段:

  • match.stk 文件名的部分匹配字符串,按列表顺序匹配(特定匹配需排在通用匹配之前);
  • protos:封装协议名称(数据包最底层协议),格式支持:
  • 单个协议名(如 mtp2eth_withoutfcs);
  • 封装协议与应用层协议组合(如 sscop:sscf-nnisscop:alcap)。

9.9 用户 DLTs 协议表

当 pcap 文件使用用户定义的数据链路类型(DLTs,编号 147~162)时,Wireshark 通过该表映射 DLT 编号与对应协议。表项通过“用户表”编辑器管理,包含以下字段:

  • encap:用户 DLT 编号;
  • payload_proto:负载协议名称(数据包最底层协议);
  • header_size:头部协议长度(若存在头部协议,单位:字节;0 表示无头部协议);
  • header_proto:头部协议名称(默认值为 data);
  • trailer_size:尾部协议长度(若存在尾部协议,单位:字节;0 表示无尾部协议);
  • trailer_proto:尾部协议名称(默认值为 data)。

9.10 SNMP 用户表

该表用于验证 SNMPv3 数据包的授权信息并解密,通过“用户表”编辑器管理,包含以下字段:

  • engine_id:SNMP 引擎 ID(16 进制字符串,如 0102030405;为空时匹配所有引擎 ID);
  • userName:SNMPv3 用户名(多个引擎 ID 对应同一用户名时,按列表顺序匹配);
  • 验证模式:授权算法(支持 MD5 或 SHA1);
  • authPassword:授权密码(非打印字符需用 \xDD 表示,如 16 进制密码 010203 表示为 \x01\x02\x03);
  • priv_proto:加密算法(支持 DES 或 AES);
  • privPassword:加密密码(格式与 authPassword 一致)。

[20] 注:“dissector” 直译“解析器”,此处结合上下文译为“解码器”,与“decode”功能区分,特指协议专属的解析模块。
[21] 注:在 Wireshark 0.99.5 版本中未找到“User table”编辑器,推测为后续版本新增功能。


via:

  • 史上最全 wireshark 使用教程,8 万字整理总结,建议先收藏再耐心研读_51CTO 博客 孙叫兽杂谈 2021-07-23 10:52:47

    https://blog.51cto/sunmenglei/3171269

本文标签: 进阶 实战 入门 教程 Wireshark