第一章 简介
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 等。支持的特定媒体类型可能受到多种因素的限制,包括您的硬件和操作系统。可以在 https://gitlab.com/wireshark/wireshark/wikis/CaptureSetup/NetworkMedia找到受支持的媒体类型的概述。
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 内存不足,它将崩溃。有关详细信息和解决方法,请参阅 https://gitlab.com/wireshark/wireshark/wikis/KnownBugs/OutOfMemory。
尽管 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