第一章 简介

1.1. 什么是 Wireshark?

Wireshark 是一个网络数据包分析器。网络数据包分析器尽可能详细地呈现捕获的数据包数据。
您可以将网络数据包分析器视为检查网络电缆内部情况的测量设备,就像电工使用电压表检查电缆内部情况一样(当然是在更高级别)。
过去,此类工具要么非常昂贵,要么专有,要么两者兼而有之。但是,随着 Wireshark 的出现,情况发生了变化。Wireshark 是免费的,是开源的,并且是当今最好的数据包分析器之一。

1.1.1. 一些预期目的

以下是人们使用 Wireshark 的一些原因:

网络管理员用它来解决网络问题
网络安全工程师用它来检查安全问题
QA 工程师使用它来验证网络应用程序
开发人员使用它来调试协议实现
人们用它来学习网络协议的内部结构
Wireshark 在许多其他情况下也很有用。

1.1.2. 特征

以下是 Wireshark 提供的众多功能中的一部分:

适用于UNIX和Windows。
从网络接口 捕获实时数据包数据。
打开包含使用 tcpdump/WinDump、Wireshark 和许多其他数据包捕获程序捕获的数据包数据的文件。
从包含数据包数据的十六进制转储的文本文件导入数据包。
显示包含非常详细协议信息的数据包。
保存捕获的数据包数据。
以多种捕获文件格式 导出部分或全部数据包。
根据许多标准过滤数据包。
根据许多条件搜索数据包。
根据过滤器对数据包显示进行 着色。
创建各种统计数据。
......还有更多!
但是,要真正体会到它的强大功能,您必须开始使用它。

1.1.3. 来自许多不同网络媒体的实时捕获

Wireshark 可以捕获来自许多不同网络媒体类型的流量,包括以太网、无线 LAN、蓝牙、USB 等。支持的特定媒体类型可能受到多种因素的限制,包括您的硬件和操作系统。

1.1.4. 从许多其他捕获程序导入文件

Wireshark 可以打开大量抓包程序的抓包。有关输入格式的列表,请参阅第 5.2.2 节,“输入文件格式”。

1.1.5. 为许多其他捕获程序导出文件

Wireshark 可以以多种格式保存捕获的数据包,包括其他捕获程序使用的格式。有关输出格式的列表,请参阅第 5.3.2 节,“输出文件格式”。

1.1.6. 许多协议解析器

有许多协议的协议解析器(或解码器,因为它们在其他产品中是众所周知的):请参阅附录 C,协议和协议字段。

1.1.7. 开源软件

Wireshark 是一个开源软件项目,根据 GNU 通用公共许可证(GPL) 发布。您可以在任意数量的计算机上自由使用 Wireshark,无需担心许可证密钥或费用等问题。此外,所有源代码都可以在 GPL 下免费获得。正因为如此,人们很容易将新协议添加到 Wireshark,无论是作为插件,还是内置到源代码中,而且他们经常这样做!

1.1.8. Wireshark 不是什么

以下是 Wireshark 不提供的一些功能:

Wireshark 不是入侵检测系统。当有人在您的网络上做了他/她不允许做的奇怪事情时,它不会警告您。但是,如果发生奇怪的事情,Wireshark 可能会帮助您弄清楚到底发生了什么。
Wireshark 不会操纵网络上的东西,它只会从中“测量”东西。Wireshark 不在网络上发送数据包或做其他活动(域名解析除外,但可以禁用)。

1.2. 系统要求

Wireshark 需要的资源量取决于您的环境和您正在分析的捕获文件的大小。对于不超过几百 MB 的中小型捕获文件,以下值应该没问题。较大的捕获文件将需要更多的内存和磁盘空间。

繁忙的网络意味着大量捕获
繁忙的网络会产生巨大的捕获文件。即使是在 100 兆比特的网络上进行捕获,也可以在短时间内产生数百兆字节的捕获数据。具有快速处理器、大量内存和磁盘空间的计算机总是一个好主意。

如果 Wireshark 内存不足,它将崩溃 尽管 Wireshark 使用单独的进程来捕获数据包,但数据包分析是单线程的,不会从多核系统中获益太多。

1.2.1. 微软Windows

Wireshark 应该支持仍在其 延长支持生命周期内的任何 Windows 版本。在撰写本文时,这包括 Windows 10、8.1、Server 2019、Server 2016、Server 2012 R2 和 Server 2012。它还需要以下内容:

通用 C 运行时。这包含在 Windows 10 和 Windows Server 2019 中,如果启用了 Microsoft Windows 更新,它会自动安装在早期版本上。否则,您必须安装 KB2999226或 KB3118401。
任何现代 64 位 AMD64/x86-64 或 32 位 x86 处理器。
500 MB 可用内存。较大的捕获文件需要更多的 RAM。
500 MB 可用磁盘空间。捕获文件需要额外的磁盘空间。
任何现代显示器。建议使用 1280 × 1024 或更高分辨率。如果可用,Wireshark 将使用 HiDPI 或 Retina 分辨率。高级用户会发现多个显示器很有用。
支持捕获的网卡

以太网。Windows 支持的任何卡都应该可以使用。有关可能影响您的环境的问题, 请参阅有关 以太网捕获和 卸载的 wiki 页面。
802.11。请参阅Wireshark 维基页面。如果没有特殊设备,可能很难捕获原始 802.11 信息。
其他媒体。请参阅https://gitlab.com/wireshark/wireshark/wikis/CaptureSetup/NetworkMedia。
不再支持 Microsoft 延长生命周期支持窗口之外的旧版 Windows。由于我们无法控制的情况(例如我们依赖的第三方库)或由于仅在较新版本的 Windows 中存在的必要功能(例如强化安全性或内存管理),通常很难或不可能支持这些系统。

Wireshark 3.2 是最后一个正式支持 Windows 7 和 Windows Server 2008 R2 的版本分支。
Wireshark 2.2 是支持 Windows Vista 和 Windows Server 2008 sans R2 的最后一个版本分支
Wireshark 1.12 是支持 Windows Server 2003 的最后一个版本分支。
Wireshark 1.10 是最后一个正式支持 Windows XP 的版本分支。
有关详细信息,请参阅Wireshark 发布生命周期页面。

1.2.2. 苹果系统

Wireshark 支持 macOS 10.12 及更高版本。与 Windows 类似,受支持的 macOS 版本取决于第三方库和 Apple 的要求。

Wireshark 2.6 是支持 Mac OS X 10.6 和 10.7 以及 OS X 10.8 到 10.11 的最后一个版本分支。
Wireshark 2.0 是最后一个在 32 位 Intel 上支持 OS X 的版本分支。
Wireshark 1.8 是支持 PowerPC 上的 Mac OS X 的最后一个版本分支。
系统要求应与上面列出的 Windows 规格相当。

1.2.3. UNIX、Linux 和 BSD

Wireshark 可在大多数 UNIX 和类 UNIX 平台上运行,包括 Linux 和大多数 BSD 变体。系统要求应与上面列出的 Windows 规格相当。

二进制包可用于大多数 Unices 和 Linux 发行版,包括以下平台:

高山Linux
架构Linux
规范的Ubuntu
德比安 GNU/Linux
FreeBSD
Gentoo Linux
用户体验
NetBSD
OpenPKG
Oracle Solaris
红帽企业 Linux / CentOS / Fedora
如果二进制包不适用于您的平台,您可以下载源代码并尝试构建它。请将您的体验报告给 wireshark-dev[AT]wireshark.org。

1.3. 从哪里获取 Wireshark

您可以从 Wireshark 网站https://www.wireshark.org/download.html获取该程序的最新副本。下载页面应自动突出显示适合您平台的下载,并将您引导至最近的镜像。官方 Windows 和 macOS 安装程序由Wireshark Foundation签名。macOS 安装程序也经过公证。
新的 Wireshark 版本通常每六周发布一次。
如果您想收到有关 Wireshark 新版本的通知,您应该订阅 wireshark-announce 邮件列表。您将在第 1.6.5 节“邮件列表”中找到更多详细信息。
每个版本都包含一个文件哈希列表,这些文件哈希被发送到 wireshark-announce 邮件列表并放置在名为 SIGNATURES- x的文件中。是的。z .txt。公告消息存档在https://www.wireshark.org/lists/wireshark-announce/和 SIGNATURES 文件可以在https://www.wireshark.org/download/src/all-versions/找到。
两者均经过 GPG 签名,并包含适用于 Windows、Linux 和 macOS 的验证说明。如上所述,您还可以使用这些系统上的代码签名验证功能来验证 Windows 和 macOS 上的下载。

1.4. Wireshark 简史

1997 年底,Gerald Combs 需要一个工具来追踪网络问题并想了解更多关于网络的知识,因此他开始编写 Ethereal(Wireshark 项目的原始名称)作为解决这两个问题的方法。
Ethereal 最初是在 1998 年 7 月的几次开发暂停后发布的 0.2.0 版。几天之内,补丁、错误报告和鼓励的话语开始陆续到来,Ethereal 走上了成功的道路。
不久之后,吉尔伯特·拉米雷斯 (Gilbert Ramirez) 看到了它的潜力,并为它贡献了一个低级解剖器。
1998 年 10 月,Guy Harris 正在寻找比 tcpview 更好的东西,因此他开始应用补丁并为 Ethereal 提供解析器。
1998 年底,教授 TCP/IP 课程的 Richard Sharpe 看到了它在此类课程中的潜力,并开始研究它是否支持他需要的协议。虽然当时还没有,但可以轻松添加新协议。所以他开始贡献解剖器和贡献补丁。
从那时起,为该项目做出贡献的人员名单已经变得很长,几乎所有人都是从他们需要 Wireshark 或尚未处理的协议开始的。所以他们复制了一个现有的解剖器并将代码贡献回团队。
2006 年,该项目搬迁并以新名称重新出现:Wireshark。
2008年,经过十年的发展,Wireshark终于迎来了1.0版本。这个版本是第一个被认为是完整的版本,实现了最少的功能。它的发布恰逢第一届 Wireshark 开发者和用户大会,名为 Sharkfest。
2015 年发布了 Wireshark 2.0,具有全新的用户界面。

1.5. Wireshark的开发与维护

Wireshark 最初由 Gerald Combs 开发。Wireshark 团队的持续开发和维护由 Wireshark 团队负责,该团队由一群松散的个人组成,负责修复错误并提供新功能。
也有很多人为 Wireshark 贡献了协议解析器,预计这种情况会继续下去。您可以通过查看 Wireshark 的关于对话框或在 Wireshark 网站的作者页面找到为 Wireshark 贡献代码的人员列表。
Wireshark 是一个开源软件项目,根据 GNU 通用公共许可证(GPL) 第 2 版发布。所有源代码都可以在 GPL 下免费获得。欢迎您修改 Wireshark 以满足您自己的需要,如果您将您的改进贡献回 Wireshark 团队,我们将不胜感激。
通过将您的改进回馈社区,您可以获得三个好处:
发现您的贡献有用的其他人会感激他们,并且您会知道您以 Wireshark 的开发人员帮助您的方式帮助了其他人。
Wireshark 的开发人员可以进一步改进您的更改或在您的代码之上实现其他功能,这也可能使您受益。
Wireshark 的维护人员和开发人员将维护您的代码,在 API 更改或进行其他更改时修复它,并且通常使它与 Wireshark 发生的事情保持一致。因此,当 Wireshark 更新时(通常如此),您可以从网站上获得新的 Wireshark 版本,并且您的更改将已经包含在内,您无需任何额外的努力。
某些平台的 Wireshark 源代码和二进制工具包都可以在 Wireshark 网站的下载页面上找到: https 😕/www.wireshark.org/download.html 。

1.6. 报告问题并获得帮助

如果您在使用 Wireshark 时遇到问题或需要帮助,可以参考几个地方(当然除了本指南之外)。

1.6.1. 网站

您会在 Wireshark 主页上找到很多有用的信息, 网址为https://www.wireshark.org/。

1.6.2. Wiki

位于https://gitlab.com/wireshark/wireshark/wikis/的 Wireshark Wiki提供了与 Wireshark 和数据包捕获相关的广泛信息。您会发现很多信息不属于本用户指南的一部分。例如,它包含如何在交换网络上捕获的解释、构建协议参考的持续努力、特定于协议的信息等等。
最重要的是,如果您想贡献关于特定主题(可能是您熟悉的网络协议)的知识,您可以使用 Web 浏览器编辑 wiki 页面。

1.6.3. 问答网站

位于https://ask.wireshark.org/的 Wireshark 问答站点提供了一个将问题和答案放在一起的资源。您可以搜索之前提出的问题,看看了解该问题的人给出了哪些答案。答案是有排名的,所以你可以很容易地选出最好的答案。如果您的问题之前没有被讨论过,您可以自己发布一个。

1.6.4. FAQ

常见问题解答列出了常见问题及其相应的答案。

[笔记] 阅读常见问题解答
在向以下邮件列表发送任何邮件之前,请务必阅读常见问题解答。它通常会回答您可能遇到的任何问题。这将为您自己和他人节省大量时间。请记住,很多人都订阅了邮件列表。

通过单击菜单项帮助/目录并在显示的对话框中选择常见问题解答页面,您将在 Wireshark 中找到常见问题解答。


1.6.5. 邮件列表

有几个可用的特定 Wireshark 主题的邮件列表:

wireshark-公告

有关新程序发布的信息,通常大约每六周出现一次。

wireshark 用户

Wireshark 用户感兴趣的主题。人们通常会发布有关使用 Wireshark 的问题,而其他人(希望)会提供答案。

wireshark-dev

Wireshark 开发人员感兴趣的主题。如果您想开发协议解析器或更新用户界面,请加入此列表。

您可以从 Wireshark 网站订阅每个列表: https 😕/www.wireshark.org/lists/ 。从那里,您可以通过单击相关列表标题下的订阅/取消订阅/选项按钮来选择要订阅的邮件列表。档案的链接也包含在该页面上。

[提示] 列表已存档
您可以在列表档案中搜索,看看是否有人在某个时候问过同样的问题,并且可能已经得到了答案。这样您就不必等到有人回答您的问题。

1.6.6. 报告问题
[笔记] 笔记
在报告任何问题之前,请确保您已经安装了最新版本的 Wireshark。

报告 Wireshark 问题时,请提供以下信息:

Wireshark 及其链接的依赖库的版本号,如 Qt 或 GLib。您可以从 Wireshark 的关于框或命令wireshark -v获得它。
有关运行 Wireshark 的平台的信息(Windows、Linux 等以及 32 位、64 位等)。
您的问题的详细描述。
如果您收到错误/警告消息,请复制该消息的文本(以及前后几行,如果有的话)以便其他人可以找到出错的地方。请不要给出类似这样的信息:“我在执行 x 时收到警告”,因为这不会给出查看位置的好主意。
[警告] 不要发送机密信息!
如果您将捕获文件发送到邮件列表,请确保它们不包含任何敏感或机密信息,如密码或个人身份信息 (PII)。

在许多情况下,您可以使用TraceWrangler 之类的工具在共享捕获文件之前对其进行清理。

[笔记] 不要发送大文件
不要向邮件列表发送大文件(> 1 MB)。相反,提供下载链接。对于错误和功能请求,您可以在 Gitlab Issues上创建一个问题并将文件上传到那里。

1.6.7. 报告 UNIX/Linux 平台上的崩溃

当使用 Wireshark 报告崩溃时,如果您提供回溯信息以及“报告问题”中提到的信息,将会很有帮助。
您可以在 UNIX 或 Linux 上使用以下命令获取此回溯信息(注意反引号):
$ gdb whereis wireshark | 切-f2 -d:| cut -d' ' -f2 核心 >& backtrace.txt
回溯
^D
如果您没有可用的gdb,则必须检查操作系统的调试器。

通过电子邮件将backtrace.txt发送到wireshark-dev[AT]wireshark.org。