Wireshark-学习手册-一-

Wireshark 学习手册(一)

零、前言

21 世纪初,一位同事向我介绍了 Wireshark 的前身 Ethereal。我记得当我的笔记本电脑吞噬流量时,我看着屏幕,心想:“我不知道这是什么,但我想知道!”在接下来的几年里,我沉浸在使用 Wireshark 学习尽可能多的数据包分析知识中。我参加培训,观看视频,阅读书籍,这些帮助我汇编和整理我的知识,并尊重这些信息包告诉我们的东西。

我教授网络和安全课程,并在会议上介绍使用 Wireshark 的诸多好处。在这第二版学习 Wireshark 中,我想和你分享我的知识。每章都有多次实践的机会。使用这些示例,您将理解数据的含义,并理解数据包告诉您的内容。我将概述如何进行详细的搜索、跟踪数据流并识别端点,以便您可以解决延迟问题并主动识别网络攻击。加入我的旅程,你会很快意识到了解网络上发生的事情的能力是一种超能力!

这本书是给谁的

本书面向网络管理员、安全分析器、学生、教师以及任何有兴趣学习使用 Wireshark 进行数据包分析的人。网络基础、设备和协议的基本知识,以及对不同拓扑的理解,将有助于您阅读材料。

这本书涵盖了什么

第一章赏析流量分析,描述了无数进行数据包分析的地点和原因。此外,我们还将介绍使用 Wireshark 的诸多好处,Wireshark 是一款开源协议分析器,包含许多丰富的特性。

第 2 章使用 Wireshark ,首先概述当今 Wireshark 的起源。我们将研究接口并回顾数据包分析的各个阶段。最后,我们将讨论内置工具,更仔细地看看tshark(或基于终端的 Wireshark),Wireshark 的一个轻量级替代。

第三章安装 Wireshark ,说明 Wireshark 如何为不同的操作系统提供支持。我们将比较不同的捕获引擎,如 WinPCap、LibPcap 和 nPCap,完成一个标准的 Windows 安装,然后查看在https://www.wireshark.org/可获得的资源。

第 4 章探索 Wireshark 接口,深入探究 Wireshark 的一些常见元素,以改进您的工作流程。我们将研究欢迎屏幕和常见菜单选项,例如文件编辑视图,以便您可以在分析过程中轻松导航界面。

第 5 章进入数据流,从不同网络架构的比较开始,然后继续讨论各种捕获选项。您将发现接入数据流时将看到的对话和端点,然后了解网络流量基线的重要性。

第六章个性化界面,帮助你实现所有你可以自定义的界面的许多方面。您将学习如何个性化布局和一般外观,创建定制的配置文件,调整列、字体和颜色,以及创建按钮。

第 7 章使用显示和捕获过滤器,帮助你让检查一个数据包捕获变得不那么势不可挡。我们将看看如何通过过滤网络流量来缩小范围。我们将比较显示和捕获过滤器,发现用于构建过滤器的快捷方式,并以对表达式构建器的回顾结束。

第 8 章概述了 OSI 模型,提供了开放系统互连 ( OSI )模型的概述,这是一个七层框架,概述了操作系统如何准备数据在网络上传输。我们将回顾每一层的目的、协议和协议数据单元(PDU),探索封装过程,并演示 Wireshark 中的帧形成。

第 9 章解码 TCP 和 UDP ,深入探讨传输层中的两个关键协议——传输控制协议 ( TCP )和用户数据报协议 ( UDP )。我们将回顾传输层的目的,然后评估 TCP 和 UDP 的报头和字段值。

第十章管理 TCP 连接,从考察三次握手开始。我们将发现 TCP 选项,更好地理解 TCP 协议首选项,然后以 TCP 拆卸过程的概述结束。

第十一章解析 IPv4 和 IPv6 ,提供了分解互联网协议 ( IP )。我们将概述 IPv4 和报头字段,然后探索 IPv6 的简化报头。我们将通过讨论协议首选项进行总结,并了解 IPv4 和 IPv6 如何通过使用隧道协议共存。

第十二章发现 ICMP ,详细介绍互联网控制消息协议 ( ICMP )。我们将剖析 ICMP 和 ICMPv6,比较查询和错误消息,并讨论 ICMP 类型和代码值。我们将讨论 ICMP 如何被恶意使用,并概述配置防火墙规则的重要性。

第十三章潜入 DNS ,概述了域名系统 ( DNS )的意义。您将了解 DNS 如何将主机名解析为 IP 地址。我们将比较不同类型的记录,逐步执行查询和响应,查看 DNS 头,并使用 Wireshark 计算 DNS 响应时间。

第十四章检查 DHCP ,首先解释动态主机配置协议 ( DHCP )。然后,我们将概述 DORA 流程—发现要约请求确认。我们将剖析 DHCP 报头,查看所有字段值、标志和端口号,然后通过一个 DHCP 示例来结束。

第十五章解码 HTTP ,重点介绍了超文本传输协议 ( HTTP ),一种浏览网页时使用的应用层协议。我们将学习 HTTP 的细节,探索常见的传输方法,并剖析报头和字段。然后我们将比较请求和响应消息,然后通过一个 HTTP 流进行总结。

第十六章了解 ARP ,仔细看看地址解析协议 ( ARP ),这是一个在传递数据中很重要的协议。我们将概述 ARP 的作用和目的,探索报头和字段,描述不同类型的 ARP,并简要了解 ARP 攻击。

第 17 章确定网络延迟问题,概述了即使是初学者也能诊断网络问题的方法。我们将探索颜色规则和智能滚动条,然后以专家信息的概述结束,专家信息将警报分为不同的类别,并指导您进行更有针对性的评估。

第 18 章子集化、保存和导出捕获,帮助您探索将数据包捕获分解成更小文件进行分析的许多不同方法。我们将讨论保存文件时的不同选项,探索导出对象、会话密钥和包字节等组件的方法,然后概述为什么以及如何添加注释。

第 19 章发现 I/O 和流图,首先介绍统计菜单在分析捕获文件时可以帮助我们的许多方式。我们将创建基本的 I/O 图来帮助可视化网络问题,并通过比较不同的 TCP 流图如何提供流的可视化表示来进行总结。

第二十章使用 CloudShark 进行数据包分析,涵盖了 CloudShark,一个类似于 Wireshark 的在线应用。您将学习如何过滤流量和生成图表。然后,我们将回顾您如何与同事分享捕获,并概述您可以在哪里找到样本捕获,以便您可以继续提高您的技能。

为了充分利用这本书

要准备使用 Wireshark,请在您的系统上下载并安装最新版本。详细说明见第三章 、安装 Wireshark

为了最大限度地利用每一章,当有数据包捕获的参考时,下载文件,以便您可以跟随课程。

除此之外,请自行练习您的技能,特别是复习 TCP/IP 套件中的常用协议,以便加深您的知识并更加精通数据包分析。

下载示例代码文件

书中引用了所有 Wireshark 捕获文件。从在线存储库中下载适当的捕获文件,这样您就可以学习这些课程。

下载彩色图片

我们还提供了一个 PDF 文件,其中有本书中使用的截图和图表的彩色图像。你可以在这里下载:https://packt.link/iF8Fj

使用的惯例

本书通篇使用了许多文本约定。

Code in text:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄。下面是一个例子:“要写入一个文件,使用-w,然后是文件名和路径。”

任何命令行输入或输出都按如下方式编写:

c:\ Program Files \ Wireshark > t shark-I " Ethernet 2 "-w Test-t shark . pcap-a 时长:10

Bold :表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词以粗体出现。下面是一个例子:“一旦你进入 CloudShark,选择导出 | 下载文件下拉菜单。”

提示或重要注意事项

像这样出现。

取得联系

我们随时欢迎读者的反馈。

总体反馈:如果您对本书的任何方面有疑问,请发邮件至 customercare@packtpub.com给我们,并在邮件主题中提及书名。

勘误表:虽然我们已经尽力确保内容的准确性,但错误还是会发生。如果你在这本书里发现了一个错误,请告诉我们,我们将不胜感激。请访问 www.packtpub.com/support/errata并填写表格。

盗版:如果您在互联网上遇到我们作品的任何形式的非法拷贝,如果您能提供我们的地址或网站名称,我们将不胜感激。请通过 copyright@packt.com 的联系我们,并提供材料链接。

如果你有兴趣成为一名作家:如果有你擅长的主题,并且你有兴趣写书或投稿,请访问 authors.packtpub.com。

分享你的想法

一旦您阅读了 Learn Wireshark -第二版,我们很想听听您的想法!请点击这里直接进入亚马逊对这本书的评论页面,并分享你的反馈。

您的评论对我们和技术社区非常重要,将有助于我们确保提供高质量的内容。

第一部分:流量捕获概述

在本节中,我们将概述流量分析的价值,了解 Wireshark 的发展,并逐步完成数据包分析的各个阶段。然后,我们将讨论一些命令行界面工具,概述如何下载和安装 Wireshark,并探索该界面以及常用的菜单选项。

本节将涵盖以下章节:

一、了解流量分析

今天的网络是复杂的,很多时候,当面临问题时,你能解决问题的唯一方法是你能看到问题。正是因为这个原因,使用 Wireshark 等工具的数据包分析已经存在了很多年。除了使用 Wireshark 手动进行数据包分析之外,当今的设备还具备从网络中提取数据并检查其内容的能力。此功能有助于网络管理员排除故障、测试、基线和监控网络威胁。

本章将帮助您认识到使用 Wireshark 进行数据包分析的诸多好处。您将了解它作为一个优秀的开源软件产品的历史,它包含许多丰富的特性。您将发现各种群体如何从使用数据包分析中受益,如网络管理员、学生和安全分析器。此外,我们将涵盖许多进行数据包分析的地方,包括在局域网 ( LAN )、主机或现实世界中。最后,您将了解 Wireshark 如何能够解码数百种不同的协议,并不断得到改进,使其成为监控网络的最佳工具。

在本章中,我们将通过涵盖以下主题来解决所有这些问题:

  • 查看数据包分析
  • 了解谁会从数据包分析中受益
  • 确定在哪里使用数据包分析
  • 概述何时使用数据包分析
  • 了解 Wireshark

查看数据包分析

数据包分析通过实时捕获或使用之前捕获的文件,检查数据包以了解流量的特征和结构。分析器可以通过一次研究一个数据包或完整捕获来完成数据包分析。

当监控网络进行分析时,我们使用 Wireshark 或tshark等专业软件捕获流量。一旦数据被捕获,我们保存文件,软件将数据存储在一个文件中,该文件通常被称为数据包捕获PCAP 文件。

数据包分析有利于许多群体,包括:

  • 网络管理员:使用数据包分析获得当前网络状况的信息。
  • 安全分析器:在进行取证调查时,使用数据包分析来确定流量是否有任何异常或可疑之处。
  • 学生们:使用数据包分析作为学习工具,更好地理解不同协议的工作原理。
  • 黑客:使用数据包分析来嗅探网络流量,同时进行足迹和侦察,以获取有关网络的有价值信息。

我们在许多地方使用数据包分析,包括在局域网、主机或现实世界中。此外,我们在排除延迟问题、测试物联网 ( 物联网)设备以及为网络设定基线时将作为工具时,会使用数据包分析。

今天,使用 Wireshark 进行数据包分析是一项很有价值的技能。然而,分析数据包在网络世界中已经存在很多年了。早在 20 世纪 90 年代,各种工具使分析器能够在网络上执行数据包分析,以排除错误并监控服务器行为。在下一节中,我们将研究一些用于监控网络活动的早期工具。

探索早期的数据包嗅探器

数据包分析作为一种诊断工具,已经以某种形式存在了 20 多年,用于观察网络中传输的数据和其他信息。数据包分析是也称为嗅探。这个术语指的是早期的数据包嗅探器,即嗅探或捕获穿过网络的流量。20 世纪 90 年代,软件公司 Novell 开发了 Novell LANalyzer,它有一个图形用户界面和仪表板来检查网络流量。同时,微软推出了它的网络监视器。

在过去的 20 年里,出现了许多其他的数据包分析器和工具来嗅探流量,包括:

Table 1.1 – Packet analyzers and tools

表 1.1–数据包分析器和工具

大多数数据包分析器都以类似的方式工作。它们捕获数据,然后根据适当的请求注解 ( RFC )或其他规范对字段值中的原始位进行解码。一旦完成,数据将以有意义的方式呈现。

数据包分析工具在外观和功能方面各不相同,如下所示:

  • 它们提供简单的基于文本的分析,比如基于终端的 Wireshark ( tshark)。
  • 它们提供了丰富的图形用户界面,带有基于专家系统的先进的人工智能,引导分析器进行更有针对性的评估。

在下一节中,我们将看看目前使用数据包分析的各种设备。

评估使用数据包分析的设备

网络上的许多设备都使用数据包分析和流量嗅探,包括路由器、交换机和防火墙设备。当数据在网络中流动时,设备收集并解释数据包的原始位,检查每个数据包中的字段值,以决定应该采取什么措施。

设备以下列方式检查网络流量:

  • 作为路由过程的一部分,路由器捕获流量,并检查 IP 报头以确定将流量发送到哪里。
  • 一个 IDS 检查流量,如果有任何异常或可疑的行为,就向网络管理员发出警报。
  • 一个防火墙监控所有流量,并将丢弃任何不符合访问控制列表 ( ACL )的数据包。

例如,当数据通过防火墙时,设备会检查流量,并根据 ACL 确定是允许还是拒绝数据包。

使用 ACL

当使用防火墙时,ACL 控制网络上允许的流量类型。例如,ACL 包含以下条目:

  • 允许出站 SYN 数据包。目的港是80
  • 允许入站 SYN-ACK 数据包。源端口是80

为了决定是允许还是拒绝数据包,防火墙必须在数据包通过设备时检查每个报头。它将确定诸如 IP 地址、传输控制协议 ( TCP )标志和正在使用的端口号等变量。如果数据包不符合 ACL 条目,防火墙将丢弃该数据包。如下图所示,目的端口为80的入站 SYN 数据包因不符合规则而被阻塞:

Figure 1.1 – A firewall with an ACL

图 1.1–带有 ACL 的防火墙

值得注意的是,数据包嗅探器会检查流量,但不会以任何方式修改内容。它只是在流量通过网络时收集流量进行分析。

如您所见,数据包嗅探和分析作为管理网络的要素已经影响了很多年。然而,分析的第一步是捕获流量,这是我们接下来要探讨的。

捕获网络流量

在今天的网络上,一个网络接口卡 ( 网卡)将监控发往那个主机的流量。然而,我们可以将卡置于一种称为混杂模式的状态,这种模式将允许适配器收集网络上的所有流量。因此,要捕获和监控所有网络流量,网卡必须处于混杂模式。

在 Windows 计算机上,您可以通过在 PowerShell 中运行以下命令来检查接口卡是否处于混杂模式:

Windows PowerShell

版权所有(C) 2014 微软公司。保留所有权利。

PS C:\ Users \ Admin > Get-net adapter | Format-List-Property 杂乱模式

混杂模式:假

我们使用数据包分析来了解流量的特征。虽然您可以在实时捕获过程中进行数据包分析,但是捕获流量并保存以供进一步分析是很常见的。捕获数据包进行分析的常见步骤包括:

  1. 安装 Wireshark 和适当的数据包捕获引擎。
  2. 启动 Wireshark 并选择捕获选项。
  3. 开始捕获并运行,直到捕获 2,000–3,000 个数据包。
  4. 停止捕获,并以适当的格式保存跟踪文件。
  5. 通过一次研究一个数据包或作为一个完整的捕获来分析捕获。

在某些情况下,您可能需要将数据包捕获发送给公司或安全分析器进行进一步分析。

Wireshark 允许我们从单个或多个网络接口捕获、显示和过滤实时数据。此外,您可以检查预先捕获的数据包,搜索详细信息,并跟踪数据流。因此,数据包分析非常有利,因为它可以帮助您了解网络的本质。下一节概述了许多不同的人,他们可以从使用 Wireshark 进行数据包分析中受益。

识别谁从数据包分析中受益

几乎每个人都能从数据包分析中受益,包括开发人员、网络管理员、学生和安全分析器。让我们看看每一组,并探索通过数据包分析可以获得的好处。我们将从开发人员开始,因为他们可以看到他们的程序如何实时响应网络上的请求。

协助开发者

应用性能问题会影响底线,尤其是在任务关键的情况下。开发人员努力开发优雅高效的软件。在发布应用之前,开发人员运行功能和回归测试,并对服务器施加压力,以确保应用得到优化。

通常,开发人员在一个完美的环境中测试应用,该环境具有高带宽和低延迟。然而,一旦应用从本地(或测试)环境转移到生产网络,客户可能会抱怨响应时间慢。程序员会仔细检查应用;然而,在许多场合,他们无法发现任何异常。

开发人员必须确定响应时间慢的原因。一旦进一步测试确定不是应用导致了问题,Wireshark 等数据包分析工具可以帮助开发人员。

通过使用数据包分析,开发人员可以发现传输中的常见问题,并帮助确定延迟响应时间的根本原因。网络中可能会出现往返时间延迟和组织内部拥塞迹象等问题,从而影响响应时间。

仅仅优化应用是不够的。所有开发生命周期都应该包括检查网络上发生了什么,因为问题会影响整体性能。

除了开发人员之外,网络管理员通常也使用 Wireshark 来排除网络故障,我们将在下面看到。

帮助网络管理员监控网络

网络管理员使用数据包分析来获取当前网络状况的信息。Wireshark 可以帮助识别网络中可能需要调整和/或更换设备以提高整体性能的错误和/或问题。

Wireshark 的一个强大功能是能够快速检测捕获中的问题。网络管理员既可以使用专家系统,也可以使用智能滚动条,智能滚动条以颜色标记潜在的问题并帮助分析,我们将在下一节中看到。

专家系统和智能滚动条

Wireshark 允许我们在执行分析时可视化问题。专家系统对各种流量状况进行分类。每个级别都有一个颜色代码,便于识别一般工作流程和可能的关键事件:

  • 聊天颜色(蓝色):它提供有关典型工作流的信息,例如 TCP 窗口更新或连接完成。
  • 注意颜色(青色):表示感兴趣的项目,如重复确认和 TCP keepalive 段。
  • 警告色(黄色):表示警告,如 TCP 零窗口或连接重置。
  • 错误颜色(红色):这是最高级别,因为可能存在严重问题,如重新传输或数据包格式错误。

专家系统的画面在左下角,如下图所示:

Figure 1.2 – Expert system and intelligent scroll bar

图 1.2-专家系统和智能滚动条

Wireshark 还有一个智能滚动条,它提供了检测问题的视觉效果。在前面的截图中,我们可以看到根据应用中设置的着色规则,右侧有一个明显的着色图案。

借助智能滚动条,管理员可以轻松点击色带,锁定可能出现的问题。请记住,智能滚动条只有在颜色规则处于活动状态时才可见;但是,默认情况下,颜色规则是打开的。

一旦发现任何问题,您就可以对流量进行分组、添加注释、保存和导出数据包捕获。

子集化流量、评论、保存和导出

有时,网络管理员可能只想与团队的其他成员共享一小部分流量。Wireshark 可以对大量捕获进行子集化,这样您就可以专注于问题领域。

例如,除了数据之外,大型数据包捕获很可能会有几种不同类型的流量,如管理帧和 802.11 控制帧。您可以使用轻松应用过滤器...并且没有选择选项来排除与分析无关的数据包。

一旦您创建了一个较小的文件,您就可以导出指定的数据包并以多种格式保存它们。格式包括默认的 PCAPNG,以及 PCAP、Sun Snoop、DMP 等。

在新创建的子集中,您可以包含注释。您可以通过几种不同的方式找到注释:

  • 选择左下角看起来像便笺簿和铅笔的注释图标,为单个数据包添加注释。

  • 导航到编辑 | 数据包注释菜单选项,为单个数据包添加注释。

  • Navigate to the Statistics | Capture file properties menu choice and include comments for an entire packet capture in the comment area at the bottom of the window.

    注意

    如果添加注释,则必须以 PCAPNG 格式保存文件,因为并非所有文件格式都支持使用注释。

除了网络管理员之外,学生还将通过使用 Wireshark 检查协议的报头和字段值,深入了解网络上实际发生的情况。

对学生进行协议教育

学生可以使用数据包分析作为学习工具来更好地理解协议。比如在复习的动态主机配置协议 ( DHCP )的时候,一本教材会显示过程的四个阶段: D iscover、 O ffer、 R equest、ACK knowledge(DORA)。请看下图:

Figure 1.3 – The DORA process

图 1.3–DORA 流程

虽然上图显示了由四部分组成的每个事务,但它没有显示四个数据包交换的每个部分的详细信息。

在下面的截图中,我们可以看到 Wireshark 中的一个实际的 DHCP 事务。除此之外,学生还可以看到每个交换的细节,包括传输协议、IP、媒体访问控制 ( MAC )地址和 DHCP 报头标志:

Figure 1.4 – The DORA process in Wireshark

图 1.4–Wireshark 中的 DORA 流程

通过学习常见协议的正常行为和目的,学生将能够排除将来可能出现的任何问题。

如您所见,数据包分析对许多人都有很多好处。由于能够真正检查网络上发生的事情,使用数据包分析的另一个关键群体是安全分析器。

向安全分析器发出威胁警报

为了有效地发现潜在的问题,安全分析器必须是数据包分析方面的专家,因为他们以各种方式使用数据包分析:

  • 确定流量是否有任何异常或可疑之处。
  • 在完成法庭调查时,发现网络上发生了什么。

Wireshark 可以帮助安全分析器更好地理解特定类型的攻击,以便他们能够制定防火墙规则。为了磨练安全分析技能,分析器可以在各种存储库上发现并下载许多 PCAPs。位于 https://www.honeynet.org 的蜜网项目是一个很好的起点。导航到关于挑战的部分,该部分提供了许多取证练习的示例,以回顾和了解在当今网络中发现的许多常见威胁。

一旦你进入挑战页面,搜索Challenge 12 - Hiding in Plain Sight,阅读关于挑战的详细信息。然后,为了加强你的分析技巧,下载页面底部的文件并完成问题。答案也可以在页面底部找到,还有其他感兴趣的文件。

安全分析器认为 Wireshark 是一个有价值的工具,因为它提供了对网络上发生的事情的洞察。由于 Wireshark 能够洞察网络上发生的事情,因此也被黑客用于侦察,以收集和分析流量。这可能在攻击之前或主动攻击期间多次发生,我们将在接下来讨论。

用信息武装黑客

恶意参与者使用数据包分析来嗅探网络流量,目的是获取敏感信息。此外,他们还可以利用收集到的信息发动主动攻击。

当被用作攻击的前兆时,黑客在侦察期间收集信息,这也被称为足迹。让我们看看黑客使用 Wireshark 进行被动攻击的几种方式。

**### 概述被动攻击

利用 Wireshark(或类似的工具),恶意行为者将试图获取机密信息,通过网络传播以达到以下目的:

  • 足迹和侦察:作为主动攻击的前兆,恶意行为者捕获流量以收集尽可能多的目标信息。除此之外,Wireshark 还可用于收集其他信息,如 IP 和 MAC 地址、开放的端口和服务以及可能的防御方法。
  • 嗅探纯文本:数据包嗅探的另一个用途是寻找以纯文本形式发送的密码。此外,以纯文本形式发送的 SNMP、HTTP、FTP、Telnet 和 VoIP 等协议容易受到数据包嗅探器的攻击。一旦被捕获,协议就可以暴露关于网络和/或系统的信息。

一个组织可以用几种方法来防御未经授权的数据包嗅探。有反嗅探器软件可以检测网络上的嗅探器。然而,防止数据泄露的最好方法之一是使用加密。如果有人捕获了流量,那么加密的数据将显得毫无意义。

接下来,我们将了解黑客如何通过主动嗅探和监控流量来使用 Wireshark,作为地址解析协议 ( ARP )欺骗攻击的一部分。

了解主动攻击

恶意行为者在网络上发起许多不同类型的攻击,如如拒绝服务 ( DoS )、网络钓鱼,或结构化查询语言 ( SQL )注入攻击。接下来,我们来看看另一种类型的攻击:ARP 缓存毒攻击。

毒害缓存

ARP 缓存中毒,也称为 ARP 欺骗,在中间人 ( MitM )攻击中使用。为了理解为什么这是一种有效的攻击,让我们来看看 ARP 在局域网上的正常使用。

在局域网中,主机通过它们的 MAC(或物理)地址来识别。为了与正确的主机通信,每个设备在 ARP 或 MAC 地址表中跟踪所有局域网主机的 MAC 地址,也称为 ARP 缓存表

ARP 或 MAC 地址表中的条目将在一段时间后超时。正常情况下,当设备需要与网络上的另一台设备通信时,它需要自己的 MAC 地址。首先,设备将检查 ARP 缓存,如果表中没有条目,设备将向网络上的所有主机发送 ARP 请求广播。

ARP 请求询问以下问题:谁拥有(被请求的)IP 地址?告诉我(请求的)IP 地址。然后,设备将等待 ARP 回复,如下面的屏幕截图所示:

Figure 1.5 – ARP broadcast on a network

图 1.5–网络上的 ARP 广播

ARP 回复是一个包含主机 IP 地址和请求的 MAC 地址信息的响应。一旦收到地址,ARP 缓存就会更新以反映 MAC 地址。

在 ARP 欺骗攻击中,恶意参与者会执行以下操作:

  1. 向 LAN 上的所有主机发送未经请求的 ARP 回复消息,其中包含攻击者机器的假冒 MAC 地址。
  2. 收到 ARP 回复后,局域网上的所有设备都会用不正确的 MAC 地址更新它们的 ARP(或 MAC 地址)表。这实际上毒害了终端设备上的缓存。
  3. 一旦 ARP 表中毒,这将允许入侵者假冒另一台主机来访问敏感信息。

ARP 欺骗是在 MitM 攻击过程中完成的,它允许恶意行为者获取通常发往另一台主机的流量。

在下图中,恶意参与者发送了一个伪造的 ARP 回复,然后毒害了所有网络设备中的缓存。网络上的所有主机现在都认为10.40.10.10346:89:FF:4C:57:BB处,而不是00:80:68:B4:87:EF处,并将使用伪造的 MAC 地址去找攻击者:

Figure 1.6 – An ARP spoof attack

图 1.6-ARP 欺骗攻击

然后,恶意参与者将使用主动嗅探来收集被误导的流量,试图获取敏感信息。在大多数情况下,发送给恶意行为者的流量被转发给受害者,而受害者并不知道有什么不对劲。

现在,我们已经看到许多人可以从数据包分析中受益。在下一节中,我们将研究数据包分析在哪里最有效。

确定在哪里使用数据包分析

要进行有效的数据包分析,第一步是获得良好的捕获。有许多地方可以进行数据包分析,包括 LAN、主机或现实世界。让我们从在局域网上使用数据包分析开始。

分析局域网上的流量

今天的网络很复杂。企业网络为网络上的客户端提供连接、数据应用和服务,如下图所示:

Figure 1.7 – A LAN

图 1.7–局域网

大多数局域网是异构的,有各种操作系统,如 Windows、Linux 和 macOS,以及各种设备,如软电话、平板电脑、笔记本电脑和移动设备。根据业务需求,网络可能包括广域网连接和电话。

要有效地使用数据包分析,放置是关键。并不是所有的流量都是一样的。根据位置的不同,您可能只能捕获总网络流量的一部分。如果数据包嗅探器位于主机或终端设备上,那么它将能够看到网段冲突域上的流量。如果嗅探器镜像主干上的所有流量,那么它将能够看到所有流量。

在某些情况下,您可能需要在个人主机(如 PC)上执行数据包分析,以便只监控目的地为该主机的流量。在其他情况下,您可能需要收集交换机上的流量,以查看通过交换机端口的流量。

嗅探网络流量

数据包分析可以在单个主机上、在交换机内或根据流量进行。区别如下:

  • 如果协议分析器安装在连接到交换机的客户端设备上,则网络流量视图会受到限制。在单个交换机端口上嗅探流量时,您只会看到广播、组播和您自己的单播流量。
  • 要查看交换机上的所有流量,网络管理员可以使用端口监控或交换端口分析器 ( SPAN )。在某些情况下,您可以在交换机内进行监控,因为 Wireshark 内置于 Cisco Nexus 7000 系列和许多其他设备中。
  • 另一种选择是使用与流量一致的全双工分路器。分路器对流量进行复制或镜像,并将其导入设备进行分析。如果使用这个选项,那么您可能需要一个特殊的适配器。

除了在 LAN 或主机上使用数据包分析之外,数据包分析还可以在现实世界中用于监控流量中的威胁。

在现实世界中使用数据包分析

数据包分析在现实世界中以多种形式使用。一个例子是国土安全部(DHS)爱因斯坦系统,该系统在联邦政府网络安全中发挥着积极作用。美国政府不断面临多种类型攻击的风险,包括 DoS 攻击、恶意软件、未经授权的访问以及主动扫描和探测。

**爱因斯坦系统会主动监控流量中的威胁。它的两个主要功能如下:

  • 观察和报告可能的网络威胁
  • 检测和阻止危害联邦机构的攻击

爱因斯坦系统提供了对主动攻击采取主动措施所必需的态势感知。收集的情报有助于机构防御持续的威胁。

如图所示,数据包分析在许多地方都很有效。以下部分提供了在什么情况下数据包分析将获得最大收益的指导。

概述何时使用数据包分析

我们在许多方面使用数据包分析。我们可以解决延迟问题,测试物联网设备,监控威胁,并为网络设定基线。让我们从故障排除开始,评估一些此类活动,故障排除是数据包分析的常见用途。

Troubleshooting latency issues

Wireshark can be a valuable asset when troubleshooting issues on the network. There are many built-in tools designed to gather and report network statistics. We can analyze network problems and monitor bandwidth usage per application and process. The information gathered can help identify choke points and maintain efficient network data transmission.

协议分析使网络管理员能够监控网络上的流量,发现问题,确定性能可以微调的地方。例如,如果您怀疑有延迟,可以在您怀疑有问题的区域获取一个捕获,然后运行 Stevens 图,如下面的屏幕截图所示:

Figure 1.8 – A Stevens graph

图 1.8-史蒂文斯曲线图

一旦图完成,您就可以检查能够突出通信流中的错误的细节。例如,沿着图表的顶部,我们看到一条持续大约四(4)秒的直线。该线代表传输中的间隙,可能需要进一步调查。

除了排除网络故障之外,许多人还发现 Wireshark 在组织实施物联网设备之前如何成为测试物联网设备的宝贵资产。

测试物联网设备

物联网是智能设备的无处不在的转变,这些智能设备嵌入到连接到互联网的日常物品中,使它们能够发送和接收数据。物联网有几个组成部分:人、基础设施、事物、流程和数据。物联网已经成为一个价值数十亿美元的行业,消费者和行业都从中受益。

即使有这些好处,在将物联网设备连接到网络之前,最好还是进行一些测试。使用 Wireshark 可以帮助您了解将设备接入网络时会发生什么。以下是 Wireshark 可以帮助确定的问题列表:

  • 一旦设备处于活动状态,它们如何进行通信?他们会主动打电话回家吗?
  • 它们传达什么信息?用户名和密码是明文发送的吗?

了解这些设备行为的唯一方法是插入一个设备,捕获数据交换,并分析数据包捕获。获得的信息可以为物联网设备的漏洞提供有价值的见解。

除了故障排除和测试之外,Wireshark 还有助于主动威胁评估。

监控威胁

监控威胁有三种方式:

  • 主动:通过使用 IDS 等设备监控您的系统并防范威胁。
  • 主动:主动通过进行数据包分析和监控日志文件来寻找威胁。
  • 反应:系统成为攻击的受害者,事件响应团队管理攻击,随后进行取证练习。

Wireshark 可以帮助安全分析器积极监控威胁。虽然 Wireshark 不提供任何警报,但它可以与 IDS 结合使用,调查可能的恶意网络活动。

例如,在使用 snort(一种开源 IDS)时,传感器产生了以下警报,这可能表示受保护网络上有恶意活动:

删除的 WEB-MISC text/html content-type 不带 HTML-可能是恶意软件 C&C(检测到非标准协议或事件)[16460]

此警报表示受感染的主机可能正在与外部实体通信,并将在网络上收集的信息发送给僵尸主机。安全分析器应立即采取行动,在网络的不同网段进行捕获,以识别和缓解威胁。

行业也看到了使用 Wireshark 进行威胁监控的价值。例如,在Cisco Certified cyber ops Associate认证预备课程中,学生们学习如何使用 Wireshark 观察和监控异常流量模式,同时磨练他们的技能,准备在安全运营中心 ( SOC )与网络安全分析器一起工作。

为了确定哪些流量是异常的,或者正确地排除网络故障,您必须能够确定什么是正常的网络活动。这是通过执行基线来实现的,如下一节所述。

建立网络基线

网络基线是定义正常活动的一组参数。基线使用 Wireshark 或tshark提供了一段时间内网络流量的快照。基线的关键特征包括利用率、网络协议、有效吞吐量、转发速率和网络延迟。网络团队可以使用基线进行预测和规划,以及优化、调整和故障排除。

基线流程经历几个阶段:计划、捕获、保存和分析。完成基线后,网络分析器就可以查看捕获的数据,以评估端到端通信的总体性能。建立网络基线有助于获得有关网络健康状况的有价值信息,并可能发现当前的网络问题。除此之外,后续的基线练习可以帮助预测未来的问题。

每当计划安装新设备时,最好在改变之前做一个基线。实施后,进行另一次捕获,以便您可以识别通信流中可能存在的问题,然后微调配置。

如您所见,我们可以通过多种方式使用数据包分析来进行监控、测试、基线和故障排除。但是,由于能够获取敏感信息或作为攻击的前兆,数据包分析只应在以下情况下进行:

  • 网络是您自己的,或者您已经获得明确的许可来进行数据包分析以进行安全扫描。
  • 它是在排除网络连接问题时完成的。

此外,应考虑维护所收集数据的隐私,并采用适当的方法来获取、分析和保留任何数据包捕获。

如上所述,我们现在知道了使用数据包分析的许多原因。让我们总结一下 Wireshark,它是当今最强大的数据包分析工具之一。

了解 Wireshark

20 世纪 90 年代末,Gerald Combs 需要一种工具来分析网络问题。当时有便携式嗅探器,但价格昂贵。Gerald 在一些朋友的帮助下开发了 Ethereal,这个后来变成了 Wireshark。它已经存在了 20 多年,并随着时间的推移继续发展和改进。

Wireshark 的优势是能够通过使用解码器或解析器将捕获的比特解码成可读格式。

剖析器提供如何根据适当的 RFC 或其他规范将协议分解成适当格式的信息。

Wireshark 可以解码数百种不同的协议。新的解剖器定期添加到库中。此外,您可以通过开发自己的解析器来解码专有和专业协议。

Wireshark 与许多其他嗅探器兼容,并且具有多种用于导入和导出的文件格式。其他一些特性包括如下:

  • 合并数据包捕获。
  • 提供 VoIP 流量的详细分析。
  • 创建基本和高级 I/O 图形。

Wireshark 可以安装在大多数操作系统上,包括 Windows、Solaris、Linux 和 macOS。

使用 Wireshark 一段时间后,您可以观察它如何帮助网络管理员了解流量、排除性能问题或建立网络基线。

总结

鉴于当今网络上传输的数据的多样性和数量,很容易理解为什么使用 Wireshark 进行数据包分析应该成为每个人的技能。在这一章中,我们简要地看了一下数据包分析是如何在 20 世纪 90 年代随着硬件嗅探器的使用而开始的。快进到今天,我们可以看到网络上的几乎每台设备都使用数据包分析来收集流量、检查内容,然后决定采取什么措施。

我们了解了开发人员、网络管理员、学生和安全分析器如何从数据包分析中获益。我们研究了许多进行数据包分析的地方:局域网、主机和现实世界。除此之外,我们还发现了数据包分析在当今网络中的各种用途,包括故障排除、测试物联网设备、监控威胁和基线。我们现在可以体会到 Wireshark 是一款出色的开源软件产品,它包含丰富的功能和各种工具,可以轻松解决问题和分析网络流量。

在下一章中,我们将研究 Wireshark 接口并回顾数据包分析的各个阶段。我们还将回顾内置的命令行界面 ( CLI )工具,如dumpcapeditcap。此外,因为 Wireshark 可能是资源密集型的,我们将了解tshark(或基于终端的 Wireshark)如何提供 Wireshark 的轻量级替代方案。

问题

现在是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 数据包分析作为一种诊断工具,用于观察网络中传输的数据和其他信息,自 _____ 以来就以某种形式出现了。
    1. 20 世纪 50 年代
    2. 60 年代
    3. 20 世纪 70 年代
    4. 20 世纪 90 年代
  2. 数据包分析在现实世界中以多种形式使用。一个是 DHS _ _ _ _ _ 系统,用于监控威胁。
    1. 雕工
    2. 小包裹
    3. 爱因斯坦
    4. 目的地 3
  3. 在专家系统中,_____ 提供有关典型工作流的信息,如 TCP 窗口更新或连接完成。
    1. 注意
    2. 闲谈
    3. 错误
    4. 警告
  4. ___ 使用 Wireshark 或tshark提供一段时间内网络流量的快照。特征可以包括利用率、网络协议和有效吞吐量转发速率。
    1. 一系列
    2. 多拉过程
    3. 基线
    4. 温切克
  5. 威胁监控有三种方式。_____ 是指系统成为攻击的受害者,事件响应团队管理攻击,随后进行取证工作。
    1. 积极主动的
    2. 反应的
    3. 活跃的
    4. 反应的
  6. 使用 Wireshark 测试 _____ 时,您将能够确定他们一旦激活后如何通信,并查看他们是否在没有提示的情况下呼叫总部。
    1. 美国学术团体委员会
    2. 专家系统
    3. 物联网设备
    4. IDSes
  7. 当获得 IP 地址时,DHCP 将经历一个称为 _____ 的四部分交易。
    1. 一系列
    2. 多拉过程
    3. 基线
    4. 温切克****

二、使用 Wireshark

Wireshark 是一种协议分析器,可以捕获流量,然后以人类可读的格式呈现出来。在本章中,您将深入了解 Wireshark 的整体功能,并了解如何排除网络流量故障、监控安全问题以及调试应用。我们首先来看看这个界面的一些特性。我们还将介绍在哪里可以找到快捷方式列表,这样您就可以自信而快速地捕获和分析数据包。

为了让您更好地了解 Wireshark 的成果,我们还将回顾一下参与此项目的众多作者的名单,他们帮助 Wireshark 成为一款出色的工具。我们还将看到您可以在界面的什么地方找到链接,这些链接提供了关于如何更好地使用 Wireshark 的有用信息。

为了更好地理解数据包分析过程,我们将简要回顾一下所涉及的每个阶段:收集解码显示,以及分析。然后我们将回顾补充 Wireshark 基本功能的内置命令行界面 ( CLI )工具。最后,我们将仔细研究一下tshark,这是一个轻量级 CLI 应用,您可以在需要捕获流量时使用它,而无需使用 Wireshark 的资源密集型开销。

本章将通过涵盖以下主题来解决所有这些问题:

  • 检查 Wireshark 接口
  • 了解数据包分析的各个阶段
  • 了解如何使用 Wireshark CLI 工具

检查 Wireshark 接口

Wireshark 为分析网络流量提供了一个全面的框架,它在大多数操作系统上都表现良好。界面简洁直观,提供快捷方式和方法,使导航更容易,并让您开始分析流量。在本节中,我们将了解 Wireshark 如何显示信息,以及在哪里可以找到键盘快捷键列表。我们还将看看使这个应用成为可能的许多作者,并描述一些您可以获得帮助和了解更多关于 Wireshark 的方法。

让我们先简要了解一下 Wireshark 接口。

简化界面

当您第一次启动 Wireshark 时,您会看到一个活动的接口列表。有些界面旁边有一个迷你图(或移动的图形符号)。当迷你图出现时,表示正在积极交换数据,您可以选择该接口并开始捕获流量。

如下图所示,Wi-Fi 和 VMware 网络接口都有活动迷你图:

Figure 2.1 – The Wireshark interface

图 2.1–Wireshark 界面

在分析过程中,Wireshark 有许多方法可以改善您的体验。例如,在 Wireshark 中处理数据包捕获时,您可以轻松地向界面添加列。只需右键单击数据包详细信息区域中的一个值,然后选择 Apply as 列,如下面的屏幕截图所示。选择此选项会将Flags字段添加为一列:

Figure 2.2 – Applying as a column

图 2.2–作为列应用

Wireshark 还包括智能滚动条,它位于数据包列表的右侧。当着色规则打开时,您可以看到问题的迹象,并快速找到问题点,这些问题点显示为深黑线。在下面的截图中, 1 突出了这一点:

Figure 2.3 – The Wireshark interface with enhanced features

图 2.3–具有增强功能的 Wireshark 界面

其他一些特性包括:

  • 有增强的图形,例如,易于使用的流程图和 I/O 图。
  • 有着色规则,很容易创建和编辑。
  • 显示相关数据包–您只需点击即可查看相关数据包(即虚线,如前面截图左侧的 2 所示)。
  • 它能被翻译成几种不同的语言。

凭借每年数百万的下载量,Wireshark 已经成为一个重要的工具。作为一个开源工具,它已经被证明是灵活的,并鼓励开发人员添加功能,以及改善整体外观。

每个新版本都改进了应用。改进可以包括修复简单的视觉或显示问题,以解决可能导致应用崩溃的更重要的问题,例如有故障的解剖器。当您更新 Wireshark 时,请花点时间阅读注意事项,其中包括如下信息:

  • 怎么样
  • 错误修复
  • 新的和更新的功能
  • 新协议支持
  • 更新的协议支持
  • 新的和更新的捕获文件支持
  • 新的和更新的捕获接口支持
  • 获得帮助
  • 常见问题

除了许多优点和功能之外,Wireshark 还提供了一种使用键盘进行导航的方法。接下来我们来考察一下这个概念。

发现键盘快捷键

每个人都有与 Wireshark 交互的偏好。有些人更喜欢使用键盘,因为它比使用鼠标更快更直观。

Wireshark 有一个键盘快捷键列表,可以通过选择帮助菜单选项,然后点击关于 Wireshark 并选择键盘快捷键选项卡找到,如下所示:

Figure 2.4 – Keyboard shortcuts

图 2.4–键盘快捷键

例如,当使用数据包捕获时,很多时候我会选择 Ctrl + + ,这将放大界面中的主要文本。

由于开源社区的慷慨,这些年来所有这些改进都是可能的。以下部分概述了如何查看谁参与了 Wireshark 的创建。

认识 Wireshark 作者

Wireshark 是开源的,在GNU通用公共许可证 ( GPL )下发布。它的成功归功于多年来为它贡献时间的许多开发人员。

当 Gerald Combs 和最初的开发团队首次发布 Ethereal T1 时,它的功能有限,只能解码不到六个协议。然而,多年来,开发人员增加了解剖器、功能和易用性。因此,Wireshark 已经成为当今最主要的网络协议分析器之一。

许多作者通过提供应用的持续开发和维护,为 Wireshark 的成功做出了贡献。一些人不断地加入他们的专业知识,而其他人只在他们需要特定的协议剖析者时才做出贡献。

任何人都可以参与,因为有大量关于如何添加基本解剖器的文档。如果您确实修改了 Wireshark 以添加解剖器或视觉增强,请与 Wireshark 团队分享您的工作,这样每个人都可以受益。

要查看 Wireshark 作者的当前列表,进入帮助菜单选项,点击关于 Wireshark 并选择作者选项卡,如以下截图所示:

Figure 2.5 – The list of Wireshark authors

图 2.5–Wireshark 作者列表

Wireshark 开发人员今天的目标是确保在 WindowsmacOSLinux 上的功能。您可以根据需要在任意数量的计算机上使用 Wireshark。所有的源代码都在 GPL 下,可以在当前的 Wireshark 源代码库中找到。

有时,你可能需要更多的信息或帮助来完成一项任务。在该界面中,有一个链接列表,将带您到外部资源。

查找信息

在 Wireshark 欢迎界面右侧的底部,您会看到学习标签,在那里您会找到用户指南维基问答邮件列表链接。在链接下方,Wireshark 会列出您正在运行的版本,以及您是否正在接收自动更新。

为了让您更好地理解使用 Wireshark 时会发生什么,下一节将介绍分析数据包的过程。

了解数据包分析的各个阶段

数据包分析是收集网络流量,对其进行解码并解析原始位,并以人类可读的格式进行分析的过程,如下图所示:

Figure 2.6 – The phases of packet analysis

图 2.6–数据包分析的各个阶段

无论使用何种软件,数据包分析都有四个主要阶段:收集解码显示,以及分析。在本节中,我们将回顾每个阶段,从第一步收集开始,在这里我们从网络收集数据。

收集网络流量

当您启动 Wireshark 时,欢迎屏幕会显示您当前设备上可用的网络连接列表。在大多数情况下,您将拥有不止一个接口。要立即开始捕获,您可以选择一个活动的迷你图并开始捕获。

或者,您可以进入捕获菜单,然后进入选项选项卡。这将打开以下窗口:

Figure 2.7 – The Capture Options window

图 2.7–捕获选项窗口

请记住,有两个关键领域将使您能够收集流量:以混杂模式捕获和使用捕获引擎。让我们首先讨论为什么在捕获之前启用混杂模式很重要。

以混杂模式捕获

使用 Wireshark 收集流量时,您可以在所有接口上捕获。但是,为了让您可以看到进入网络接口卡的所有流量,请确保在捕获选项对话框的输入选项卡中选择以下选项之一:

  • 勾选混杂列标题下界面旁边的框,如捕获选项对话框中间所示。
  • 勾选启用所有接口的混杂模式框,如捕获选项对话框左下角所示。

选择要监听的接口并将其置于混杂模式后,该接口会收集网络流量。为此,需要一个捕获引擎。接下来我们来探讨一下这个概念。

使用捕获引擎

有效地捕获流量的一部分是安装适当的数据包捕获 ( pcap )引擎。pcap 引擎提供了一个应用编程接口 ( API ),可以从网络中捕获流量,以便操作系统能够对其进行处理。

因此,在安装 Wireshark 时,您会看到一个窗口出现,提示您安装 Npcap 。通常,人们不确定是否应该安装 Npcap。然而,如以下截图所示,Wireshark 需要 Npcap 或 WinPcap 来捕获数据:

Figure 2.8 – The Wireshark prompt to install Npcap

图 2.8–安装 Npcap 的 Wireshark p rompt

如果您没有安装 Npcap 或 WinPcap,Wireshark 将不会按预期运行。

注意

虽然 WinPcap 可供下载,但它不再被主动维护。因此,在 Windows 机器上安装 Wireshark 时,Npcap 是首选的捕获引擎。

一旦您收集了流量,下一步就是转换原始位并将它们解码成适当的协议。

解码原始比特

流量以二进制形式进入网络接口卡,一次一帧。下图说明了如何将位转换为人类可读的格式:

Figure 2.9 – Converting bits into a human-readable format

图 2.9–将比特转换成人类可读的格式

在这个阶段,Wireshark 使用增强型数据包分析器 ( EPAN ),将比特解码为人类可读的形式。

穿越 EPAN

在 2006 年之前,Wireshark 被称为 Ethereal。名字后来变了,但是,主要核心是一样的。EPAN 是 Wireshark 的数据包分析引擎,它使用解析器(也称为解码器)。解析器提供关于如何根据适当的征求意见稿 ( RFC )或其他规范以适当的格式重新创建协议的信息。EPAN 包含四个主要的 API,如下图所示:

Figure 2.10 – The contents of the EPAN

图 2.10–EPAN 的内容

EPAN 组件描述如下:

  • 协议树:显示单个数据包的详细分析。
  • 解析器:这些提供信息关于如何将协议分解成合适的格式。
  • 剖析器插件:这些插件使用剖析器作为独立的功能。
  • 显示过滤器:这些允许你过滤捕获的数据。

在大多数情况下,Wireshark 能够正确识别和解析协议。但是,有时您需要帮助 Wireshark 解码协议。您可以通过右键单击该帧并选择解码为… 来实现,这将弹出以下窗口:

Figure 2.11 – The Decode As... window

图 2.11–解码为...窗户

在此窗口中,您可以修改值以匹配适当的协议。当协议没有专用端口或者它们运行在与通常不同的端口上时,这个函数非常有用。例如,当 HTTP 在端口8080而不是端口80上运行时,您应该使用 Decode As…

一旦比特被转换成适当的格式,下一步就是以人类可读的格式显示结果。

显示捕获的数据

在 Wireshark 和许多其他数据包分析工具中,有许多选项可以增强您的图形化体验。当您在 Wireshark 中打开数据包捕获时,主显示的默认布局在三个面板中,如以下屏幕截图所示:

Figure 2.12 – Wireshark’s main display, showing three panels

图 2.12–Wireshark 的主显示屏,显示三个面板

三个面板定义如下:

  • 数据包列表:这是一个所有捕获的数据包的列表,每行代表一个数据包。如果的数据包太多,无法在面板中显示,用户可以使用右边的滚动条浏览捕获。
  • 数据包详细信息:显示单个数据包的详细信息,包括协议和字段值。它还显示 Wireshark 特定的提示。以为例,当检查一个传输控制协议 ( TCP )报头时,你会看到在源端口和目的端口下面列出了[Stream index: n]。然而,没有名为流索引的字段值。是两个端点之间的通信,包括以下内容:
    • 端点 A 的套接字[IP 地址和端口]
    • 端点 B 的套接字[IP 地址和端口]

为了帮助跟踪所有数据流,Wireshark 在 TCP 报头中列出了每个数据流。如下图所示:

Figure 2.13 – A packet details panel

图 2.13–数据包详细信息面板

  • 数据包字节:这是单个数据包的十六进制表示,如数据包细节面板所示。任何纯文本数据都显示在右侧,如下面的屏幕截图所示:

Figure 2.14 – A packet bytes panel

图 2.14–数据包字节面板

注意

数据包字节面板的默认视图是十六进制。但是,您可以通过右键单击面板中的任意位置并选择将字节显示为位,将视图更改为位。

虽然默认布局是三个面板,但您可以随时个性化此视图。

更改布局

要更改主窗口的外观,进入编辑菜单选项,然后选择首选项。进入首选项窗口后,选择布局,在这里您可以将布局更改为多种不同配置中的一种,如下所示:

Figure 2.15 – Preferences | Layout

图 2.15–首选项|布局

Wireshark 显示捕获结果后,我们进入数据包分析的最后阶段:分析

分析数据包捕获

分析阶段可以实时进行,也可以通过使用预捕获的文件对捕获的流量进行故障排除和检查。可以使用 Wireshark 中的许多内置工具进行分析,其中包括:

  • 过滤流量以显示特定类型的流量,如 DNS 或 HTTP 流量
  • 搜索特定数据包,例如tcp.port == 443
  • 打开着色规则或使用专家系统轻松发现问题
  • 跟随流来查看单个对话的细节
  • 对各个帧进行深入的数据包分析,并检查每个报头的字段值

Wireshark 的统计菜单选项可以从基本信息功能(如捕获文件属性)到更详细的分析(如对话流图流图)。

除了 Wireshark 中的工具,您还可以对数据进行子集划分,以便与同事共享较小的文件,并为整个文件或单个框架添加注释。

尽管 GUI 易于使用和理解,但 Wireshark 界面及其所有增强功能、着色规则和快捷方式可能会占用大量资源。因此,最好熟悉一些 CLI 工具,我们将在下一节介绍这些工具。

将 CLI 工具与 Wireshark 配合使用

Wireshark 有几个 CLI 工具来补充的基本功能,并允许您执行几项任务,如编辑、分割和操纵数据包捕获。下表总结了一些可用的工具:

Table 2.1 – Wireshark’s built-in CLI tools

表 2.1–Wireshark 的内置 CLI 工具

所有的 CLI 工具都内置在 Wireshark 中,但是,在处理数据包捕获的工作时,它们也可以用作轻量级解决方案。

接下来,让我们来看看tshark,当你需要保存资源时,这是一个很好的选择。

探索沙克

Ethereal 开发过程的一部分包括终端 Ethereal ( 终端 ethereal ),这是一个 CLI 工具。Tethereal 后来改名为终端 Wireshark ( tshark )。

要在 Windows 机器上使用tshark进行捕获,进入 CLI 并构建命令,如下例所示:

c:\ Program Files \ Wireshark > t shark-I " Ethernet 2 "-w Test-t shark . pcap-a 时长:10

请记住,如果您有多个接口,您将需要使用ipconfig来找到哪个接口是活动的。

注意

Windows 计算机上的命令不区分大小写。

要运行和tshark示例,请遵循的以下步骤:

  1. tshark开始命令。
  2. 使用-i识别接口,然后输入接口名称。
  3. 要写入文件,使用-w,然后输入文件名和路径。请确保添加了扩展名。
  4. 要设置持续时间,使用-a,它是捕获自动停止,并以秒为单位设置持续时间。
  5. 按下键进入开始捕获。

完成后,在 Wireshark 中找到并打开pcap文件。如果您不将输出发送到文件,您将在屏幕上看到捕获的数据包列表:

Figure 2.15 – Output from running tshark

图 2.15–运行 tshark 的输出

位于 https://www . Wireshark . org/docs/wsug _ html _ chunked/chcustcommandline . html 的 Wireshark 文档列出了许多与tshark一起使用的开关。许多选项与您在使用 GUI 时可以使用的选项相同,例如添加过滤器和特定字段值,包括以下内容:

Table 2.2 – tshark options

表 2.2–t shark 选项

CLI 工具可以评估任何可以被 Wireshark 剖析的协议。如果您不确定是否支持特定的协议,您可以查看首选项对话框中的协议列表。

解剖协议

Wireshark 加载了数百个要分析的协议,并且每年都会添加新的协议。要查看是否支持特定协议,请转到编辑,然后转到首选项(如下图所示),并滚动查看所需协议:

Figure 2.17 – The Wireshark Preferences dialog with the list of protocols

图 2.17–带有协议列表的 Wireshark 首选项对话框

一旦进入协议首选项窗口,您就可以修改 Wireshark 解析协议的方式。例如,在前面的截图中,AOL Instant Messager 使用 TCP 端口5190,如果要使用另一个端口,可以更改该端口。

总结

在本章中,我们简要了解了 Wireshark 接口。我们了解了如何通过点击迷你图快速开始捕获,轻松地向界面添加列,以及使用智能滚动条颜色来识别故障点。现在,您可以体会到 Wireshark 的每个新版本是如何在众多开发人员不断更新软件的帮助下得到改进的。我们还介绍了在哪里可以找到键盘快捷键和其他信息。

然后,我们探讨了数据包捕获的各个阶段,从收集网络流量到将其处理成人类可读的格式进行分析。最后,我们看到了由于 Wireshark 可能是资源密集型的,因此有时使用 CLI 工具(如用于捕获数据包的轻量级应用tshark)会更好。

在下一章中,我们将探索在各种操作系统上下载和安装 Wireshark,如 Windows、macOS 和 Linux。然后,我们将花时间探索不同的捕获引擎,并浏览 Windows 安装,比较不同的下载选项。最后,我们将看看在https://www.wireshark.org/可获得的各种资源。

Questions

Now, it’s time to check your knowledge. Select the best response, then check your answers, which can be found in the Assessments appendix:

  1. (n)_ _ _ _ _ _ _(或移动的图形符号)表示主动交换数据。如果存在,您可以选择该接口并开始捕获流量。
    1. (同 gramsperlitre)克/升
    2. 迷你图
    3. 应用接口
    4. 维基网
  2. 为了能够看到进入网络接口卡的所有流量,请确保该卡处于 _____ 模式。
    1. 迷你图
    2. 请求评论
    3. 慷慨的
    4. 杂乱的
  3. ____ 引擎提供了一个 API,用于在操作系统处理流量之前捕获网络流量。
    1. 计算机辅助控制工程
    2. pcap
    3. tcap
    4. 首都信息
  4. _____ 提供了有关如何根据适当的 RFC 或其他规范将协议分解成适当格式的信息。
    1. 协议树
    2. 解剖过滤器
    3. 首都信息
    4. 解剖器
  5. Wireshark 有几个补充基本功能的 CLI 工具,可以将多个捕获文件合并成一个文件。
    1. tshark
    2. 首都信息
    3. mergecap
    4. text2pcap
  6. 如果您没有安装适当的 _____,如 Npcap 或 WinPcap,Wireshark 将不会按预期运行。
    1. 捕获引擎
    2. captap
    3. EPAN
    4. 字节牧马人
  7. 在 Windows 机器上运行tshark之前,您需要使用 _____ 命令确定哪个接口是活动的。
    1. netstat
    2. 用于查看本机的 IP 信息
    3. powercfg

三、安装 Wireshark

要开始捕获和分析数据包,您首先必须在您的计算机或笔记本电脑上下载并安装 Wireshark。好消息是 Wireshark 可以安装在各种不同的平台上。在本章中,我们将从学习 Wireshark 如何为不同的操作系统 ( 操作系统)提供支持开始。我们还将回顾捕获引擎的重要性,以及它如何成为收集网络流量的关键组件。

在 PC 上安装 Wireshark 时,您将有多种选择。为了让您能够自信地进行安装并做出正确的选择,我们将回顾不同的选项。安装后,您就可以开始捕获和分析流量。Wireshark 是开源的,不断得到增强和改进。您将发现许多在线资源,从中可以看到有助于改进工作流程的最新新闻和更新,以及几个下载选项。

本章将涵盖以下内容:

  • 发现对不同操作系统的支持
  • 比较不同的捕获引擎
  • 执行标准 Windows 安装
  • 审查 Wireshark.org 现有的资源

发现对不同操作系统的支持

Wireshark 是作为跨平台应用开发的开源数据包分析工具。Wireshark 使用 Qt 图形用户界面 ( GUI )库,它可以在各种硬件和软件平台上运行,只需对底层代码进行很少修改或不做修改。对于大多数操作系统来说,可以使用标准安装来轻松安装。

Wireshark 能够使用大多数现代默认系统功能。例如,配备 64 位 AMD64/x86-64 处理器以及充足内存和磁盘空间的系统将运行良好,出现的问题最少。然而,收集大于几百兆字节 ( 兆字节)的捕获可能会消耗太多内存,导致系统崩溃。

在本节中,我们将概述如何在 Microsoft Windows、Linux 或 macOS 上使用 Wireshark。让我们从开发者如何为 Windows OS 家族提供支持开始。

在 Windows 上使用 Wireshark

在今天所有的操作系统中,Windows 拥有最高的市场份额。Wireshark 将运行在大多数 Windows 系统上,因为它与 Windows 应用编程接口 ( API )进行本地交互。目前,Wireshark 可以在 Windows 8.1 和更高版本以及 Server 2012 R2、2016 和 2019 上运行。

重要说明

旧版 Windows 操作系统不再支持 Wireshark。因此,如果您仍在旧版本的 Windows 上使用 Wireshark,它可能无法按预期运行。

既然我们已经讨论了 Wireshark 如何在 Windows 环境中运行,那么让我们进一步讨论 Wireshark 如何在 Unix 平台上运行。

在 Unix 上运行 Wireshark

除了标准的 Windows 选项之外,Wireshark 还可以在多种 Unix 系统上安装和运行,例如 Oracle Solaris 11、FreeBSD 和 NetBSD。对于那些没有标准安装的操作系统,你可以去 https://www.wireshark.org/download.html 的 T2 获得大多数平台的 Wireshark 软件包。在那里,滚动到第三方软件包,在那里你可以看到许多其他平台可用的选项。

除了 Unix 之外,以下部分概述了 Wireshark 如何为 macOS 提供支持。

在 macOS 上安装 Wireshark

在 Wireshark.org 上,您会发现 macOS 10.13 及更高版本的安装。你可以像其他操作系统一样在 macOS 上下载并安装 Wireshark 。安装程序将引导你完成这个过程,就像在 Windows 机器上安装一样。这使得 Wireshark 对越来越多的 macOS 用户更加友好。

重要说明

在 macOS 上捕获数据包之前,您可能需要安装更改模式伯克利数据包过滤器 ( ChmodBPF ),这将允许 Wireshark 访问捕获设备。

由于 Linux 的广泛使用,下一节提供了关于 Wireshark 如何在 Linux 机器上轻松安装和使用的信息。

在 Linux 上部署 Wireshark

许多 Linux 平台都支持 Wireshark,包括 Ubuntu、Debian、SUSE 和 Red Hat。然而,在构建和安装阶段,您可能会遇到错误。

可能出现的常见问题包括:

  • 您的系统上没有必要的开发包。
  • 开发包已经过时。
  • 您缺少 libpcap 捕获引擎。

如果您能够安装 Wireshark,则捕获数据包时可能会出现问题,系统可能会显示错误,如下所示:

No interface can be used for capturing in this system with the current configuration. (Couldn't run /usr/bin/dumpcap in child process: Permission denied)  

如果您看到此错误,很可能是因为dumpcap需要提升权限,并且需要高级配置来捕获流量。运行以下命令通常可以解决此问题:

dumpcap setuid 根

此外,以根用户身份运行 Wireshark 也会导致问题。Linux 系统保护自己免受被认为是危险行为的攻击,这种行为会对操作系统造成伤害。因此,Wireshark 在 root 模式下可能无法运行,可能需要进一步配置才能实现。

随着新的操作系统进入市场,很高兴知道 Wireshark 在不断发展,以跟上当今网络环境中不断变化的需求。

以下部分概述了 Wireshark 在使用各种操作系统时的多功能性。

在其他系统上使用 Wireshark

Wireshark 可用于网络设备和服务器,以监控和分析流量。例如,几款思科设备支持 Wireshark,并在捕获网络流量的同时,为网络专家提供全面的最佳实践文档。Cisco 网络设备上的一些准则包括:

  • 在捕获之前,确保 CPU 没有过载,并且至少有 200 MB 的空闲内存。
  • 如果可能,限制捕获的大小或持续时间。

除了 Cisco 之外,IBM 还提供了大量关于如何获取 Wireshark 跟踪文件的文档。完成后,鼓励技术人员将他们的跟踪文件发送给 IBM support 进行进一步的分析。

许多其他公司已经发现了使用 Wireshark 进行数据包分析的价值,并将该软件集成到各自的产品中。

如果您需要熟悉在 Linux 机器上使用 Wireshark,那么还有其他选择。下面的部分提供了如何轻松下载并开始使用预先制作的 Linux 虚拟机 ( VM )的指导。

下载预制的虚拟图像

虚拟机可以用来体验如何在 Linux 操作系统上使用 Wireshark 进行培训或测试。预制的虚拟映像可以在 https://www.osboxes.org/买到,在那里你会发现你可以从许多 Linux 操作系统中选择。

在某些情况下,您可以找到预装了 Wireshark 并准备运行的 Linux 操作系统。例如 BackBox 和 Kali Linux,它们不仅包括 Wireshark,还包括渗透测试中使用的其他工具。

使用预先制作的映像在生产网络上进行测试是不切实际的,因为虚拟机不具备与主机相同的可见性。然而,在课堂环境中学习如何在 Linux 操作系统上使用 Wireshark 进行培训或测试时,使用虚拟机是非常有益的。

使用 Wireshark 的另一个选择是使用便携的应用 ( 应用)进行捕获。

利用便携式应用

多年来,Wireshark 一直可以选择为 32 位操作系统下载 Windows PortableApps。随着时间的推移,开发人员现在已经为 64 位操作系统开发出了 Windows PortableApps。

便携应用选项使在便携媒体上运行 Wireshark 变得很容易。你可以在拇指驱动器和/或云驱动器上使用便携式应用,而不是安装在传统的计算机上,例如谷歌文档。

下载、安装并启动便携应用后,它将与使用标准安装一样。比如我选择了WiresharkPortable64_3.6.0.paf,把 app 上传到我的云硬盘。安装完成后,我打开了应用,如下图所示:

Figure 3.1 – Using the Wireshark portable app

图 3.1–使用 Wireshark 便携应用

使用便携式应用可以方便地在 Windows 系统上从可移动驱动器或云存储中运行 Wireshark。完成后,您可以断开连接,而不会留下任何数据。

重要说明

即使您不需要在主机上安装 Wireshark,您也需要安装 Npcap 来捕获数据包。

无论 Wireshark 在什么操作系统上运行,操作系统都需要一种从网络收集或捕获原始数据的方法。捕获引擎提取或捕获网络流量,以便将其发送到操作系统进行解析和分析。下一节将对目前可用的捕获引擎进行比较。

比较不同的捕获引擎

为了有效地捕获和分析流量,必须有一种方法在操作系统处理之前从网络收集原始流量。一个数据包捕获 ( PCAP )引擎提供了一个 API 来捕获流量。Wireshark 使用多种捕获引擎中的一种,如 libpcap、WinPCap 和 nPCap。让我们从概述 libpcap 开始。

了解 libpcap

Libpcap 是一个最初为类 Unix 操作系统开发的捕获引擎。Libpcap 被集成到 tcpdump、Snort 和其他包分析器中,以便在包离开网络接口时捕获它们。

Wireshark 和tshark使用 libpcap 并默认生成pcapng文件。Libpcap 和 tcpdump 在 http://www.tcpdump.org/的开发和维护。在 20 世纪 90 年代末,一个名为 WinPcap 的 libpcap 版本被用于 Windows,我们将在下面讨论。

检查 WinPcap

WinPcap 是一个捕获引擎,它使用特定于 Windows 操作系统的驱动程序,可以在 https://www.winpcap.org/的找到。WinPcap 支持从网络适配器捕获数据包,并在操作系统进行任何处理之前将其提交给 Wireshark】。

多年来,WinPcap 在 Windows 环境下,尤其是 Windows NT 系列中运行良好。安装 Wireshark 时,您会看到使用 WinPcap 的选项。不过,它最近没有更新,可能在某些版本的 Windows 10 上表现不佳。

为了克服性能问题,指导用户使用 Npcap,这可能会有更好的性能,如下一节所述。

抓住 Npcap

在 Windows 操作系统上使用 Wireshark 捕获数据包之前,您必须安装捕获引擎。因此,在安装过程中,用户将看到一个安装 Npcap 的选项。Npcap 来自 Nmap 项目,是 Windows 的数据包嗅探库。Npcap 基于 WinPcap/libpcap,但具有改进的功能和增强的捕获能力。

Npcap 提供了对网络驱动接口规范 ( NDIS ) 6.0 的支持,这是一个重大的版本增强。有了这种支持,就克服了 WinPcap 的局限性,并且很可能会改进 Windows 8.1 和更高版本机器上的捕获。

nPcap 与 WinPcap 兼容,可以与它一起运行,或者您可以卸载 WinPcap 并专门使用 Npcap 驱动程序。但是,如果您使用的是 Windows 10 或更高版本,Wireshark 文档建议使用 Npcap。

Npcap 还包括几个有助于改进功能的特性,我们将在接下来学习。

识别 Npcap 功能

其他一些 Npcap 特性包括回送数据包捕获,这在故障排除期间很有帮助,以及对 libpcap API 的支持。Npcap 还可以确保增强的安全性,因为它可以被设置为只在 Windows 机器上限制对 admin 的访问。如果设置了此选项,那么用户将必须在 Windows 用户帐户控制 ( UAC )对话框中授权使用驱动程序。

Windows 机器上的标准 Wi-Fi 卡只能进入混杂模式,而不是监控模式。因此,在捕获流量时,您不会看到原始的 802.11 流量或 radiotap 报头。Wireshark 将包装流量,使它们看起来像一个以太网数据包;因此,他们有时被称为假以太网包

但是,通过 Npcap,用户可以在使用支持的无线适配器时捕获原始 802.11 数据包。这可以通过在安装 Npcap 期间选择以下选项来轻松实现:

支持无线适配器的原始 802.11 流量(和监控模式)

一旦选定,Npcap 将有两种模式:

  • 管理模式:仅捕获以太网数据包
  • 监控模式:使用wlanhelper.exe,这将允许您切换到监控模式,并收集所有 802.11 流量,包括具有 radiotap 报头的数据、控制和管理数据包

因为无线网络如此普遍,所以 radiotap 报头使我们能够在排除无线流量故障时可视化信息。我们来探讨一下这个概念。

无线电接头故障排除

排除 Wi-Fi 故障时可以使用 Radiotap 报头,因为它们可以提供与每个 802.11 帧相关的大量信息。例如,您可以评估信号强度和天线噪声,它们都以负分贝每毫瓦(-dBm)显示。在 radiotap 报头中发现的其他指示符包括:

  • 频道频率
  • 数据率

要查看您可能在 radiotap 报头中看到的内容,请访问:https://www.cloudshark.org/captures/ca7828d13464?filter = frame % 20 and % 20 radio tap % 20 and % 20 WLAN % 20 and % 20 WLAN _ aggregate

进入 CloudShark 后,从屏幕右侧的菜单中选择导出 | 下载文件,如下图所示:

Figure 3.2 – Downloading the file from CloudShark

图 3.2–从 CloudShark 下载文件

下载窗口打开时,选择下载原始文件并在 Wireshark 中打开。选择帧 1 并展开 radiotap 标题查看详情,如以下截图所示:

Figure 3.3 – Radiotap header

图 3.3–无线接头头

对无线连接进行故障诊断时,随着设备远离接入点,信号强度会减弱。如果信号太弱,设备将无法有效接收流量。

信号强度的一些建议值如下:

  • -30 dBm 是最佳水平,数据速率很可能很高。
  • -67 dBm 是一个合适的水平,数据速率对于大多数应用来说是可以接受的。
  • -70 dBm 是一个不太理想的信号,数据速率很可能会受到影响。
  • 大于-80 dBm 是不可接受的。

图 3.3 所示,天线信号为-69 dBm,处于次优信号的边缘,可能导致数据速率下降。

重要说明

请记住,在评估信号强度和噪声等值时,这些值只是估计值,而不是精确值。

现在我们已经了解了不同的捕获引擎,让我们来探索在 Windows 操作系统上安装 Wireshark 时可供选择的各种选项。

执行标准的 Windows 安装

Windows 安装是一个简单的过程,向用户提供一系列提示,这些提示提供默认值,用户可以选择接受或拒绝。安装之前,请确保您满足任何系统要求。大多数情况下,用户访问控制 ( UAC )会调暗屏幕,要求确认运行程序。

对于每个新版本,组件、选项和安装顺序可能会有所变化。以下是您在进行常规设置时可能会看到的对话框列表。我们将从您通常会看到的前两个开始,即欢迎和许可协议。

开始安装

开始安装时,Wireshark 会显示一系列提示。以下通常是您将看到的前两个屏幕:

  1. 欢迎屏幕:Wireshark 安装开始时会发出警告,以确保 Wireshark 在启动向导之前没有运行,向导将引导您完成安装。
  2. 许可协议:下一个屏幕概述了许可条款,在进入下一步之前,必须阅读并同意这些条款。

注意

阅读许可可能是值得的,因为它提供了许可协议的详细概述,特别是 Wireshark 是根据 GNU 通用公共许可证发布的,而不是 Unix 的。

前两个提示相当简单。下一节详细介绍了在安装过程中应该选择哪些组件。

选择组件

在安装过程中,您可以选择接受或拒绝某些组件。选择组件有多种选择。用户可以接受所有选择,也可以选择安装特定的组件,如下面的屏幕截图所示:

Figure 3.4 – The Choose Components screen

图 3.4–选择组件屏幕

选择要安装的组件时,第一个选择是是否安装 Wireshark 。虽然这可能是显而易见的,但用户可能想要安装tshark,这是一个轻量级的 CLI 工具,不像完整的 Wireshark GUI 那样需要大量资源。

下一节包括 Wireshark 和tshark的额外特性和协议解析器。让我们来看看。

选择插件和扩展

该部分包括插件和可以改进功能的扩展。在此部分,您会发现许多选项,概述如下:

  • 解剖器插件:包含扩展解剖器的插件
  • 树形统计插件:提供扩展统计
  • 元分析和跟踪引擎(MATE) : P 提供过滤彼此相关的帧的能力
  • Transum :用多种不同的协议计算响应时间
  • 文件类型插件:抓取文件支持
  • 编解码器插件:为编解码器提供额外的支持
  • 配置简档:创建特定于用户或协议的定制简档
  • 简单网络监控协议(SNMP) MIBs :提供对 SNMP 更广泛的剖析。

除了插件之外,Wireshark 还包括一组工具,我们将在接下来了解这些工具。

选择工具

Wireshark 有一个超过十几个命令行工具的列表供选择。列表的第一部分包括处理数据包时增强功能的工具,如下所示:

  • Editcap :允许你调整时间戳,删除数据包,转换文件格式。
  • text 2 cap:提供了获取 ASCII hexdump 并将文件转换为 libpcap 格式的捕获文件的能力。
  • Mergecap :当您需要合并捕获文件时使用,因为它将两个或多个文件合并为一个,或者通过附加或者通过时间戳合并。
  • Reordercap :通过对时间戳进行排序并将其转换为输出文件,重新排列来自输入文件的数据包。
  • DFTest :当需要调试一个显示过滤器 ( dfilter )时使用,DFTest 会显示显示过滤器字节码。
  • capiinfos:提供信息,比如包的数量、持续时间,以及关于一个捕获文件的其他信息。
  • CapType: 将识别多种支持文件格式中的一种,然后打印文件类型
  • Rawshark :当需要外部(第三方)集成或导出时,将输出并分析原始 pcap 数据。
  • MMDBResolve :将使用 GeoLite2 数据库通过 IPv4 和 IPv6 地址识别并打印数据包的地理位置

列表的后半部分包含使用外部数据的工具,包括:

  • Androiddump :当需要从 Android 设备上进行捕获时使用。你需要有安卓软件开发工具包 ( SDK )以及访问该设备的许可。
  • Sshdump 和 Ciscodump :这些为提供一个接口,通过安全外壳 ( SSH )连接远程捕获来自 Cisco 路由器的流量。
  • UDPdump :提供一个捕获接口,当调试运行在 UDP 上的应用时,该接口从网络设备中提取用户数据报协议 ( UDP )数据包。
  • Randpktdump :在测试期间或出于教育目的,使能够访问随机数据包发生器 ( randpkt )。
  • Etwdump :提供对事件跟踪日志 ( ETL )文件的访问,该文件是由微软 Trace Log 生成的日志文件。

除了插件、扩展和工具,您还可以选择获取用户指南。

获取用户指南

虽然有大量的资源可用,但选择此选项将包括一份用户指南,您可以离线访问。

如您所见,在 Wireshark 安装过程中,您可以选择许多组件。请记住,这些选项会定期变化。

接下来的两个提示提供了关于快捷方式、概述文件扩展名和决定安装文件夹存放位置的选项。

创建快捷方式并选择安装位置

在安装过程中,您可以选择是否要为 Wireshark 开始菜单项Wireshark 桌面图标Wireshark 快速启动图标添加一些快捷方式,如下所示:

Figure 3.5 – The Additional Tasks screen

图 3.5–附加任务屏幕

此外,您将能够包括所有可用的文件扩展名。

下一个提示会给你一个选择安装位置的选项。此时,您可以选择默认位置或浏览至用户定义的文件夹。Wireshark 将提供所需空间的信息。

除了前面列出的那些,你还需要做更多的决定。这些包括选择一个捕获引擎,以及在完成安装之前是否使用 USB 捕获。

捕获数据包并完成安装

Wireshark 需要一个捕获引擎来收集网络流量,并将查询系统以查看是否存在捕获引擎。

以下提示用于捕获流量,以及 Wireshark 完成安装后您应该看到的内容。

Checking for a capture engine

At this point, Wireshark will check whether Npcap or WinPcap is installed. You are then presented with a Packet Capture screen that states Wireshark requires either Npcap or WinPcap to capture live network data, as shown in the following screenshot:

Figure 3.6 – The Packet Capture screen

图 3.6–数据包捕获屏幕

如果你有 Windows 8.1 或更高版本,那么 Npcap 很可能是一个合适的选择。Wireshark 提供链接供用户执行以下操作:

  • 如果需要,获取 Npcap
  • 了解有关 Npcap 和 WinPcap 的更多信息

Wireshark 还提供可选的 USB 捕获

使用 USB 接口

有时,有必要捕获 USB 流量。该选项检查以确保您当前安装了 USBPcap,如果没有,则提供安装它的选项,如下面的屏幕截图所示:

Figure 3.7 —The USB Capture screen

图 3.7—USB 捕获屏幕

您可能会发现需要使用 USB 捕获,例如,用于故障排除或监控交易。如果您选择不安装 USB 捕获,那么您可以在以后安装它。

完成所有选择后,Wireshark 会显示一条通知,告知您该过程已经完成。

完成 Wireshark 设置

完成后,屏幕将显示安装过程中提取的文件的输出。这时候你可以选择运行 Wireshark。此外,您还可以选择显示新闻,这将调出最新的 Wireshark 新闻和信息。

由于可供选择的方案多种多样,这可能看起来让人不知所措。有帮助。下一节概述了 Wireshark 主页上的许多资源。

查看可用资源

当你第一次访问 https://www.wireshark.org/时,你会看到一个提供下载选项的页面。此外,在顶部还有几个链接,可以链接到新闻、哪里可以找到帮助以及到哪里可以见到其他 Wireshark 用户等资源。

让我们看看你能在哪里找到最新的消息。

查看新闻和帮助主题

新闻部分,您可以找到 Wireshark 改进、漏洞和错误修复的最新消息。在那里,您可以深入到发行说明的特定版本并找到更多信息。

在页面的下半部分,您可以找到 Wireshark 过去发布的新闻事件的链接,如下图所示:

Figure 3.8 – The News section at Wireshark.org

图 3.8-Wireshark.org 的新闻部分

结识菜单选项提供了到关于页面的链接,在这里您可以找到 Wireshark 的一般信息,包括功能、作者、奖项和荣誉。此外,你会找到另一个下载 Wireshark 的链接,但你也会找到一个博客。值得访问该博客,因为其中有开发人员的个人见解,包括最初的开发人员 Gerald Combs。

使用以下链接,获取帮助菜单列出了许多提问的机会:

  • 问一个问题
  • 常见问题解答
  • 文档
  • 邮件列表
  • 在线工具
  • 维基
  • 问题跟踪器

这些资源将帮助您了解 Wireshark 的最新信息。Wireshark 社区非常有助于帮助用户和新手解决问题。我们鼓励来宾访问提问论坛,在这里您可以查看一些问题,注册用户可以发表回复。如下图所示,有几个主题需要研究:

Figure 3.9 — Questions in a Wireshark forum

图 3.9—Wireshark 论坛中的问题

虽然我们大多数人都是 Wireshark用户,但有数百名开发者多年来一直在努力改进 Wireshark。开发菜单选项列出了各种链接——参与开发人员指南浏览代码最新构建

SharkFest 菜单选项将指向 Wireshark conference,SharkFest。在该会议上,您可以接受培训,获得实践经验,并在 Wireshark 社区和使 Wireshark 成为可能的开发人员之间建立联系。

每个人都需要一个担保人。我们的赞助商菜单选项将带您找到促成鲨鱼节的赞助商。

因为大多数情况下您会访问 Wireshark 主页来下载 Wireshark,所以下面几节将探讨您在下载 Wireshark 时可能会发现的选项。

评估下载选项

在 Wireshark.org 的下载页面,你会看到你想要的文件类型的选项,以及的版本。您可以从稳定、旧稳定和文档中选择。下面的截图显示了稳定版下的下载选项:

Figure 3. 9 — Choices for downloads under Stable Release

图 3。9-稳定版本下的下载选择

在大多数情况下,你会选择稳定版本下的一个选项,这是最新版本的 Wireshark。稳定版将解决大部分问题,并以最佳水平运行。下面列出了可用的选项:

  • Windows Installer :它为 64 位或 32 位 Windows 操作系统提供标准下载。
  • Windows PortableApps (64 位)(32 位):这是一个选项,您可以从闪存驱动器运行以进行故障排除,而不必安装在系统上。
  • macOS Arm 64 位。dmg英特尔 64 位。dmg :这是 macOS 用户安装、下载并解包磁盘镜像()然后运行安装的选项。在某些情况下,您可能需要在 Wireshark 中完成额外的配置选项来解决任何错误。
    *** 源代码:这提供了源代码的存档,您可以在其中研究各种文件。以下是在下载页面选择源代码选项时的结果截图:**

**Figure 3.11 – The Source Code option on the download page

图 3.11–下载页面上的源代码选项

重要说明

如果您对开发很认真,那么您应该从 Wireshark 的 Git 存储库中获取并更新您的代码。Git 会自动将更改合并到您的个人源代码中,这样您就可以随时更新您的源代码。

值得花时间探索https://www.wireshark.org/上的所有资源,帮助您了解更多关于数据包分析的知识,并找到 Wireshark 的最新信息。

总结

在本章中,我们介绍了如何在各种不同的操作系统上轻松下载和安装 Wireshark。至此,您对不同的捕获引擎以及它们如何提供从网络收集流量的方法有了更好的理解。此外,您现在可以欣赏 Npcap,最新的捕获引擎。我们了解了 Npcap 如何提供增强功能,例如在使用支持的无线适配器时捕获原始 802.11 数据包的能力。

当您准备在 Windows 机器上安装 Wireshark 时,您会更加自信地逐步完成所有提示,从启动安装程序到完成安装。与大多数软件安装一样,用户有一些选择。为了让您在下载 Wireshark 时更好地了解众多选择,我们回顾了您需要的文件的各种选项,以及发布的类型。最后,你现在明白了,如果你真的遇到了麻烦,你可以得到帮助,Wireshark.org 的许多资源就是证明。

现在您已经了解了安装过程中所涉及的内容,您已经为下一章做好了准备,在下一章中,我们将探索 Wireshark 接口。我们将看看所有的元素,以帮助您在开始捕获和分析数据包时更好地导航。然后,我们将检查 Wireshark 欢迎屏幕,浏览各种图标和快捷方式。最后,我们将探索三个最常用的访问菜单选项,文件编辑视图,所有这些都将有助于改进您的工作流程。

问题

现在,是时候检查你的知识了。从多项选择中填空,然后检查您的答案,这些答案可在评估附录中找到:

  1. _____ 是一个捕获引擎,最初是为类似 Unix 的操作系统开发的,被嵌入到 Snort、TCPDUMP 和其他数据包分析器中,用于在数据包离开网络接口时捕获数据包:
    1. 首都信息
    2. 交配
    3. libpcap
    4. Transum
  2. 在对 Wi-Fi 进行故障排除时,可以使用无线接入点报头,因为它们可以提供与每个 _ _ _ _ _ 帧相关的大量信息:
    1. Eight hundred and two point three
    2. Eight hundred and two point one five
    3. Eight hundred and two point one one
    4. Eight hundred and two point eight
  3. _____ 是一个通过使用 IPv4 和 IPv6 地址来识别和打印数据包地理位置的程序:
    1. 憎恶
    2. tshark
    3. mergecap
    4. mmdbresolve
  4. _____ 是 Wireshark 的最新捕获引擎选项,具有许多增强数据包捕获的优势和功能:
    1. 空气帽
    2. Npcap
    3. WinPcap
    4. libpcap
  5. Wireshark 的工具之一 _ _ _ _ _ _ _ _ 允许您调整时间戳、删除数据包和转换文件格式:
    1. 编辑帽
    2. 首都信息
    3. 憎恶
    4. 重新订购
  6. 下载期间可用的工具之一是 _____,它使用许多不同的协议来计算响应时间:
    1. 生鲨
    2. Transum
    3. Randpktdump
    4. 交配
  7. 在 Wireshark,您可以在 _____ 部分找到 Wireshark 改进、漏洞和错误修复的最新信息:
    1. 相识
    2. 获得帮助
    3. 新闻
    4. Windows 安装程序

延伸阅读

请参考以下链接了解更多信息:

四、探索 Wireshark 界面

当您第一次启动 Wireshark 时,在熟悉所有元素之前浏览界面有时会令人困惑。一旦掌握了所有组件、工具栏和菜单选项,您就可以更有效地捕获和分析流量。在本章中,我们将从探索 Wireshark 界面开始,并回顾欢迎屏幕的所有要素,包括迷你图、捕获过滤器和界面。

虽然 Wireshark 目前有超过 10 个菜单选项,但在大多数情况下,您会发现有几个是更常用的。为了让您在界面中移动时更加自信,我们将检查 File 菜单,在这里您可以打开文件、保存、打印和导出捕获。我们还将研究编辑菜单,在这里您可以标记数据包、设置时间参考和添加注释。最后,我们将看一下视图菜单,以便您可以学习如何定制 Wireshark 界面的外观。

在本章中,我们将讨论以下主题:

  • 打开 Wireshark 欢迎屏幕
  • 浏览文件菜单
  • 发现编辑菜单选项
  • 浏览视图菜单

打开 Wireshark 欢迎屏幕

启动 Wireshark 后,您会在 Wireshark 欢迎屏幕的顶部找到菜单选项。如果您没有加载捕获文件,您会看到所有菜单选项都可用。但是,图标可能会变暗,如下面的屏幕截图所示:

Figure 4.1 – The Wireshark welcome screen

图 4.1–Wireshark 欢迎屏幕

一旦你打开了一个文件或者正在捕获数据包,这些图标就会被激活。

一旦进入欢迎屏幕,你很可能要么启动一个文件,要么开始捕获流量。因此,让我们从打开数据包捕获时可用的许多选项开始。

选择文件

在图标和显示过滤器下方,您会看到一个横幅,上面写着欢迎使用 Wireshark 。在横幅下面,您将看到打开标签,它将标识任何以前打开的可用数据包捕获。

如果你右击一个文件,你有以下选择:显示在文件夹中复制文件路径,或者从列表中删除

注意

在某些情况下,您可能没有列出任何文件。在这种情况下,显示在文件夹复制文件路径从列表中移除选项将不可用。

例如,在 Windows 操作系统 ( OS )中,如果您选择在文件夹中显示,如以下截图所示,这将启动文件浏览器:

Figure 4.2 – Right-click and Show in Folder

图 4.2–右键单击并在文件夹中显示

此时,您可以选择一个文件,将其拖到 Wireshark 屏幕上,该文件将会打开。

一旦开始捕获包,在打开文件区域中可能会有十几个文件。虽然这些文件是方便访问的快捷方式,但它们可能会分散注意力。如果要删除文件,导航到文件 | 打开最近的 | 清除菜单菜单,如下截图所示:

Figure 4.3 – The Clear Menu choice

图 4.3–清除菜单选项

接下来,让我们看看收集网络流量的选项。

捕获流量

当您准备好捕获流量时,您需要正确设置 Wireshark。你可以在屏幕中间的中找到捕获标签。在那下面,你会看到…使用这个过滤器:。在那里,您可以在提供的空间中应用捕获过滤器。

注意

捕获过滤器允许您在捕获过程中过滤特定的流量。如果您使用捕获过滤器,请注意,它会将您捕获的内容限制为您过滤的内容,并且您可能会错过有助于您分析的流量。

在捕获过滤器的右侧,您会看到一个下拉菜单,上面写着所有显示的接口。如果您想删除任何一类接口(如有线蓝牙虚拟,您可以从下拉菜单中选择一个,如下图所示:

Figure 4.4 – The display interface(s)

图 4.4–显示界面

在 capture filter 区域下方,您将看到可用接口的列表,并且您可以通过选择活动的迷你图来快速开始捕获流量。

打开数据包捕获或运行捕获进行分析后,您很可能会使用众多菜单选项中的一个。以下部分介绍了文件菜单中的功能。

探索文件菜单

当使用 Wireshark 界面时,文件是定位菜单,因为它包含所有与使用文件相关联的常见任务,如以下屏幕截图所示:

Figure 4.5 – The File menu

图 4.5–文件菜单

在本节中,我们将浏览在文件菜单中找到的许多选项。让我们从定位和打开文件、保存捕获和比较关闭文件时可用选项的方法开始。

打开、关闭和保存文件

文件菜单中的第一部分提供了许多定位和打开文件的选项,以便您可以开始您的分析。在查看菜单选项时,您会看到一条浅灰色的线将分组的对象分开。第一个分组与打开和关闭文件有关,它包括以下选项:

  • 打开将启动一个对话框,允许您选择任何支持的文件。
  • 打开最近的将列出任何最近访问过的文件。
  • 合并… 将允许您将文件与已打开的采集合并。当合并时,重要的是时间值是同步的,因为这是 Wireshark 用来合并两个文件的。
  • 从十六进制转储导入… 当有人从另一台设备向您发送十六进制转储进行分析时,这很方便。导入对话框将引导您在导入文件时选择适当的选项。
  • 关闭将关闭当前捕获。如果是新的捕获或您添加了注释,Wireshark 会询问您是否要保存该文件。

下一组由与保存文件相关的任务组成:

  • 保存允许您保存当前文件。如果您添加了注释或修改了文件,并希望保留这些更改,这将非常有用。
  • 另存为… 允许您将文件保存为默认扩展名以外的其他名称,.pcapng。进入对话框后,您可以从 Wireshark 提供的许多不同文件格式中进行选择。

文件集选项提供了处理一组文件的能力。例如,如果您正在执行一个防火墙规则集,并且您正在浏览整整一个月的文件,您可以逐个浏览该列表。选中该选项后,点击右键,您的选择将是列表文件下一个文件上一个文件

下面的文件菜单部分检查了导出捕获部分的许多方法。

导出数据包、字节和对象

您可能不想保存整个文件,而只想保存文件的一部分,甚至只想保存在文件中找到的对象。在这一部分,你会发现几个 
export 选项。

第一个选项是导出指定的数据包。对话框打开后,您可以仅包括显示的数据包、一系列数据包和标记的数据包,如下所示:

Figure 4.6 – The Export Specified Packets dialog box

图 4.6–导出指定的数据包对话框

另一个子菜单选项是导出包解析,其中提供了很多导出选项,如下图所示,包括逗号分隔值 ( CSV )、纯文本、 JavaScript 对象表示法 ( JSON ):

Figure 4.7 – The Export Packet Dissections menu

图 4.7–导出数据包剖析菜单

接下来的三个子菜单项提供了更多导出组件的方法,包括:

  • 导出包字节… :该功能将包字节导出到 C 数组中,这样您就可以将流导入到 C 程序中。
  • 将 PDU 导出到文件… :该菜单选项提供了许多导出选项。但是,此功能可能不会显示可用的输出,并且可能仅适用于特定的应用。
  • 导出 TLS 会话密钥… :如果文件中有会话密钥,选择此选项可导出可用于解密数据的密钥。如果没有传输层安全 ( TLS )密钥要保存,Wireshark 将显示弹出窗口。
  • 导出对象:该菜单选项允许您导出文件中的各种对象,如超文本传输协议 ( HTTP )对象。

在所有选项中,导出对象可以提供一种可视化数据流中各种对象的方式,比如文件、图像和可执行文件。接下来让我们探索一下这个选项。

导出对象

导出对象子菜单选项识别文件中找到的任何对象,并允许您保存和检查对象。一旦在子菜单中选择,点击右键可以看到选择,如下图所示:

Figure 4.8 – The Export Objects selections

图 4.8–导出对象选项

要查看您可以导出的示例,请导航至https://www.cloudshark.org/captures/0012f52602a3

一旦进入 CloudShark,从屏幕右侧的菜单中选择导出 | 下载文件。然后,在 Wireshark 中打开数据包捕获文件 http://packetlife.net/captures/HTTP.cap,。下载完成后,将其保存为HTTP.pcap

打开后,选择导出对象 | HTTP ,将显示找到的对象列表,如下:

Figure 4.9 – The Export Objects | HTTP dialog box

图 4.9–导出对象| HTTP 对话框

在此窗口中,您可以选择保存全部保存,甚至预览。如果在捕获中有多个对象,您可以使用文本过滤器功能深入到特定对象。

我选择了保存,然后导航到一个临时文件夹Export。对于文件名,我选择了logo.png,如下所示:

Figure 4.10 – The Export Objects | Save As dialog box

图 4.10–导出对象|另存为对话框

完成导出后,导航到文件夹并打开图像。你应该会看到 PacketLife.net 的标志。

如果文件中有其他对象,可以用类似的方式保存它们。或者,您可以选择保存所有,这将保存捕获的所有对象。

如您所见,Wireshark 中有许多导出组件的方法。在文件菜单的下部,有打印退出的选项,我们接下来会对其进行评估。

打印数据包并关闭 Wireshark

在检查数据包时,Wireshark 提供了多种方式来打印捕获的不同部分。使用HTTP.cap文件,选择打印,您将看到以下内容:

Figure 4.11 – The File | Print option

图 4.11–文件|打印选项

在那里,您可以选择将所有数据包、仅选定的数据包或一系列数据包打印成可移植文档格式 ( PDF ),然后您可以将它们包含在报告中。

完成您的分析后,您会想要退出应用。如果您选择退出,并且您有一个新的捕获,Wireshark 将询问您是否想要保存该文件。

运行捕获或打开文件后,您会想要开始您的分析。在下一节中,我们将介绍编辑菜单,在这里您可以发现使用数据包捕获时的许多可能性。

发现编辑菜单

编辑菜单允许您查找和标记数据包、设置时间参考、复制、提供创建配置文件的详细信息,或者修改您的偏好。以下是编辑菜单的截图:

Figure 4.12 – The Edit menu

图 4.12–编辑菜单

编辑菜单中,有众多选项。以下讨论概述了在 Wireshark 中复制各种项目和查找数据包的方法。

复制项目和查找数据包

在这一节中,我们将学习【Wireshark 如何使在接口中复制几个对象变得容易。此外,我们将了解如何在捕获中定位特定的数据包或字符串值。

让我们从覆盖复制子菜单中的许多选项开始。

概述复制选项

分析数据包时,您可能会看到想要复制的项目或值。编辑 | 复制菜单选项有许多子菜单进一步定义选项,如下:

Figure 4.13 – The Copy options

图 4.13–复制选项

使用HTTP.cap文件,我们将浏览选择不同复制选项时的一些结果:

  • As Plain Text: Selecting this option will copy the details of the frame in plain text. To view this option, go to frame five (5) and then select As Plain Text. It will appear as follows:

    编号时间源目的协议信息

    174.143.213.184 192 . 168 . 1 . 140 TCP 80→

    57678[ACK]Seq = 1 ACK = 135 Win = 6912 Len = 0 ts val = 835172948 Tsecr = 2216543

  • As CSV: The CSV format is useful if you need to import the data in a spreadsheet. This format will present the information with each value separated by a comma. To view this option, go to frame five (5) and select As CSV. This will copy the details of the frame, as follows:

    “编号”、“时间”、“源”、“目的地”、“协议”、“信息”

    " 5 "," 0.094268 "," 174.143.213.184 "," 192.168.1.140 "," TCP "," 80→57678[ACK]Seq = 1 ACK = 135 Win = 6912 Len = 0 ts val = 835172948 TSecr = 2216543 "

  • 如 YAML:YAML 不是标记语言 ( YAML )将信息呈现为 YAML 二进制转储。除了数据包的详细信息,您还将看到文件路径的详细信息。

  • 所有可见项:这将复制所选帧的所有元素。

  • 所有可见的选中树项目:这将复制选中树项目的所有元素。例如,如果我们转到第五(5)帧并选择 TCP 报头,此选项将复制所示的任何树项目:

Figure 4.14 – The expanded TCP header

图 4.14–扩展的 TCP 报头

然而,当使用这个选项时,它不会复制任何没有没有展开的树项目。例如,您将看不到 TCP Flags的细节,因为树还没有展开。

  • 说明:这将复制所选择的值。例如,转到第五帧(5),展开 IP 报头,然后选择源 IP 地址。选择编辑 | 复制 | 描述,将复制如下:Source Address: 174.143.213.184
  • 字段名:复制选中的字段名。比如转到第五帧(5),展开 IP 头,复制源 IP 地址的字段名选项。这将复制以下内容:ip.src.
  • :这将复制所选择的字段值。转到第五帧(5),展开 IP 报头,并选择源 IP 地址。这将复制 IPv4 地址:174.143.213.184
  • As Filter :这将基于您选择的 IPv4 地址或任何其他值创建一个过滤器。接下来,您可以将过滤器粘贴到显示过滤器区域,按下回车,Wireshark 将运行过滤器。

复制子菜单选择后,下一个分组提供了寻找数据包的方法。

定位数据包

进行分析时,您可能需要找到特定的数据包。以下是可以帮助您导航数据包捕获的选项列表:

  • Find Packet… :您可以在这里搜索特定的数据包,甚至在数据包捕获中查找字符串值。
  • 查找下一个:如果 Wireshark 找到了你要找的东西,查找下一个将转到下一个实例。
  • 查找上一个:如果 Wireshark 找到您要找的东西,查找上一个将返回到上一个数据包。

在处理数据包时,您可能会找到并标记感兴趣的数据包,以便以后可以返回到这些数据包。除此之外,您可能希望忽略特定的数据包。

标记或忽略数据包

在 Wireshark 中标记数据包很容易实现。选择数据包后,右键单击,Wireshark 将使用黑色背景和白色文本标记数据包,如下所示:

Figure 4.15 – Marking a packet

图 4.15–标记数据包

以下是标记数据包时可以使用的选项列表:

  • 标记/取消标记数据包:这允许您标记一个或多个指定的数据包,这将使数据包变成黑色以便于查看。
  • 标记所有显示的:标记所有显示的数据包。例如,如果您使用显示过滤器,Wireshark 将只标记显示的数据包。
  • 取消标记所有显示的:如果所有显示的数据包都已经被标记,那么这将取消标记所有显示的数据包。
  • 下一个标记:当数据包被标记后,该选项允许您移动到下一个被标记的数据包。
  • 先前标记:当数据包被标记后,此选项允许您导航回先前标记的数据包。

除了标记数据包以识别感兴趣的项目之外,您可能希望忽略特定的数据包。下表描述了在进行分析时如何选择要忽略的特定数据包:

  • Ignore/Unignore Packet :这允许您选择一个数据包,一旦选择,它将被,就好像该数据包从未存在过一样。数据包不会显示在统计数据或流图中;根本就忽略了。一旦选中,数据包行将有一个参考,显示为 <忽略> ,如下所示:

Figure 4.16 – Using the Ignore Packet option

图 4.16–使用忽略数据包选项

  • 忽略所有显示的:这将忽略所有显示的数据包,这意味着如果您使用显示过滤器,Wireshark 将只忽略显示的数据包。
  • 忽略所有显示的数据包:如果显示的数据包被忽略,选中时,Wireshark 将忽略所有显示的数据包。

虽然有些数据包可能会被忽略,因为它们在分析中没有任何价值,但您可能希望使用其他方法来确定延迟,我们将在接下来探讨这一点。

设置时间基准

在您的分析中,您可能有一组数据包,您希望在这些数据包中查看确切的延迟时间。在 Wireshark 中,您可以在数据包上设置您认为问题开始的时间参考,并观察时间值以查看传输中的间隙。Wireshark 提供了多种设置时间参考的方法,并提供了在参考中导航的方法。选项包括以下内容:

  • 设置/取消设置时间基准:设置/取消设置时间基准。
  • 取消设置所有时间参考:这将取消设置所有时间参考。
  • 下一个时间基准:一旦设置了一个基准,这允许您导航到下一个时间基准。
  • 以前的时间基准:一旦设定了基准,这允许您导航到以前的时间基准。

如果需要调整时间基准,可以使用时间偏移选项。

换接时间

如果在您的分析过程中,您需要合并两个使用不同文件格式的捕获,您可能想要使用时移。例如,如果一个文件使用了网络时间协议 ( NTP ),而另一个文件使用了精确计时协议 ( PTP ),这个选项将有助于同步这些文件。

选择此选项后,将会启动一个对话框,您可以在其中设置值,如以下屏幕截图所示:

Figure 4.17 – The Time Shift option

图 4.17–时移选项

如果得到意外的结果,最后一个选项使您能够撤消所有转换。

现在我们已经了解了如何在 Wireshark 中引用或转换时间,让我们来看看如何个性化您的工作区域。

个性化您的工作区域

使用捕获时,您可以通过使用注释或修改工作区的外观来记录您的更改。

使用注释时,有以下选择:

  • 数据包注释:这允许您在单个数据包中包含注释。
  • 删除所有数据包注释:删除所有注释。

此外,您可以通过以下方式微调界面:

  • 配置配置文件:这允许您创建特定于您的工作流程的定制配置文件。这是一个强大的功能,因为您可以创建几个概要文件,以便它们可以用于特定的应用或客户端。
  • 首选项:这是你可以调整字体和颜色甚至布局的地方。我们将在第六章个性化界面中更详细地介绍这一点。

*虽然编辑菜单被广泛使用,但是让我们来看看视图菜单,这样你就可以看到在分析过程中修改你的捕获的外观和感觉的许多方法。

浏览视图菜单

视图菜单中,您可以改变被捕获包的外观,它包括了对包进行着色、展开子树或在单独的窗口中显示包的方法。

让我们从调整工具栏和面板的方法以及如何进入全屏模式开始。如果您想继续,请使用HTTP.pcap文件。

增强界面

在 Wireshark 中,有几种方法可以改变和增强界面,包括我们如何查看工具栏以及我们希望哪些面板可见。我们将从顶部的工具栏开始。

工具栏部分代表许多菜单中相似项目的组合。进入此部分后,您将看到当前可用的三个工具栏的列表,如下所示:

Figure 4.18 – The View menu toolbars and Full Screen options

图 4.18–视图菜单工具栏和全屏选项

如果您看到一个勾号,如前面的屏幕截图所示,表示工具栏可见。工具栏解释如下:

  • 主工具栏:包含所有常用图标,如下:

Figure 4.19 – The main toolbar

图 4.19-主工具栏

  • 过滤器工具栏:这是你可以找到显示过滤器的地方。
  • 状态栏:该工具栏位于 Wireshark 屏幕的底部,列出了特定于活动文件的信息。信息包括应用了什么过滤器、捕获了多少数据包、显示了多少数据包,以及应用了什么配置文件,如下面的屏幕截图所示:

Figure 4.20 – The status bar

Figure 4.20 – The status bar

  • 下一个菜单选项是全屏,这将导致 Wireshark 填充当前窗口。

一旦你习惯了工具栏,你会发现它们提供了一种方便的方式来帮助你浏览界面。现在,让我们看看下一个分组,这是面板视图,因此您可以修改屏幕上可见的内容。复选标记表示面板可见。如果不希望面板可见,请取消选中该面板,它将从视图中隐藏:

  • 数据包列表:这是所有被捕获的数据包的列表,每行代表一个数据包。
  • 数据包详细信息:显示单个数据包的详细信息。
  • 包字节:这是单个包的十六进制表示。
  • 数据包图表:该面板将显示每个数据包以及每个报头的图表,如下所示:

Figure 4.21 – A packet diagram view

图 4.21–数据包图表视图

下一节概述了在 Wireshark 中显示时间值的选项,以及如何提供名称解析。

格式化时间和名称解析

时间显示格式名称解析菜单选项的子菜单中都有几个选项。我们将从时间显示格式选项开始,它提供了几种在 Wireshark 中查看时间值的方法。

显示时间

一旦你展开时间显示格式菜单选项,你会看到几个关于你希望你的时间如何显示的选项。选项包括日期和时间、年和日;以及自 1970-01-01 以来的时刻秒。

在进行分析时,最有可能的是,您将使用一种允许您可视化传输中的任何间隙的格式。在这种情况下,将使用以下选项:

  • 从捕获开始后的秒数:这将显示从捕获开始后已经过了多少秒。
  • 自上次捕获数据包以来的秒数:这将显示自上次捕获数据包以来已经过了多少秒。
  • 从先前显示的数据包开始的秒数:这在应用显示过滤器时使用,因为它将显示从先前显示的数据包开始已经过了多少秒,这将更准确地显示时间间隔。
  • 其他选项包括协调世界时 ( UTC )格式,如下:

Figure 4.22 – The UTC display options

图 4.22–UTC 显示选项

时间精度也是一个考虑因素。选择格式时,您可以选择显示多少个小数位。有几个格式选项,如下所示:

Figure 4.23 – The time precision options

图 4.23–时间精度选项

大多数情况下,最好使用默认的自动,这将是操作系统所能提供的最佳精度。

最后一个选项是显示带有小时和分钟的秒,设置后将如下所示:

Figure 4.24 – Display Seconds With Hours and Minutes

图 4.24–显示带有小时和分钟的秒

时间的整个概念在数据包分析中很重要。现在你知道如何轻松地修改时间的表示方式了。名称解析是另一个有几个选项的菜单选项。以下部分将概述可用于解析名称的选项,以及选择每个选项的理由。

解析名称

名称解析菜单下,您可以解析物理、网络和传输地址。在大多数情况下,Wireshark 可以毫无问题地解析物理地址和传输地址,因为它们都来自本地 Wireshark 文件夹中的一个文件。

为了解析物理地址,Wireshark 会查看 MAC 地址的前六位数字,即组织唯一标识符 ( OUI )。分辨率来自于manuf.txt文件,如下所示:

Figure 4.25 – The manuf file listing NIC card vendors

图 4.25–列出网卡供应商的 manuf 文件

为了解析传输地址(或端口号),Wireshark 查询services.txt文件,该文件包含服务列表和相关端口号。例如,简单邮件传输协议 ( SMTP )服务使用端口25。当 Wireshark 识别出端口25正在使用时,它会显示 SMTP 作为服务,只要你请求了域名解析。

该文件使用互联网数字地址分配机构 ( IANA )端口号文件以保持一致性,并可在 Wireshark 文件夹中找到,如以下截图所示:

Figure 4.26 – The services file listing ports and associated services

图 4.26–列出端口和相关服务的服务文件

解析网络地址选项将主机名解析为 IP 地址。通常情况下,此选项不会被选中,因为如果被选中,Wireshark 会要求操作系统联系 DNS 服务器来执行解析。此活动将会产生大量额外的网络流量。

如有必要,可以更改manufservices文件。此外,您还可以选择编辑解析名称,这将弹出一个名称解析首选项工具栏,您可以在其中编辑或添加名称。

处理捕获时,有一些方法可以增强您的视图,我们将在下一节中学习。

修改显示

为了查看您捕获的细节,有一些增强功能,包括放大、展开子树和给对话着色的能力:

  • 缩放:这允许你放大、缩小或返回正常尺寸。
  • 子树:在数据包捕获中,Wireshark 会折叠协议报头的细节。当您展开子树时,您可以看到协议的细节。如以下屏幕截图所示,展开的 UDP 子树提供了 UDP 头中所有字段值的详细视图:

Figure 4.27 – A UDP header with an expanded subtree

图 4.27–带有展开的子树的 UDP 头

完成后,您可以折叠子树。此外,您还可以展开和/或折叠所有的子树。

为了提高可视性和/或突出特定对话,您还可以使用颜色。

给包着色

在 Wireshark 中,有几种使用颜色的方法。着色格式包括以下几种:

  • 着色数据包列表:这是打开或关闭着色规则的快捷方式。此外,您可以在主工具栏的电话菜单下找到一个图标,如下所示:

Figure 4.28 – The Colorize Packets icon

图 4.28–给数据包着色图标

  • 着色规则:打开一个对话框,可以修改着色规则或创建新的着色规则。
  • 着色对话:这将着色两个端点之间的对话。您可以选择想要着色的内容,如以太网IPv4UDP——同时提供可供选择的颜色,如下面的屏幕截图所示:

Figure 4.29 – Colorize Conversation

图 4.29–彩色对话

最后一组菜单选项提供了刷新视图以重新加载、调整大小、在新窗口中显示数据包或查看内部内容的方法。

刷新视图

Wireshark 不限制您在界面中查看数据的方式。事实上,在最后一节中,我们将看到许多允许您查看捕获的数据包的选项:

  • 调整布局尺寸:选择该选项后,将调整可见面板的尺寸,使其具有统一的外观。
  • 调整列大小:与您可以在 Excel 中调整列大小以自动适应内容(AutoFit)一样,该选项将调整列以适应内容。当使用 IPv4 时,列可以很好地调整,但是使用 IPv6 会占用更多的空间,并且可能不会给你一个最佳的视图。

如果您是开发人员,下一节将概述允许 Wireshark 剖析和显示各种协议的幕后可用功能。

使用开发工具

内部菜单选项提供高级选项,包括以下子菜单选项:

  • 对话哈希表:显示识别每个对话的地址和端口组合。选择单个数据包,然后点击此选项以调出信息,如以下截图所示:

Figure 4.30 – The Conversation Hash Tables information

图 4.30–对话哈希表信息

  • 解剖器表:为每个支持的协议提供子解剖器表,如下例所示:

Figure 4.31 – The Dissector Table showing HTTP subdissectors

图 4.31–显示 HTTP 子分配器的剖析表

在该表中,您还可以找到子部门的全名和简称。例如,在 HTTP 子扇区列表中, JPEG 文件交换格式(HTTP 中的 JPEG 文件)的简称是 JFIF (JPEG)图像

  • 支持的协议:这将显示所有当前支持的协议和协议字段的详细列表,以及建议的过滤器和简要描述。

最后几个选项将刷新视图或重新加载捕获。

重新加载数据包

当使用 Wireshark 时,不缺少呈现数据的方法。一些附加的 vie w 选项包括:

  • 在新窗口中显示数据包:通常,您可能希望单个数据包作为弹出窗口出现在自己的窗口中。当您希望显示单个数据包的详细信息时,此选项可能非常适合于培训目的。
  • 重新加载:该选项将重新加载捕获,这将刷新捕获文件。如果您已经标记了数据包并且已经处理了文件,并且想要重新开始处理该文件,这将很有帮助。

重新加载为文件格式/捕获选项会给你一个 pcap 内部的视图。使用HTTP.pcap文件,我修改了布局,然后选择了选项,显示了这个视图:

Figure 4.32 – Reloading as File Format/Capture

图 4.32–作为文件格式/捕获重新加载

无论您是开发人员、网络管理员还是学生,您都可以欣赏 Wireshark 在处理数据包捕获时提供的许多灵活的显示和格式化数据的方式。

总结

在本章中,我们探索了 Wireshark 欢迎页面的所有元素,让您更好地了解可用的内容,甚至在打开数据包捕获之前。我们还仔细研究了常用的菜单选项,以便更轻松地浏览 Wireshark。首先,我们评估了文件菜单,它包含了所有与处理文件相关的任务。

接下来,我们研究了编辑菜单,它允许您查找和标记数据包、设置时间参考或修改您的偏好。我们以视图菜单结束,在这里您可以改变捕获包的外观,包括如何给它们着色、放大或在单独的窗口中显示包。

在下一章中,我们将学习在哪里以及如何利用数据流。因为您在捕获数据时看到的内容取决于您正在访问的网络类型,所以我们将回顾不同的网络体系结构。然后,当您准备好捕获时,我们将发现各种捕获选项,例如使用多个文件和定向输出。我们还将比较对话和端点之间的差异,并在结束时强调网络基线的重要性,以帮助进行故障排除练习。

问题

现在,是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 一旦您开始捕获包,您可能在打开的文件区域中有十几个文件。如果您想删除文件,请转到“文件”菜单。然后,选择打开最近的和 _____ 菜单。
    1. 清楚的
    2. 净化
    3. 删除
    4. 使新鲜
  2. 当您应用显示过滤器时,会使用自 _____ 开始的秒数,因为它会显示自上次显示数据包以来经过了多少秒,从而更准确地显示时间间隔。
    1. 最近创建的纪元
    2. 先前捕获的数据包
    3. 捕获开始
    4. 先前显示的数据包
  3. ___ 是打开或关闭着色规则的快捷方式。该快捷方式也可以在主工具栏上找到(在“电话”菜单下)。
    1. 彩色对话
    2. 着色规则
    3. 停止颜色过滤器
    4. 彩色数据包列表
  4. Wireshark 中的 _____ 菜单选项允许您控制所显示数据包的外观,包括放大、给数据包着色以及在单独的窗口中显示数据包。
    1. 文件
    2. 编辑
    3. 视角
  5. 使用数据包捕获时,菜单选项“编辑”允许您查找和标记数据包、设置时间参考、复制、提供创建配置文件的详细信息或修改您的首选项。
    1. 文件
    2. 编辑
    3. 视角
  6. _____ 位于 Wireshark 屏幕的底部。该工具栏位于 Wireshark 屏幕的底部,列出了特定于活动文件的信息。信息包括应用了什么过滤器、捕获了多少数据包、显示了多少数据包,以及应用了什么配置文件。

A.捕获工具栏

B.主工具栏

C.状态栏

D.过滤器工具栏

  1. 有时,您可能希望一个单独的数据包作为弹出窗口出现在它自己的窗口中。在这种情况下,您应该使用 _____ 选项。
    1. 加载开发人员视图
    2. 启动纯文本
    3. 重新加载布局
    4. 在新窗口中显示数据包*

第二部分:Wireshark 入门

在这一节中,我们将讨论接入数据流时的各种选项。我们还将概述个性化 Wireshark 界面的方法,以改进您的工作流程。然后我们将比较显示和捕获过滤器的使用,然后回顾 OSI 模型和数据封装过程。

本节将涵盖以下章节:

五、接入数据流

Wireshark 提供了捕获和分析网络流量的能力。它被各行各业、政府和非营利组织的网络管理员和安全分析器所使用。在分析之前,您需要接入数据流并从网络中捕获数据包。捕获后,您可以分析数据包以了解流量。在本章中,我们将回顾不同的网络体系结构,以及当今网络中的各种媒体。一旦概述完毕,这将有助于您更好地理解当今网络环境的复杂性。

为了让您可以放心地开始捕获流量,我们将查看各种选项,包括捕获、输入和输出。然后,我们将回顾当您接入网络时会发生什么,以便您可以确定您将看到什么类型的流量。我们还将比较和对比对话和端点。最后,为了让您更好地识别异常行为,本章最后讨论了网络流量基线的重要性。

本章将通过涵盖以下主题来解决所有这些问题:

  • 回顾网络架构
  • 学习各种采集选项
  • 进入小溪
  • 认识到基线的重要性

回顾网络架构

我们生活在一个激动人心但又充满挑战的历史时期。今天,我们基于互联网的生态系统要求业务网络几乎 100%的时间可用。企业网络必须能够适应不断变化的流量需求,并保持恒定的响应时间。此外,他们还必须足够敏捷,以应对意外的安全事件。

有效的数据包分析始于理解网络架构。为了确定从哪里入手来识别故障点,了解不同介质和设备影响网络流量的方式非常重要。在本节中,我们将比较目前使用的不同类型的网络,以及用于传输数据的各种类型的介质。

让我们从概述目前使用的不同类型的网络开始讨论。

比较不同类型的网络

今天的网络环境是复杂的,可以包括来自手机、媒体、物联网 ( 物联网)的数据。网络专家处理许多不同类型的网络,包括个人区域网(pan)局域网(LANs)校园网 ( CANs )和广域网(wan)。所有这些不同类型的网络都会影响数据传输的方式。

首先,我们将回顾在分析中可能遇到的最小网络,即 PAN。

发现潘

PAN 是一种网络,它在距离很近的设备之间共享数据,通常在 30 英尺的范围内。设备可以连接到互联网或其他网络。因为 PAN 中的设备通常使用低功率无线技术进行通信,所以 PAN 也被称为无线个人区域网 ( WPAN )。

WPAN 是一种短程网络,使用 IEEE 802.15 标准连接个人设备以交换信息,包括蓝牙、Zigbee 和超宽带等技术。

在 PAN 上进行数据包分析可能是为了对连接到互联网的物联网设备进行故障排除或测试,使它们能够发送和接收数据。使用 Wireshark,您可以研究协议,例如消息队列遥测传输 ( MQTT ),这是一种用于机器对机器通信的轻量级消息协议。

最常见的获取流量的网络类型之一是局域网。下一节概述了局域网的特征。

查看局域网

局域网是一个组织或个人拥有、控制和管理的局部区域的私有网络。LAN 通常位于有限的地理区域内,例如公司办公室、制造厂或医疗机构,并为主机提供共享资源的能力。

LAN 使用固定频率的以太网技术提供高速带宽,连接网络设备,并能够在公共信道上通信和交换数据。

在局域网中,可能有一个数据中心,它是一组大型服务器,为网络客户提供存储、处理和分发重要的公司数据。数据中心是任何企业网络的核心,位于中央位置,通常位于安全的计算机或服务器机房。

在当今的大型多元化公司中,可能存在比 LAN 更大的网络,需要远程位置为所有客户服务。下一节将介绍罐的概念。

探索罐头

CAN 是一个公共实体中的大型私有局域网,例如大学、医院、企业园区或军事基地,它有两个或多个互连的局域网。

CAN 有一个主园区,网络的中心元素(如数据中心和电话)就位于这里,它为客户端提供连接、数据、应用和服务。此外,CAN 可能包括远离主园区的远程位置。

由于 CAN 有时会跨越更大的地理区域(如城市),因此远程位置需要使用互联网连接通过 WAN 进行通信。现在让我们来看看万的品质。

导航广域网

广域网是地理上分散的、跨越很大距离的局域网的集合。互联网是最大的广域网,横跨全球,是一个全球联网的网络,将人、过程、数据和事物联系在一起。

广域网在几个方面不同于局域网。在大多数情况下,没有一个实体拥有广域网;相反,广域网以共享或分布式所有权和管理方式存在。广域网使用等常用技术作为多协议标签交换 ( MPLS ),这是一种高性能电信网络的数据传输方式。广域网可以用各种方法传送信号,包括普通老式电话服务、光纤电缆、无线传输和卫星。

如您所见,有许多不同类型的网络。在下一节中,我们将探讨用于传输信号的各种不同类型的介质。

探索不同类型的媒体

网络中的设备共享对公共介质的访问,该介质为流量传输提供通道。媒体可以是以下形式之一:

  • 有界信号被控制或限制在特定的路径上,通过铜缆或光缆传输。
  • 无界信号通过无线电波在传播。

下图显示了各种类型的网络介质:

Figure 5.1 — Various types of network media

图 5.1 —各种类型的网络媒体

对于企业网络,多种类型的介质构成网络环境是很常见的。每种介质类型都会影响数据流,包括铜缆、光缆和无线传输。

网络管理员使用 Wireshark 来排除网络连接问题。正因为如此,认识到由于开放系统互连 ( OSI )模型的物理层(第一层)可能出现的一些问题是很重要的。在本节中,我们将了解可以传输数据的不同类型的介质。我们先来回顾一下铜缆,铜缆又细分为两类,同轴和双绞线。

了解铜

铜缆是当今数据通信网络中常用的介质类型。使用铜缆的两种介质是同轴电缆双绞线

同轴传输

同轴电缆,也叫做同轴电缆 T2,由一根铜线组成,外面包着一层绝缘层,然后是一层接地的编织线屏蔽。同轴电缆能够支持高带宽,最初是在局域网上传输数据的主要方式。

局域网不再使用同轴电缆传输数据。然而,你仍然会看到同轴电缆,因为它被有线电视公司用来向家庭和商业客户传输信号。

尽管这种情况很少发生,但还是有可能对电缆调制解调器和路由器之间传输的流量差异进行故障排除,因为 Wireshark 有一个用于此目的的电缆数据服务接口规范 ( DOCSIS ) 。

使用双绞线通信

这种类型的电缆由双绞线铜线组成,使用电脉冲来传输信号。扭曲提供了屏蔽效果,最大限度地减少串扰。

双绞线布线有八根线和四对绞线,有两种形式:

  • 非屏蔽双绞线(UTP) :这是最常用的电线。
  • 屏蔽双绞线(STP) :当需要保护免受电磁干扰 ( EMI )时,使用此。

今天,局域网使用双绞线传输数据。双绞线很受欢迎,因为它价格合理,易于安装,而且在大多数情况下,它能为传输数据和多媒体流量提供高带宽。

除了铜缆之外,许多公司还在其组织中使用光纤来提供铜缆上的高速、高带宽选项。下一节概述了光纤的特性,光纤分为两类:多模和单模。

使用光纤

光缆使用光脉冲来长距离传输网络流量。光纤吞吐量高,天然抗电磁干扰。信号通过激光或 T2 发光二极管 ( LED )发送,使用玻璃或塑料芯。很多时候,光纤被用作局域网的主干,有两种形式:

  • 多模(MMF) :这种使用多种光信号,带宽比 UTP 高,用于承载局域网中的主干流量。MMF 可以使用玻璃或塑料,使用 LED 或激光信号,最远可达 2 公里。
  • 单一模式(SMF) :这种使用单一灯光信号。单模光纤的带宽比 MMF 高,可以将信号传输数英里。SMF 必须使用激光来产生明亮的相干光。

光纤有很多好处,但是比双绞线贵,需要特殊设备管理。因此,局域网主要将光纤用于主干流量,将双绞线用于工作区域。

今天,无线网络通信是很常见的,它使用无线电波来传输信号。以下部分概述了使用 Wireshark 分析无线连接的各种方法。

发现无线网络

无线网络使用未绑定的媒体,允许用户在连接到网络的同时自由漫游。随着时间的推移,无线网络的速度和带宽都有所提高,因此,您很可能会在故障排除过程中捕获到无线流量。

无线技术可以使用 Wi-Fi 为 LAN 提供连接,或使用蓝牙为 PAN 提供连接。在这里,我们将比较两者:

  • Wi-Fi 使用 IEEE 802.11 标准系列在局域网上提供网络。目前,使用最广泛的标准是 802.11a、802.11b/g/n 和 802.11ac。
  • 蓝牙为固定和移动设备提供短距离 PAN 上的网络。该技术允许设备相互通信以传输文件,控制物联网设备,并在您的汽车中提供免提通话。

如您所见,在使用 Wireshark 捕获和分析流量时,您可能要处理许多变量。网络和媒体的类型会影响你如何获取流量,以及一旦获取流量后你会看到什么。然而,在大多数情况下,使用 Wireshark 的数据包捕获是在局域网上完成的。

在下一节中,我们将探讨如何正确设置捕获,并检查每个捕获选项选项卡—输入输出选项

学习各种捕获方法

使用 Wireshark 捕获流量时,我们大多数人都熟悉主界面,通过查看迷你图,我们可以在屏幕下方看到哪些界面处于活动状态。在这里,您可以选择一个活动接口并开始捕获流量。此外,您可以放入一个捕获过滤器并开始捕获流量。

除了欢迎屏幕,您还可以进入捕获下拉菜单,然后选择选项,在捕获流量之前进行高级配置。在顶部,您会看到三个选项卡,输入输出选项,如以下截图所示:

Figure 5.2 — Capture options

图 5.2 —捕获选项

让我们从讨论如何通过选择输入接口来设置捕获开始。

提供输入

捕获选项对话框框中,输入选项卡将显示设备上可用接口的列表。在顶部,您会看到各种列标题,包括接口流量链路层标题捕获过滤器

左下角有一个名为的复选框,在所有接口上启用混杂模式。如果您取消选中该框,它将在所有接口上关闭混杂模式。然后,您可以通过选中其右侧的框来选择希望处于混杂模式的接口。

在底部,您可以为选定的接口创建一个捕获过滤器。

在右下方,您可以选择管理接口...,这将允许您隐藏您不希望在输入选项卡上可见的接口。例如,我们可以在下面的屏幕截图中看到五个未检查的 USBPcap 接口:

Figure 5.3 – Capture options – Managing Interfaces

图 5.3–捕获选项–管理界面

一旦你选择了你想输入的内容,你可能想以一种特定的方式保存你的文件。下一节概述了输出选项卡。

指导输出

输出选项卡指示保存文件的位置和方式。在该选项卡中,有几个选项。

第一个选项是捕获到一个永久文件。在大多数情况下,此框为空。当您开始捕获通信量时,Wireshark 会将捕获保存到一个临时文件中,直到您将其保存为其他文件。

输出格式默认保存文件为 pcapng (简称 PCAP 下一代);但是,您可以强制 Wireshark 将文件保存为 pcap 。大多数时候, pcapng 是最好的选择,因为它允许您添加注释。

无论您选择哪个选项,下一个选项都是自动创建新文件… 。这些选项包括以下内容:

  • 数据包之后
  • n 文件大小
  • n 秒、分钟或小时之后
  • 当有n秒、分或小时的倍数时

下面的截图显示了捕获接口对话框的输出选项卡:

Figure 5.4 – Capture options – Output options

图 5.4–捕获选项–输出选项

Wireshark 还提供了使用 GNU zip ( gzip )压缩文件的能力。

虽然您可能想启动 Wireshark,让它在长时间监控流量的同时运行,但这并不是最佳选择。这主要是因为如果您让捕获运行,Wireshark 将消耗您的所有内存,因为它将捕获保存在临时文件中,直到您停止捕获并将其保存到永久文件。

下一个选项概述了如何使用环形缓冲区来监控流量。

使用环形缓冲区

如果您想运行一个捕获来观察网络上的特定协议或签名,环形缓冲区是很方便的。要使用环形缓冲区,您需要创建多个文件,并设置一个参数,以便在达到特定的文件大小(如 1 兆字节)或经过一段时间(如 10 秒)后自动创建文件。

如果要创建多个文件,必须指定文件名和文件位置。否则,您将抛出一个错误,如下所示:

Figure 5.5 – An error message in the capture options

图 5.5–捕获选项中的错误消息

当准备好时,选择对话框底部的使用带有的环形缓冲区,并输入想要覆盖的文件数量。

除了提供选择输入和输出选项的方法,Wireshark 还提供了一些您可以修改的自定义选项。让我们来看看。

选择选项

当查看选项选项卡的时,您会看到顶部显示选项,其设置如下:

  • 实时更新数据包列表
  • 实时拍摄时自动滚动
  • 在实时拍摄期间显示拍摄信息

此外,您还会发现名称解析选项,包括以下内容:

  • 解析 MAC 地址
  • 解析网络名称
  • 解析传输名称

在大多数情况下,解析 MAC 地址和传输名称是没问题的,因为它们使用本地 Wireshark 文件夹中的静态文本文件被转换为人类可读的格式。这些文件包括以下内容:

  • manuf.txt列出了以太网供应商代码和众所周知的 MAC 地址。
  • services.txt保存 IANA 端口号文件的本地副本。

但是,如果您选择解析网络名称,这将要求主机操作系统 ( OS )在解析 IP 地址时多次联系域名系统 ( DNS )服务器。此活动很可能会影响系统性能并增加网络流量。

选项选项卡上的最后一个选项是之后自动停止捕获,无论您选择的是什么选项。有四种选择:

  • 小包裹
  • 文件
  • 文件的大小
  • 在特定的时间段之后

这最后一个选项可以在基线时使用,您可以指定在 1,000 个数据包之后停止捕获,然后开始捕获;Wireshark 将捕获 1,000 个数据包,然后在指定的时间段后自动停止捕获。

所有选项都显示在下面的屏幕截图中:

 Figure 5.6 – Capture options – the Options tab

图 5.6–捕获选项–选项选项卡

在您了解了网络架构和拓扑并选择了捕获选项后,您就准备好接入网络了。下一节将回顾您将看到的不同类型的数据包,以及如何查看在捕获流量时收集的会话和端点。

进入溪流

在混杂模式下使用网络接口卡 ( 网卡)接入局域网时,适配器捕获流量,并通过增强型数据包分析器 ( EPAN )向上发送数据包进行解析和解码,然后发送到 Wireshark 接口。

然后你会看到包充满了屏幕。如果您在终端设备上与另一台主机通信,您很可能会看到三种类型的数据包,即广播、组播和单播:

  • 广播:数据包从一台主机发送到网络上的每一个人——例如,ARP 广播。
  • 组播:数据包从一台主机发送到多台主机——例如,使用增强型内部网关路由协议 ( EIGRP )组播。
  • 单播:这种将数据包从一台主机发送到另一台主机——例如,从你的电脑发送到网络服务器。

在与另一台主机的正常对话中,一旦建立了连接,操作系统将创建一个套接字,该套接字由一个 IP 地址和一个端口组成。在捕获过程中,Wireshark 会跟踪所有连接或数据流,您可以对其进行检查。

下一节将解释如何查看捕获中的对话和端点。

比较对话和端点

每当你主动与网络上的其他主机连接时,操作系统会跟踪所有的连接。要查看 Windows 机器上的所有活动连接,请打开一个命令行并使用-an参数运行netstat,如下面的屏幕截图所示:

 Figure 5.7 – The netstat command showing Transmission Control Protocol (TCP) connections

图 5.7–显示传输控制协议(TCP)连接的 netstat 命令

在 Wireshark 中,会话由两个连接在一起的端点组成。端点是会话的一方。要查看截图中的所有对话,请转到统计数据,然后转到对话。窗口打开后,顶部会有选项卡,允许您查看特定类型的对话。

每个选项卡提供所选对话类型的详细信息,每行代表一个对话。例如,以太网选项卡显示列出端点的 MAC 地址的对话,如以下截图所示:

 Figure 5.8 – Viewing conversations

图 5.8–查看对话

您始终可以通过选择右下角的对话类型来添加或删除选项卡,如下所示:

 Figure 5.9 – Selecting conversation types

图 5.9–选择对话类型

Wireshark 在此窗口中提供了高级的选项。右键单击任何对话,您将看到以下选项:

  • Apply as a filter :这将选择突出显示的对话并运行过滤器。
  • 准备为过滤器:这将选择突出显示的对话并准备过滤器,然后可以修改过滤器。当你完成编辑后,你必须按下回车来运行过滤器。
  • Find :这将选择突出显示的对话,并将变量放在搜索工具栏中。
  • 着色:这将选择突出显示的对话,并允许您创建自定义着色规则。

以下截图显示了当您选择 Find 时启动的搜索工具栏:

 Figure 5.10 – The Find toolbar

图 5.10–查找工具栏

所有这些选项都允许您进一步细化您的选择。右键选择几个选项之一,包括 A 到 BB 到 AA 到任意

在窗口的底部,您可以使用其他选项来优化和自定义您的视图:

  • 名称解析 : Wireshark 将解析特定会话类型的物理、网络和传输地址。例如,如果选择了 TCP 选项卡,将解析传输地址。
  • 限制显示过滤器:这将只显示当前显示过滤器中包含的对话。
  • 绝对开始时间:这将使开始时间栏变为绝对开始时间,该时间在时间显示格式中。如果您取消选中此项,时间将恢复到相对开始时间,即从开始捕获开始的秒时间显示格式。
  • 复制:这将以逗号分隔值 ( CSV )或另一种标记语言 ( YAML )格式将列表复制到剪贴板。然后你可以将它粘贴到记事本文件或电子表格中。
  • Follow Stream :这可以让你看到一个单个 TCP 或者用户数据报协议 ( UDP )对话的细节。
  • Graph :这将启动并显示所选 TCP 对话的 TCP 流图,如下图所示:

Figure 5.11 – A TCP stream graph

图 5.11–TCP 流图

随着您使用 Wireshark 的经验越来越丰富,您将能够轻松地在界面中导航。在此之前,尝试一些菜单选择和选项。

为了更有效地排除网络故障,从数据包捕获开始很重要,这样可以比较可能的变化。实现这一点的一个方法是创建一个基线,我们将在下一节中讨论。

认识到基线的重要性

每个网络都像雪花,没有两个是一样的。每个网络都有自己的签名,包括利用率、网络协议和延迟问题等特征。

A baseline is a packet capture on a subnetwork that is obtained using Wireshark or tshark during normal working conditions. If the network is experiencing problems, the network administrator can then use the baseline to identify any changes. Once you learn what normal network behavior is, you can better identify abnormal network behavior.

除了排除故障之外,网络基线还可用于优化、预测、规划和调整网络。基线流程经历了几个阶段——计划、捕获、分析和保存。

我们将从规划开始,规划提供了完成流程的最佳方式的步骤。

规划基线

为了规划基线,创建一个网络图并列出所有子网和虚拟局域网(VLAN)。你应该有一个关于如何进行的策略。需要考虑的一些事项包括:

  • 一天中运行捕获的时间
  • 无论您是要捕获无线还是有线流量
  • 关于位置的详细信息
  • 特定子网中可能正在使用哪些应用

一旦规划完成,我们就可以进入下一步,也就是我们实际捕获网络流量的地方。

捕获流量

到了捕获流量的时候,将数据包捕获限制在一致的大小,这样您就有了一致的基线捕获大小。确定什么样的捕获适合您的网络,以便您可以获得某个时间点的网络快照。

应该记录该过程——例如,记录捕获的地点、时间以及捕获过程中使用的设备。

关键是尽可能与你的捕获保持一致,这样你就可以比较苹果与苹果。如果您选择统计,然后选择捕获文件属性,您可以添加一个注释来提供关于捕获的附加信息,如下面的屏幕截图所示:

Figure 5.12 – The Capture File Properties window

图 5.12–捕获文件属性窗口

在我们完成捕获阶段后,我们接着进入分析阶段,在这里我们将更仔细地观察捕获。

分析捕获的流量

一旦获得了数据包捕获,花一点时间回顾一下捕获,看看是否有任何异常或可疑之处。在 Wireshark 中,您可以转到统计信息,然后转到协议层次结构,以抽查子网中出现的协议,如下所示:

Figure 5.13 – The Protocol Hierarchy Statistics window

图 5.13–协议层次统计窗口

例如,在检查捕获后,你会看到大量的 Spotify(一种流媒体音乐服务)流量,这在你的网络上是被禁止的。此时,您可能会选择调查流量的来源。

此外,您可以转到统计数据,然后转到对话,以确定哪些端口正在使用。所有捕获完成后,我们将进入最后一个阶段,保存捕获数据以供以后比较。

保存基线

一旦完成并分析了捕获,并做了适当的评论,就该保留基线了。无论你是独自工作还是在团队中工作,你都应该有一个标准的格式和程序来记录这些发现。

建议的文件指南包括以下内容:

  • 列出拍摄地点,包括建筑和/或子网的名称。
  • 列出执行捕获的技术人员的姓名。如果有人对捕获有疑问,他们可以联系个人。
  • 列出捕获的日期和时间。
  • 概述或总结总体发现,如“正常流量流量,无异常或未授权协议使用”
  • 列出文件的名称和基线的存储位置。

尽管前面列表中的大部分信息可以以注释的形式记录在捕获中,但最好还是记录下来以保存这些信息。

命名采集文件时,让您的团队就标准格式达成一致。这是为了便于您以后搜索捕获的内容。一种格式或标准可能是使用建筑物名称和房间,甚至是子网 IP 地址。

例如,您可以使用这样的格式-大楼-房间-子网(或者大楼-房间-子网)。然后,如果你有一个从航空大楼-78 室-子网 192.168.10.112 的抓图,你可以将文件保存为AV-78-10.112.pcap

保存信息的格式可以是共享的电子表格,团队可以更新并使用它来记录他们的发现。

总结

至此,您已经了解了影响数据传输方式的许多不同类型的网络。除了各种网络类型之外,我们还看到了如何应对传输数据的介质。为了让您能够有效地捕获流量,我们仔细研究了各种捕获选项,包括显示选项、使用多个文件和名称解析。

然后,我们开始讨论接入交换网络时会看到的不同类型的流量,并比较了会话和端点之间的差异。然后,我们在对话窗口中查看了许多分析选项。最后,我们总结了网络基线的重要性,并提供了如何完成这一过程的一些步骤。

在下一章中,我们将发现许多个性化 Wireshark 界面的方法。您将学习调整外观和基本布局的方法。我将向您展示添加、修改和个性化配置文件的方法。然后,我们将评估如何向单个数据包或整个捕获添加注释。最后,我们将看看如何创建一个复杂的过滤器表达式和一个工具栏按钮来简化您的分析。

问题

现在,是时候检查你的知识了。选择最佳答案,然后将您的答案与评估附录中的答案进行核对:

  1. ____ 是组织或个人拥有、控制和管理的局部区域中的专用网络:
    1. 局域网
    2. 广域网
    3. 平底锅
  2. 使用名称解析时,可以选择解析 MAC 地址解析传输名称,因为它们来自静态文本文件。_____ 是以太网供应商代码和众所周知的 MAC 地址列表:
    1. vendor.txt
    2. services.txt
    3. manuf.txt
    4. network.txt
  3. 在“采集选项”中,__ 标签可让您指定存储文件的位置和方式:
    1. 输入
    2. 输出
    3. 选项
    4. 基线
  4. 使用光缆时,___ 传输的单个光束可以将信号传输数英里,因此必须使用激光:
    1. 多种方式的
    2. 同轴的
    3. UTP
    4. 单模
  5. 在抓图选项的输出页签中,输出格式默认保存文件为 _ _;但是,您可以强制 Wireshark 将文件保存为.pcap:
    1. .pcapng
    2. dmp.gz
    3. cap.gz
    4. .txt
  6. 这种类型的电缆由双绞线铜线组成,使用电脉冲来传输信号:
    1. 多种方式的
    2. 同轴的
    3. UTP
    4. 单模
  7. 在 Wireshark 中,____ 由两个连接在一起的端点组成:
    1. 命名对
    2. 对话
    3. 统计的
  8. 如果您选择 _____ 然后选择捕获文件属性,您可以添加注释以提供关于捕获的附加信息:
    1. 捕获
    2. 编辑
    3. 视图
    4. 统计数据

六、个性化界面

每个人都喜欢用自己的方式摆放自己的桌子。使用 Wireshark 也不例外,因为您可以根据需要个性化设置。在本章中,我们将深入 Wireshark 界面,了解增强外观和布局以及创建自定义配置文件的方法。您将更好地理解如何设计界面来满足您的规范,并评估操纵列、更改字体和微调颜色选择的方法。

为了让您更好地理解如何在 Wireshark 中记录捕获信息,我们将回顾一下如何添加注释的技巧。您将了解如何对单个数据包或整个捕获进行评论。最后,我们将逐步介绍在数据包分析过程中构建和修改复杂过滤器的过程。最后,我们将学习如何在工具栏上创建一个按钮,作为 Wireshark 中常用过滤器的快捷方式。

本章将涵盖以下内容:

  • 个性化布局
  • 创建定制的配置文件
  • 调整列、字体和颜色
  • 添加注释

个性化布局

虽然 Wireshark 在默认模式下是有效的,但是很容易修改外观和布局来优化您的工作流程。除了个性化布局和一般外观,您还可以修改许多其他组件。例如,您可以更改语言、自定义图标、最近使用的过滤器和文件夹的数量,以及定义要在状态栏中显示的内容。让我们从如何定制外观开始。

改变外貌

在 Wireshark 中,您可以通过以下方式定制一般外观:

  • 确定打开文件的默认位置。
  • 列出要显示多少显示过滤器。
  • 定义主工具栏的显示方式。

要查看您可以做出和修改选择的所有选项,请转到编辑,然后转到首选项,这将弹出一个对话框。在那里,展开外观,如下图所示:

Figure 6.1 – The Wireshark Preferences dialog box – Appearance

图 6.1–Wireshark 首选项对话框–外观

在对话框的顶部,我们可以看到记住主窗口大小和位置选项。如果选中,这将在您关闭 Wireshark 后保留窗口大小和位置。要了解其工作原理,请执行以下操作:

  1. 将主窗口缩小到四分之一大小,将应用放在屏幕的左上角,然后选择文件 | 退出
  2. 启动 Wireshark,窗口将出现在相同的位置和大小。

下一个选项,中打开文件,允许您在访问文件时指向一个位置。在这里,你会发现两种选择:

  • 最近使用的文件夹是默认文件夹。此选项会将文件保存在您上次使用的文件夹中。
  • 此文件夹允许您在保存文件时选择另一个文件夹。要修改,选择浏览...然后下钻到特定文件夹的位置。

最多显示允许您修改保留多少文件或过滤器。这些选择概述如下:

  • 过滤器条目将指示显示多少捕获过滤器条目。
  • 最近的文件会在你去文件 | 打开最近的的时候指示有多少最近的文件保持可见。

使用捕获时,Wireshark 可以通过选择确认未保存的捕获文件来帮助提醒您保存文件。如果选中,Wireshark 将在关闭应用、开始新的捕获或打开另一个文件之前显示提示,如下所示:

Figure 6.2 – A prompt before closing

图 6.2–关闭前的提示

下一个选项是主工具栏样式,它允许你改变主工具栏的外观,主工具栏位于菜单选项的上方。您可以选择只显示图标,只显示文本,以及图标&文本,如下图所示:

Figure 6.3 – Main toolbar – Icons and text

图 6.3-主工具栏-图标和文本

接下来的选项将允许您修改标题在屏幕顶部的显示方式。这些选项包括:

  • 窗口标题:这个选项允许你在标题末尾附加一个标签,包括%F(文件路径)和%P(配置文件)等选项。
  • 预设窗口标题:这个选项允许你在标题的开头插入一个标签。

我已经包含了这两个选项,所以标题显示为[Lisa WS]dhcp.cap[Lisa],如图图 6.3 所示。

注意

对于窗口标题,我使用了%P(轮廓)选择。

最后一个选项是语言。使用 Wireshark 时,默认为显示捕获信息时使用系统设置。然而,开发者增加了一个强大的功能——从多种语言中进行选择的能力,包括中文英文法文德文意大利文日文波兰文

现在我们已经设置了工作区,让我们评估修改布局的方法。

改变布局

第四章探索 Wireshark 界面中的探索视图菜单部分所述,您可以选择想要出现的面板,如下:

  • 数据包列表
  • 数据包详情
  • 数据包字节
  • 数据包图

启动 Wireshark 后,默认设置是三个窗格——数据包列表数据包细节数据包字节一个叠一个。

然而,在其他六种布局中的一种中重新排列布局是很容易的。要更改布局,请转到编辑 | 首选项,这将弹出一个对话框。在那里,展开外观,然后选择布局,如下图所示:

Figure 6.4 – The Wireshark Preferences dialog box – Layout

图 6.4–Wireshark 首选项对话框–布局

例如,如果您选择了前面截图中显示的设置,您的布局将如下所示:

Figure 6.5 – Wireshark with a modified layout

图 6.5–修改了布局的 Wireshark

此外,对于数据包列表状态栏设置,您可以通过选项修改其他选项。让我们从如何增强数据包列表设置的视图开始。

调整数据包列表设置

在此部分中,Wireshark 提供了其他选项来可视化数据包列表。

显示数据包分隔符选项将在数据包列表中的每一帧之间插入一条细白线。

如果您在列上下文菜单中选择显示列定义,当您右键单击任何列标题时,Wireshark 将描述每个列值,如下所示:

Figure 6.6 – Show column definition in column context menu

图 6.6–在列上下文菜单中显示列定义

当您选择Enable mouse-over colorization时,这将以浅蓝色突出显示所选的数据包,如前面截图中的第 4 帧所示。

此外,我们可以修改状态栏,它位于 Wireshark 界面的底部。

添加状态栏设置

在这里,您可以选择显示选中的包号显示文件加载时间

选择后,该信息将显示在状态栏的右下角,如下所示:

Figure 6.7 – The status bar

图 6.7-状态栏

最后一个选项,恢复默认值,将将您选择的任何选项重置为默认状态。

接下来,我们将研究生成定制配置文件的方法,以提供一组特定于我们需求的独特设置。

创建定制的配置文件

配置描述文件是一组偏好设置和配置。启动 Wireshark 后,在界面的右下角会看到 Profile: Default ,如图图 6.7 所示。

在 Wireshark 中,用户可以创建自己的自定义配置文件,包括个性化的首选项、颜色规则、字体样式和按钮。

要创建自定义配置文件,请转到编辑 | 配置文件。对话框打开后,您会看到 Wireshark 有一个名为默认的默认配置。另外,你会看到三种全局配置、蓝牙经典无重组,如下面截图中斜体所示:

Figure 6.8 – The Configuration Profiles dialog box

图 6.8–配置文件对话框

此外,我还创建了两个个人资料,LisaMalware。在下一节中,我们将看到创建一个新的概要文件是多么容易。

定制个人资料

一旦确定创建自定义配置文件是有益的,您就可以通过进入编辑 | 配置文件开始这个过程。在那里,选择 + 符号,并为概要文件指定一个名称。比如我创建了一个名为Malware的概要文件,如图图 6.8 所示。添加配置文件后,关闭对话框,然后可以修改配置文件。

您可以根据需要进行一些更改,如下所示:

  • 通过进入视图并取消勾选数据包字节来修改布局。
  • 转到编辑 | 首选项并进行更改,如字体颜色和大小,甚至禁用或更改一些列标题。

完成后,Wireshark 将保存自定义配置文件中的任何更改。

在我的Malware个人资料中,我想修改设置,这样我就可以寻找一个 Ettercap 签名。Ettercap 是一种用于对局域网发起中间人攻击的工具。我希望能够快速识别e77e Ettercap 签名,它在搜索局域网上的其他投毒者时识别 Ettercap。

注意

Ettercap 签名e77e在 leetspeak 中翻译成ette(etter cap 的简称)。你可以去 https://www.dcode.fr/leet-speak-1337看看。

为了自定义我的配置文件,我调整了列,并删除了数据包字节下部面板。最后,我添加了一个 ette 按钮(我们将在制作按钮部分学习如何创建)。一旦选中,按钮将应用并运行icmp.ident == 0xe77e显示过滤器。

结果显示在以下截图的右上角:

Figure 6.9 – The Malware profile

图 6.9–恶意软件配置文件

使用我的Malware档案,我可以通过点击我的按钮轻松检查 Ettercap 投毒者,然后将显示捕获中具有该签名的任何数据包。

如果您想更改配置文件,点击右下角的,选择您想使用的配置文件,如下图所示:

Figure 6.10 – Modifying the profile

图 6.10–修改轮廓

此外,如果您想让管理档案,右击档案标签上的。Wireshark 将弹出一个对话框,您可以在其中选择管理配置文件… ,如以下屏幕截图所示:

Figure 6.11 – Manage Profiles

图 6.11–管理配置文件

除了能够管理和修改配置文件,Wireshark 还允许您导入和导出配置文件,因此您可以轻松地与您的团队共享它们。只需右键单击任一选项进行选择。

您可以从以下位置导入配置文件:

  • 来自 zip 文件
  • 来自目录的

**您可以导出以下配置文件:

  • 选定的个人资料
  • 所有个人资料

很多时候,在进行数据包分析时,需要通过过滤流量来优化我们的视图。如果您已经创建了一个需要经常运行的过滤器,那么您可以创建一个方便的工具栏按钮,如下一节所述。

制作纽扣

显示过滤器允许你只显示特定的流量。很多时候,我们会使用一个简单的过滤器,比如dns(域名系统)或者http(超文本传输协议)。然而,有时您可能需要创建一个更复杂的过滤器,比如当使用逻辑运算符将一个特定的协议字段与一个值进行比较时。

使用 Wireshark 时,您可能使用快捷方式创建了复杂的过滤器。

注意

我们将在 第 7 章使用显示和捕获过滤器中的发现快捷方式和便捷过滤器部分了解更多快捷方式。

例如,您创建了一个显示过滤器,只显示传输控制协议同步 ( TCP SYN )标志,而不显示确认 ( ACK )标志:

(tcp.flags.syn == 1 ) && !(tcp.flags.ack == 1)

一旦您创建了一个表达式,并且它在显示过滤器中可见,您就可以毫不费力地创建一个按钮。在右上角,在显示过滤器的正后方,点击 + (加号),Wireshark 会显示一个下拉对话框,如下图所示:

Figure 6.12 – Creating a filter button

图 6.12–创建过滤器按钮

对话框打开后,您可以输入适当的标签并为过滤器按钮添加注释。Wireshark 将自动进入按钮的显示过滤器,以便在单击时运行。完成后,选择 OK ,新按钮将出现在工具栏上。

使用 Wireshark 并添加按钮后,您可能需要删除一些按钮来清理工具栏。以下列表显示了编辑过滤器按钮的步骤:

  1. 进入编辑,然后进入偏好设置,你会看到滤镜按钮,如下截图所示:

Figure 6.13 – The Wireshark Preferences dialog box – Filter Buttons

图 6.13–Wireshark 首选项对话框–过滤器按钮

选中时,您将看到工具栏上当前的按钮。

  1. 要添加过滤器按钮,请选择左下角的 + (加号)。添加你想要的按钮标签,不区分大小写。
  2. 接下来,添加一个过滤表达式选项,它必须遵守表达式和显示过滤规则。

如果您想要移除任何滤镜按钮,突出显示您想要移除的按钮,并选择左下角的(减号)。

现在,您可以看到创建自定义配置文件来个性化您的工作空间的强大功能。现在,让我们研究一下如何添加或删除列,以及如何调整字体和颜色来满足您的需要。

调整列、字体和颜色

在处理数据包捕获时,大多数用户都习惯使用界面中的默认设置。但是,您可以调整字体样式和大小来个性化您工作区的外观和感觉。此外,您还可以修改 Wireshark 用于各种数据包标识符和显示过滤器的颜色。

一旦你进入界面,你会看到屏幕顶部的列标题。当你在捕获时,你可能从来没有操作过列。但是,您可以随时添加、删除、对齐和自定义列。

Wireshark 使添加和修改列变得很容易,我们将在下一节看到这一点。

添加、编辑和删除列

在 Wireshark 中,当在界面中时,您可以做的不仅仅是简单地扩展或收缩列标题。

为了改善列的可视化效果,请转到编辑 | 首选项,然后转到,如下图所示:

Figure 6.14 – The Wireshark Preferences dialog box – Columns

图 6.14–Wireshark 首选项对话框–列

选择后,您将看到一个列列表。有些是默认显示的,有些是您添加的。您可以选择复选框使列可见,也可以添加或删除列。

在对话框的顶部,您会看到以下选项:

  • 显示:勾选后,选中的列会显示在界面上。
  • 标题:这是列标题的名称。如果您右键单击并添加一列,Wireshark 将自动创建一个名称。但是,您可以更改标题名称来个性化标题。
  • Type :列出列中值的类型。在下拉菜单中,有许多预加载的选项,如图 6.14 所示,其中我下拉了 IP Ne sted ICMP 报头的类型选项。
  • 字段:标识列值来源的字段。在前面的截图中,有一个名为 IP 嵌套 ICMP 的列标题。在字段列,我们可以看到 ip.id ( 互联网协议标识)。这是因为列标题是通过右击 IP 标题中的标识(ID ) 字段并选择应用为列而生成的。Wireshark 将该值填充为ip.id,并创建了一个定制的列类型。
  • 字段出现:仅用于自定义列定义。在图 6.14 中,可以看到字段发生列中有 12 的值。选中后,列标题将按以下顺序显示:
    1. IP 主 ICMP 会先出现。
    2. IP 嵌套 ICMP 会出现第二个。

要添加列,请选择 + (加号)。在显示新列的适当标签中键入标题,然后使用下拉菜单选择类型,识别类型。您还可以通过突出显示该列并点击 - (减号)来删除任何不需要的列。

此外,进入界面后,您可以通过右键单击并选择列的对齐方式(左对齐、居中或右对齐)来对齐列,如下所示:

Figure 6.15 – Aligning columns

图 6.15–对齐列

大多数其他的列标题在如何使用它们方面相当简单。然而,你可能不熟悉或经常使用的是现场发生。接下来我们来探讨一下这个概念。

使用现场事件

当发送一个互联网控制消息协议 ( ICMP )错误消息时,ICMP 数据包将包含以下内容:

  • 错误消息的 IP 标头。
  • 导致错误的原始数据报的前 8 个字节(64 位)。这有时被称为嵌套 ICMP 数据包。

要查看错误示例,请访问 CloudShark 获取位于https://www.cloudshark.org/captures/155db9732c91ICMPv4_Destination_unreachable副本,然后在 Wireshark 中打开捕获。

注意

我们将在第十二章 、发现 ICMP 中了解 ICMP 的更多信息。

当使用字段出现时,我们可以看到第一个(主)IP 报头的 ID 字段以及嵌套 IP 报头的 ID 字段。这将使我们很容易看出两者之间的区别,如下面的截图所示:

Figure 6.16 — Using the field occurrence option

图 6.16 —使用字段出现选项

为了创建定制的列标题,让我们从创建一个新的概要文件开始。

进入编辑 | 配置文件:

  1. 在那里,选择 + 符号,并将新的概要文件命名为ICMP
  2. 关闭对话框。
  3. 进行任何所需的配置文件修改,如更改字体或修改面板布局。

现在我们有了一个新的概要文件,我们将创建字段事件选项。

进入编辑 | 偏好,然后栏目。取消选中LengthInfo,如下截图所示:

Figure 6.17 — Viewing the Columns dialog box in Preferences

图 6.17-在首选项中查看列对话框

接下来,我们将添加两个新的列标题。

选择 + (加号)和,然后修改第一个新创建的列标题的设置,如下所示:

  • 显示 : Checked
  • 标题 : IP Main ICMP
  • 类型 : Custom
  • 字段 : ip.id
  • 现场出现 : 1

Select the + (plus) sign and then modify the settings for the second newly created column header as follows:

  • 显示:勾选
  • 标题 : IP Nested ICMP
  • 类型 : Custom
  • 字段 : ip.id
  • 现场出现 : 2

结果如图 6.16 中的所示,其中,在协议列标题之后,您会看到 IP 主 ICMP ,后面是 IP 嵌套 ICMP

正如我们所见,Wireshark 在修改列以调整视图方面非常灵活。接下来,让我们看看 Wireshark 中一个被忽略的功能,即调整字体和更改默认颜色的能力。

提炼字体和颜色

在主窗口中,你可能会觉得文本太小,因为默认配置文件使用 Consolas 10 样式作为字体和大小。很容易改变字体和颜色,使文本加粗或倾斜,并改变字体大小和样式。

进入编辑 | 偏好设置,选择字体和颜色,如下截图所示:

Figure 6.18 – The Wireshark Preferences dialog box – Font and Colors

图 6.18–Wireshark 首选项对话框–字体和颜色

在顶部,如果您选择主窗口字体,Wireshark 将显示一个对话框,允许您更改字体,如下所示:

Figure 6.19 – Main window font

图 6.19-主窗口字体

主窗口字体下方,您将看到 Wireshark 为活动和非活动项目的文本和背景着色的默认方式,以及标记和忽略的数据包。在之后,当您右键单击一个数据包并选择跟随 TCP 流时,您将看到客户端和服务器文本的默认值,如下所示:

Figure 6.20 – Follow the TCP Stream

图 6.20–遵循 TCP 流

颜色有助于识别是客户端还是服务器在通话。当您跟踪 TCP 流时,客户端文本的默认值是红色,但是该值可以更改。

列出的最后三个样本是指创建滤镜时的颜色。Wireshark 中的语法检查器会在您输入文本时检查过滤器。创建过滤器时,以下是默认值:

  • 有效的滤镜会将背景变成绿色。
  • 无效的滤镜会将背景变成红色。
  • 警告滤镜将背景变成黄色。

与所有其他选择一样,您也可以更改这些值。

在 Wireshark 中,我们可以指明关于特定数据包的信息,或者以注释的形式捕获文件,我们将在下一节中看到。

添加评论

在进行数据包分析时,您可能希望突出显示和识别一些问题,以便日后参考。例如,您可能希望记录单个数据包或整个捕获,以供将来参考。

所有这些在 Wireshark 中都是可能的,因为您可以在捕获中写一个注释,概述发现的关键问题。一旦记录下来,您或您的团队可以在以后参考这些意见。

注意

虽然评论是可选的,但记录下来帮助保存您的发现的细节总是一个好的做法。

让我们从如何添加文件注释开始。

给文件添加注释

给数据包捕获添加注释是一个非常方便的工具。当添加评论时,您可以稍后查看它以提醒您与数据包捕获相关的关键问题。例如,您可能发现了可能的非法或恶意活动,如加密货币挖掘,您可以在捕获文件中列出详细信息。

有几种方法可以给文件添加注释。一些例子如下:

  • 转到状态栏并选择看起来像铅笔和纸的图标,该图标位于专家系统图标的右侧,如图 6.7 的左侧所示。
  • 转到统计,然后转到捕获文件属性,您可以在对话框的下方窗格中添加注释。完成后,您应该选择保存评论

向文件添加注释有助于提醒您或您的团队关于捕获的重要内容。但是,也可以给单个包添加注释,这将在下一节中讨论。

输入数据包注释

要为单个数据包添加注释,请选择该数据包,然后转到编辑 | 数据包注释 | 添加新注释。将显示一个对话框,您可以在其中输入您的注释。一旦您输入了您的评论并保存了文件,Wireshark 就会在数据包详细信息面板的框架顶部添加一条带有亮绿色的注释,如下图所示:

Figure 6.21 – Packet comments in the Packet Details panel

图 6.21–数据包详细信息面板中的数据包注释

一旦您为整个捕获或单个数据包添加了注释,您会想要保存它们,然后在某个时候,返回并引用注释。下面的章节回顾了我们如何查看评论以及如何保留我们的评论。

查看和保存评论

评论可能是一个强大的工具,因为你可以在很多方面使用它们来保存你认为在捕获中有意义的东西。即使几年过去了,我仍然觉得这些评论很有价值,因为它们帮助我回忆起我分析数据包捕获时的思路。但是,为了使注释有价值,您必须保存它们。我们来讨论一下这是如何实现的。

创建评论后,您会在 Wireshark 界面的顶部看到一个星号,如下所示:

Figure 6.22 — An asterisk indicating that there are file comments

图 6.22 —星号表示有文件注释

星号将一直保留,直到您保存文件。请记住,要保留注释,您必须将文件保存为 PCAP 下一代(.pcapng)格式。

如果你或你的团队已经努力做出了评论,那么你就值得花时间去阅读它们。您可以通过几种方式查看数据包或捕获文件注释:

  • 要查看所有带注释的数据包,请使用pkt_comment显示过滤器。
  • 要查看整个捕获的所有注释,请转到统计数据 | 捕获文件属性并查看下方窗格中的注释。

您还可以通过进入专家信息来查看数据包评论,专家信息是通过选择界面左下角的彩色圆圈找到的。对话框打开后,展开评论部分查看评论,如下图所示:

Figure 6.23 – A packet comment in the Expert Information panel

图 6.23-专家信息面板中的数据包注释

到目前为止,您可以欣赏在分析数据包捕获时个性化界面和记录您的工作的许多方式。

总结

无论您是高级用户还是临时分析器,只需稍作调整即可对 Wireshark 进行个性化设置,这样您就可以更高效地完成任务。在本章中,我们研究了定制 Wireshark 接口以适应您的工作流程的许多方法。我们讲述了如何修改选择,比如最近的过滤器和文件夹,以及布局和一般外观。我们发现创建包含偏好、颜色规则和字体样式的定制配置文件是多么容易。然后,我们学习了如何在 Wireshark 的工具栏上为常用过滤器创建一个过滤器按钮。

此外,我们还发现了如何修改、添加或删除列和列标题。我们研究了微调字体的方法,以使数据包更容易阅读。我们还回顾了如何更改各种标识符的默认颜色,比如标记数据包的文本颜色。最后,我们展示了向单个包或整个捕获添加注释的能力,以便向团队成员传达问题。

在下一章中,我们将更仔细地研究使用显示和捕获过滤器,以及学习一些使用过滤器的技巧和具体规则。然后,我们将了解如何使用捕获过滤器,包括默认的捕获过滤器,以及如何构建自己的过滤器。最后,我们将了解如何使用快捷方式创建过滤器,并回顾一些常用的过滤器,以更好地管理您的工作流程。

问题

现在,是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 通常,当您打开 Wireshark 时,配置文件将被设置为 _____ 配置文件:
    1. 选取框
    2. 蓝牙
    3. 经典的
    4. 默认
  2. 您可以设置 Wireshark 从特定位置打开文件。转到 ____,然后选择首选项,然后在 _ _ _ _ _ 下选择文件位置:
    1. 工具 | 文件夹
    2. 编辑 | 出场
    3. 查看 | 外观
    4. 查看 | 文件夹
  3. 跟随 TCP 流的的客户端文本的默认值是 _____,但该值可以更改:
    1. 黑色
    2. 蓝色
    3. 红色
    4. 蓝绿色
  4. 使用 Wireshark 时,您可以轻松创建并添加一个按钮,以便在选中时自动运行自定义过滤器。要删除按钮,请转到 _____,然后选择过滤按钮,并删除任何不再需要的按钮:
    1. 编辑 | 偏好
    2. 查看 | 外观
    3. 查看 | 按钮
    4. 工具 | 按钮
  5. 当您想给数据包添加注释时,选择数据包,转到 __,然后转到数据包注释:
    1. 工具
    2. 编辑
    3. 视图
    4. 分析
  6. 配置 _____ 是一组针对您的需求的首选项和配置:
    1. 按钮
    2. 轮廓
    3. 工具
    4. 分析
  7. 创建滤镜时,无效滤镜的默认值是将滤镜背景变为 _____:
    1. 绿色的
    2. 蓝色
    3. 红色
    4. 黄色**

七、使用显示和捕获过滤器

无论是在捕获流量时实时分析数据,还是调查预先捕获的文件,您通常都会面临大量数据。你如何理解所有这些信息?最有可能的是,您将受益于过滤通信量以缩小范围,这样 Wireshark 只显示您想要查看的通信量。本章回顾了在 Wireshark 中过滤流量的许多方法。

处理数据时,似乎捕获和显示过滤器是相同的。然而,尽管两者都可以过滤流量,但它们都有自己的语法,在创建过滤器时必须使用这些语法。为了帮助您更好地理解优化视图的不同方法,我们将介绍何时过滤流量,并概述显示过滤器和捕获过滤器之间的区别。为了使您能够在瞄准特定流量时提高技能,我们将回顾通过构建表达式来深入到特定字段值的方法。此外,我们将学习如何使用逻辑运算符创建更复杂的过滤器。最后,由于过滤器非常有用,我们将介绍一些技巧、快捷方式和常用过滤器,帮助您实现更有效的分析。

本章将涵盖以下内容:

  • 过滤网络流量
  • 理解显示过滤器
  • 创建捕获过滤器
  • 了解表达式生成器
  • 发现快捷方式和方便的过滤器

过滤网络流量

Wireshark 以及许多其他数据包分析工具可以捕获大量数据,过滤特定类型的流量,并优化您的视图以帮助分析。在 Wireshark 中,有几个选项可用于过滤流量:

  • 显示过滤器:在活动捕获期间或在预捕获文件上使用
  • 捕获过滤器:在捕获之前应用,仅显示特定类型的流量
  • 表达式:使用逻辑操作符创建复杂的过滤器
  • 快捷方式:在分析数据包时,动态构建过滤器

Wireshark 具有捕获和显示过滤器,可用于优化您的视图。分析流量时,每个过滤器都在特定时间内应用。在下一节中,让我们探索应用过滤器的最佳时机。

分析流量

在检查流量时,数据包分析有四个主要阶段,如使用 Wireshark 的 第 2 章中所述。这些阶段是采集解码分析显示,如下图所示:

Figure 7.1 – Phases of packet analysis

图 7.1–数据包分析的各个阶段

当您使用捕获过滤器收集流量时,可以开始优化您的视图。在数据包呈现给用户之前,过滤器会移除不需要的流量。

捕获流量

在收集网络流量时,数据包通过适当的捕获引擎,如 Npcap 或 WinPcap。如果您只想查看特定的流量,您将需要使用捕获过滤器,当使用时,Wireshark 将丢弃任何不在过滤器中的数据包。例如,当捕获无线局域网 ( WLAN )流量,并且您想要过滤掉任何信标帧时,您将应用这个捕获过滤器:wlan[0] != 0x80

捕获过滤器将删除任何不必要的流量。但是,要在保留所有流量的同时过滤掉不需要的数据包,您应该使用显示过滤器。

查看流量

一旦数据包通过 Wireshark 的增强型数据包分析器 ( EPAN ),它就会将解析后的流量通过图形用户界面 ( GUI )呈现给用户,然后进行分析。在 Wireshark 界面中显示数据包时,您可以使用适当的语法应用显示过滤器,并在捕获之前、期间或之后应用过滤器。

类似于我们前面的例子,当捕获无线流量时,如果您想要过滤掉任何信标帧,同时保留所有数据包,您将应用这个显示过滤器:!(wlan.fc.type_subtype == 8)

在构建捕获或显示过滤器时,Wireshark 将检查语法以查看字符串是否有效。让我们看看这是如何工作的。

检查语法

在分析流量的同时创建过滤器时,我们天生就知道要构建什么,并且在大多数情况下,我们会生成一个有效的过滤器。Wireshark 通过在运行捕获之前检查语法来帮助我们创建合适的过滤器。语法检查器的工作方式如下:

  • 有效的显示过滤器将使背景变成绿色,并且过滤器运行。
  • 无效或不完整的字符串将使背景变红,过滤器将不会运行。
  • 未知的显示过滤器或字符串将使背景变成黄色,过滤器可能会运行。

虽然常见的是绿色或红色背景,但在极少数情况下,您可能会看到黄色背景。例如,在过滤动态主机配置协议 ( DHCP )时,如果输入bootp而不是dhcp,背景会变成黄色,如下图所示:

Figure 7.2 – Syntax checker with a yellow background

图 7.2–黄色背景的语法检查器

虽然过滤器可能会运行,但您可能会得到意外的结果。

在下一节中,我们将概述 Wireshark 文件夹中的两个文件dfilters.txtcfilters.txt的用途,这两个文件用于保存过滤器列表。

比较过滤器的文件

在 Wireshark 文件夹中,有两个文本文件用于 Wireshark 的内置过滤器和任何用户保存的过滤器,它们如下:

  • dfilters.txt保存显示过滤器列表。
  • cfilters.txt保存捕获过滤器列表。

这些文件与显示或捕获过滤栏左侧的硬上的书签图标相关。如此处所示,我们看到显示过滤栏上的蓝色图标:

Figure 7.3 – Viewing the bookmark icon

图 7.3–查看书签图标

使用任一单词过滤器文件,一旦被修改,它们可以被复制,然后与同事共享。此外,当使用特定的配置文件时,您可以定制任一文件,这样您就可以通过简单地切换配置文件来访问定制的过滤器。

首先,我们来看看显示过滤器文件。

调查显示过滤器

您将在dfilters.txt文件中找到一个包含显示过滤器的列表。找到文件后,您可以在记事本中打开它,如下所示:

Figure 7.4 – dfilters.txt

图 7.4–d filters . txt

过滤器由一个名称 | 过滤器配对来表示。例如,当检查排除地址解析协议 ( ARP )流量的过滤器时,您会看到以下内容:

  • 名称:滤镜的名称,用引号括起来。比如"No ARP"
  • 过滤器:过滤器的语法。比如not arp

接下来,我们将查看捕获过滤器是如何存储的。

检查捕获过滤器

cfilters.txt文件包含捕获过滤器的列表,如下面的屏幕截图所示:

Figure 7.5 – cfilters.txt

图 7.5–c filters . txt

与显示过滤器类似,捕获过滤器也由一个名称 | 过滤器对表示。例如,当检查仅包含传输控制协议 ( TCP )流量的过滤器时,您将看到以下内容:

  • 名称:滤镜的名称,用引号括起来。比如"TCP only"

  • Filter: The syntax for the filter. For example, tcp.

    注意

    虽然可以在记事本中打开和修改这两个文件,但如图所示,使用 Wireshark 界面来更改过滤器更安全、更方便。例如,通过进入分析 | 显示过滤器… 菜单选项,然后在对话框中编辑,您可以保留正确的语法。

现在您已经看到了主要的区别,让我们更仔细地看看显示过滤器。

理解显示过滤器

在捕获流量或分析预先捕获的文件时,显示过滤器有助于缩小范围并锁定特定类型的流量。捕获超过 3000 个包含多种不同类型流量的数据包并不罕见。

当您启动 Wireshark 时,您会看到启动屏幕。图标下方的顶部是过滤器工具栏。工具栏中有文本 Apply a display filter… ,您可以在其中轻松应用和编辑显示过滤器,如下所示:

Figure 7.6 – Wireshark startup screen

图 7.6–Wireshark 启动屏幕

通过使用单个协议或添加逻辑运算符,您可以在 Wireshark 支持的任何协议上创建简单的过滤器。例如,如果您想查看 TCP 或 ARP 流量,那么您可以使用tcp || arp显示过滤器。

Wireshark 的显示过滤器很容易修改。以下部分说明了如何编辑显示过滤器来定制您的工作流程。

编辑显示过滤器

使用显示过滤器后,您可能需要更改 IP 地址、端口号或进行其他更改。要编辑显示过滤器,进入分析菜单,然后选择显示过滤器… ,将弹出以下对话框:

Figure 7.7 – Display Filters dialog box

图 7.7–显示过滤器对话框

在那里,您可以选择三个图标中的一个,如显示过滤器对话框左下角所示:

  • 加号图标将添加一个新的显示过滤器。选中时,Wireshark 会在左侧创建一个空间,您可以在此输入名称,在右侧输入实际的过滤器,如图图 7.7 所示。
  • 减号图标将删除一个显示过滤器。选择(突出显示)想要移除的过滤器,点击减号从对话框中移除过滤器,并更新dfilters.txt文件。
  • 一个复制图标将复制一个显示过滤器。复制后,您可以在不更改原始过滤器的情况下修改过滤器。Wireshark 会将新的过滤器添加到dfilters.txt文件中。

在下一节中,我们将看到当你得到一个有效的显示过滤器,并且你想重用它时,你如何把它保存到一个书签中。

使用书签

在显示过滤器的右侧,有一个名为书签的蓝色工具栏图标。这就是 Wireshark 的内置过滤器和任何用户保存的过滤器所在的位置。如果单击图标,您将看到选项,以及几个您可以使用的预装过滤器,如下所示:

Figure 7.8 – Display filter bookmark dropdown

图 7.8–显示过滤器书签下拉列表

使用书签时,您将看到包括以下内容的配置选项:

  • 保存该过滤器:创建过滤器后,可以通过选择该选项将过滤器保存到书签。
  • 删除该过滤器:这将删除当前正在使用的过滤器,该过滤器存储在dfilters.txt文件中。
  • 管理显示过滤器:这将打开显示过滤器对话框。
  • 滤镜按钮首选项… :这将打开首选项对话框,其中滤镜按钮选项高亮显示。

在选项下面,您会看到一个过滤器列表。即使您从未保存过过滤器,您也会看到列表,因为 Wireshark 会显示在dfilters.txt文件中找到的过滤器列表。

一旦您创建了自己的过滤器或从下拉列表中选择了一个,您可以按输入或点击显示过滤器右侧的蓝色箭头来运行过滤器。

显示过滤器的最右侧是一个下拉箭头(插入符号)。选中后,您可以看到以前使用的过滤器,如下面的屏幕截图所示:

Figure 7.9 – Previously used display filters

图 7.9–以前使用的显示过滤器

可以在数据包捕获之前、期间或之后应用显示过滤器。当您准备清除过滤器时,选择过滤器右侧的 X ,如下所示:

Figure 7.10 – The display filter toolbar

图 7.10–显示过滤器工具栏

正如我们所看到的,显示过滤器非常有助于提供更有针对性的捕获视图。然而,有时你可能只想收集某种类型的流量。在这种情况下,您将使用一个捕获过滤器,我们将在下一节讨论。

创建捕获过滤器

了解如何使用显示过滤器很重要。但是,捕获过滤器有助于仅锁定您想要查看的流量。此外,过滤可以消除许多噪音,如管理流量和 ARP 广播。

您可以通过以下几种方式创建捕获过滤器:

  • 转到启动屏幕的中间,进入之后的过滤器...使用该滤波器:如图图 7.6 所示。
  • 进入捕获菜单,然后选择选项...,如下图所示:

Figure 7.11 – Capture menu dropdown

图 7.11–捕获菜单下拉菜单

在那里,您将看到捕获选项,并且在对话框的底部,您将看到捕获过滤器区域,如下面的屏幕截图所示:

Figure 7.12 – Location to add a capture filter

图 7.12–添加捕获过滤器的位置

虽然这两个选项都可以让你创建一个捕获过滤器,但我通常会去捕获菜单选择并选择选项...,因为这将允许我看到所有的界面。

通过使用单个或多个协议并添加逻辑运算符,您可以在 Wireshark 支持的任何协议上创建捕获过滤器。要清除过滤器,选择捕获过滤器右侧的 X

要查看您以前使用的捕获过滤器,请转到捕获过滤器的右侧,并选择向下箭头以显示列表。这类似于显示过滤器下拉列表,如图图 7.8 所示。

除了能够修改显示过滤器之外,您还可以自定义捕获过滤器,如下一节所述。

修改捕获过滤器

要编辑捕获过滤器,进入捕获菜单选项,然后选择捕获过滤器,这将显示预构建过滤器的列表,如以下截图所示:

Figure 7.13 – Capture Filters dialog box

图 7.13–捕获过滤器对话框

在对话框的底部有三个图标:

  • 加号图标将添加一个新的捕获过滤器。选中后,Wireshark 将创建一个空间,您可以在左边输入名称,在右边输入实际的过滤器。
  • 减号图标将删除一个捕获过滤器。选择(突出显示)想要移除的过滤器,点击减号从对话框中删除过滤器,并更新cfilters.txt文件。
  • 复制图标将复制一个捕获过滤器。复制后,您可以在不更改原始过滤器的情况下修改过滤器。Wireshark 会将新的过滤器添加到cfilters.txt文件中。

尽管“捕获过滤器”界面可能看起来像“显示过滤器”工具栏,但语法是不同的。因此,在制作一个捕获过滤器时,你需要小心,因为它使用了 Berkeley 数据包过滤器 ( BPF )语法。在下一节中,我们将通过一个例子来使用适当的语法创建一个捕获文件。

识别 BPF 语法

捕获过滤器可以减少通过只收集你想看到的流量类型获得的数据包数量。例如,如果我需要一个过滤器来捕获文件传输协议 ( FTP )流量,那么我可以在捕获过滤器中输入ftp,就像我在显示过滤器中一样。但是,您会看到语法检查器变成红色,这意味着这是一个无效的过滤器,如下所示:

*Figure 7.14 – Invalid capture filter syntax

图 7.14–无效的捕获过滤器语法

虽然这个过滤器可以作为显示过滤器,但是您必须使用正确的语法编写一个捕获过滤器。

创建新的捕获过滤器时,尝试使用一个预构建的过滤器作为指南来正确构建您的过滤器。让我们看看这是如何工作的。

制作捕获过滤器

当你需要创建一个捕获过滤器时,找到一个与你需要的相似的捕获过滤器,选择过滤器,点击复制图标。Wireshark 将复制过滤器并将其放在末尾,您可以在那里对其进行编辑。

让我们来看一个通过复制现有过滤器来创建 FTP 捕获过滤器的示例:

  1. 进入捕获菜单,选择捕获滤镜
  2. 选择HTTP TCP port (80)捕获过滤器,然后点击复制图标。Wireshark 会将复制的过滤器放在列表的末尾,如下面的屏幕截图所示:

Figure 7.15 – Create new capture filter

图 7.15–创建新的捕获过滤器

  1. 要编辑过滤器,将名称更改为FTP,并将过滤器更改为tcp port ftptcp port 21
  2. 关闭捕获过滤器对话框。
  3. 重新启动 Wireshark,以便识别新创建的捕获过滤器。

要使用新创建的过滤器,请遵循以下步骤:

  1. 转到捕获菜单选项,然后选择选项...
  2. 单击将用于捕获流量的接口。比如下面的截图,选择了微软:Wi-Fi 界面。
  3. 在 capture filter 区域,下拉绿色书签并选择您刚刚创建的过滤器。书签将变成黄色,如下所示:

Figure 7.16 – FTP capture filter

图 7.16–FTP 捕获过滤器

  1. Once you click Start to begin your capture, you will only capture FTP traffic.

    注意

    当你使用完一个捕获滤镜时,进入捕获菜单,然后进入选项,确保你移除了滤镜的任何痕迹...。一旦打开,删除捕获过滤器,以便您可以再次捕获所有流量。

您可能已经使用了一个运行良好的捕获过滤器,并且您希望保留该过滤器以供将来使用。接下来,让我们看看如何将捕获过滤器保存到书签中。

给过滤器添加书签

在捕获过滤器的右侧是一个名为书签的绿色工具栏图标,内置的捕获过滤器存储在这里。每当您创建并保存过滤器时,Wireshark 都会将过滤器存储在书签中。

如果单击绿色工具栏图标,您将看到一个捕获过滤器列表,如以下屏幕截图所示:

Figure 7.17 – Capture filter bookmark drop-down

图 7.17–捕获过滤器书签下拉列表

在那里,您可以选择一个过滤器,Wireshark 将填充 capture filter 字段。

如果您创建了一个过滤器并想要保存它,请下拉书签图标并选择保存该过滤器,Wireshark 会将该过滤器保存在书签中。

捕获过滤器可能很有用;但是,请记住,在使用捕获过滤器时,您可能会错过在故障排除或搜索入侵证据时有所帮助的重要流量。

在分析过程中,您可能需要使用特定的字段值来创建一个表达式。以下部分概述了如何使用表达式生成器。

了解表达式生成器

除了构建简单的显示过滤器,Wireshark 还能够创建一个表达式,将特定字段值归零。要构建表达式,请转到分析,然后选择显示过滤表达式,如下图所示:

Figure 7.18– The Display Filter Expression menu choice

图 7.18–显示过滤器表达式菜单选项

单击链接启动表达式构建器。在左侧,您会看到 Wireshark 支持的所有协议的列表,如下面的屏幕截图所示:

Figure 7.19 – Display Filter Expression

图 7.19–显示过滤器表达式

Wireshark 能够解析数百个协议,并且不断添加新的协议,因此列表会很长。

为了进一步细化过滤器,您可以从右侧列出的四个变量中选择:

  • 关系:这是使用逻辑运算符将一个字段值与另一个值进行比较的比较运算符列表:
    • 存在:表示所选字段存在于抓图中
    • == :等于
    • != :不等于
    • > :大于
    • < :小于
    • > = :大于等于
    • < = :小于或等于
  • :表示所需的适当值。Wireshark 用适当类型的值填充它,即布尔或字符串。
  • 预定义值 : Wireshark 为给定字段填充适当的值。
  • 范围(偏移量:长度):这允许您输入一个整数范围,如4-812-20,如果它们是该字段或过滤器的合适选择。

现在您已经很好地理解了表达式生成器的功能,让我们来看一个构建自定义过滤器的简单示例。

建立表情

在这个例子中,我希望过滤器显示所有带有 TCP SYN 标志的数据包。在显示过滤表达式对话框的左侧,我向下钻取并选择了tcp.flag.syn值。Wireshark 将在对话框的右侧填充以下内容:

  • 关系 : ==
  • : 1
  • 预定义值 : 设定

Range is grayed out as this is not an appropriate selection for this field value.

一旦选择了所有的值,Wireshark 就会用生成的表达式填充底部的显示过滤器区域。在这种情况下,过滤器是tcp.flags.syn == 1,如下所示:

Figure 7.20 – TCP SYN flag filter

图 7.20–TCP SYN 标志过滤器

此时,我们可以选择以下任一选项:

  • 取消:这将退出表达式生成器,并且不会创建过滤器。
  • OK :这将把过滤器放置在显示过滤器工具栏中。

一旦过滤器出现在显示过滤器工具栏中,您就可以进行任何必要的修改,比如将tcp.flags.syn == 1更改为修改过的过滤器,比如tcp.flags.syn == 0。一旦您对过滤器感到满意,您可以通过按下回车或点击显示过滤器右侧的蓝色箭头来运行过滤器。

如您所见,表达式构建器是构建定制过滤器的一种简单方法。

在下一节中,我们将看到,在处理数据包捕获时,Wireshark 有许多快捷方式,允许您快速创建过滤器来简化您的工作流程。

发现快捷方式和便捷的过滤器

多年来,Wireshark 不断发展。现在,在进行分析时,只需右键单击并选择应用或准备为过滤器,即可非常轻松地动态创建显示过滤器。

在这一节中,让我们来看看应用过滤器的许多方法,而不必经历启动表达式生成器的复杂练习。此外,我们将看到一些方便的过滤器,您可以使用这些过滤器直接进入问题。我们将从过滤流量时使用的许多快捷方式的概述开始。

拥抱滤镜快捷键

在使用 Wireshark 的数据包详细信息面板中的时,您可能想要过滤特定的 IP 地址或特定的端口号。一旦您确定了感兴趣的项目,您可以右键单击它,您将看到几个过滤器快捷方式,如下所示:

Figure 7.21 – Right-click to view filter shortcuts

图 7.21–右键单击查看过滤器快捷方式

虽然右击时有很多选项,但是在中间可以看到处理滤镜的快捷方式。以下是可用的选项:

  • Apply as Filter :选中时,将创建并运行选中的字段值。
  • 准备为过滤器:选中时,它将创建所选字段值并将其放置在显示过滤器区域,让您有机会对过滤器进行任何修改或添加。
  • 会话过滤器:选中后,可以根据协议跟踪会话,如以太网IPv6TCP ,如下截图所示:

Figure 7.22 – Conversation Filter selections

图 7.22–对话过滤器选择

  • 用过滤器着色:这允许你给一个特定的对话着色。正如你所看到的,你可以从许多可用的颜色中选择,或者你可以创建自己的着色规则,如下图所示:

Figure 7.23 – Colorize with Filter

图 7.23–用滤镜着色

注意

如果您已经应用了过滤器对特定的流进行着色,然后想要撤销您的更改,请前往查看 | 着色对话,然后选择重置着色

当您右键单击字段值上的并选择应用为过滤器准备过滤器时,您将看到构建过滤器时的附加选项。让我们研究一下这是如何工作的。

查看附加选项

即使在快捷方式中,当使用应用为过滤器准备为过滤器时,您也会发现其他方法来过滤流量。如图图 7.21 所示,可以右键查看过滤快捷方式。以下列表显示了如何选择简单过滤器或添加逻辑运算符:

  • 选中:选择当前字段值。
  • 未选中:创建一个过滤器,删除选中的字段。例如,如果我右键单击目的端口443并选择未选择,Wireshark 将生成!(tcp.dstport == 443)并将其放入显示过滤器。
  • ...并选择:向过滤器添加一个字段值。
  • ...或者选中:创建一个OR滤镜。
  • ...未选中的:添加一个过滤器,删除选中的字段。
  • ...或未选择的:创建一个OR过滤器,该过滤器用于删除所选字段。

使用过滤器是帮助你找到问题的工具之一。下一节提供了一些有用的过滤器建议,可以帮助您搜索特定类型的流量。

应用有用的过滤器

Wireshark 是开发人员、网络管理员、学生和安全分析器常用的工具。网络管理员使用 Wireshark 调查许多可能出现并导致网络降级或传播恶意软件的问题。

一旦您使用 Wireshark 工作了一段时间,您将会学到简化工作流程的技巧和技术。一个常见的任务是应用各种显示过滤器。

使用显示过滤器

虽然您可以随时构建过滤器,但通常有一些方便的显示过滤器,包括以下内容:

  • http.request:这将在捕获文件中搜索任何HTTP GETPOST请求。
  • tcp.port==xxx:如果您使用特定端口监控 TCP 流量,请使用此过滤器。
  • tcp.stream eq X:该过滤器将跟随特定的流,其中X是流索引。
  • !(arp or icmp or dns):该过滤器将消除arpdnsicmp流量。
  • vlan.id ==X:显示具体的vlan

Wireshark 还提供了一个方便的拖放功能,您可以简单地从数据包树中拖动一个字段,并将其放入显示过滤器中。

除了显示过滤器之外,有时还会使用捕获过滤器来收集特定的流量。

使用捕获过滤器

众所周知,捕获过滤器在捕获流量时缩小了范围。一些实例包括如下:

  • port ftp || port ftp-data:这将捕获 FTP 流量。
  • ip host x.x.x.x:这将捕获来自特定主机的流量。
  • ip multicast:这将捕获多播流量。

Wireshark wiki 还列出了几个用于检测恶意软件的捕获过滤器。例如,dst port 135 and tcp port 135 and ip[2:2]==48会显示 Blaster 蠕虫病毒的证据。

注意

通过访问https://docs . Microsoft . com/en-us/trouble shooting/windows-server/security-and-malware/Blaster-worm-virus-alert了解更多关于 Blaster 蠕虫病毒的信息。

有许多方法可以过滤流量,只显示您想要查看的流量,这有助于删除不必要的流量并提高您的分析技能。根据您每天使用的网络类型,您很可能会建立自己的过滤器库。

总结

Wireshark 是一个强大的工具,让我们能够捕获和分析流量。在本章中,我们回顾了如何通过使用内置的过滤函数来更有效地研究捕获。我们学习了如何使用显示过滤器,并讨论了它如何提供仅显示单个协议的简单过滤器或字段值的组合。然后,我们回顾了如何编辑显示过滤器,以及如何创建自己的过滤器并将其存储在书签中以便于参考。

然后,我们讲述了如何在收集流量之前应用捕获过滤器,以便只显示特定类型的流量。我们还看到了如何通过构建表达式来深入查看特定的字段值。此外,我们看到,在执行粒度调查时,我们可以创建包含逻辑运算符和特定字段值的过滤器。有了许多过滤流量的方法,我们在进行分析的同时,研究了动态构建过滤器的捷径。最后,我们发现了在您的武器库中拥有几个有用的过滤器的好处。

在下一章中,我们将看一看开放系统互连 ( OSI )模型,这是为了有效地进行数据包分析而必须掌握的基本概念。为了让您更好地理解 OSI 模型,我们将逐一回顾七层。我们将讨论寻址、协议数据单元以及每层中的协议。此外,我们将逐步完成封装过程,因为数据已准备好形成帧,以便通过适当的介质发送。

问题

现在,是时候检查你的知识了。选择最佳答案,然后对照评估附录中提供的答案检查您的答案:

  1. 创建显示过滤器时,如果背景是 ____,则您输入了有效的过滤器。
    1. 红色
    2. 绿色的
    3. 黄色
    4. 蓝绿色
  2. 当使用表达式生成器创建表达式时,您可以通过修改右侧列出的四个变量中的任何一个来优化过滤器,这四个变量是关系、_ _ _ _ _ _、预定义值范围
    1. 浮动
    2. 整数
    3. 布尔型
  3. 要创建一个只查看 DNS 请求和响应的捕获过滤器,您应该在捕获过滤器中输入 _____。
    1. tcp port 53
    2. DNS
    3. dns
    4. udp port 53
  4. 如果您需要构建一个过滤器来关注特定的字段值,您可以使用 _____ 构建器。
    1. 表示
    2. 伯克利
    3. EPAN
    4. 解剖器
  5. 当使用应用为过滤器准备为过滤器时,您将看到创建简单过滤器或添加逻辑运算符的附加选项。_____ 添加删除选定字段的过滤器。
    1. ...或者选中
    2. ...并选择了
    3. 未选中
    4. ...并且没有被选中
  6. 在 Wireshark 中,捕获过滤器使用 _____ 语法。
    1. 表示
    2. BPF
    3. EPAN
    4. 解剖器
  7. 当选择快捷方式 _____ 时,它将创建选定的字段值并将其放置在显示筛选区域,使您有机会对筛选进行任何修改或添加。
    1. 准备过滤器
    2. 应用为过滤器
    3. 构建过滤器
    4. 生成过滤器

延伸阅读

请参考以下链接了解更多信息:

八、概述 OSI 模型

有效的数据包分析始于对开放系统互连 ( OSI )模型的深入理解。OSI 模型是一个七层框架,概述了操作系统 ( OS )如何转换、封装和准备数据以便在网络上传输。在本章中,我们将介绍七个层次以及每一层的作用和目的。此外,您将了解在 OSI 模型中,有三层使用特定的地址或标识符。传输层有关联端口,网络层使用互联网协议 ( IP )地址,数据链路层需要媒体访问控制 ( MAC )地址。为了使您能够区分每一层的标识符,我们将回顾并描述每一层的意义。

然后,我们来看看每层的协议数据单元 ( PDU )。

完成后,您将更加熟悉术语,并对每层中的一些协议有更好的理解。从超文本传输协议 ( HTTP )请求当数据从一个网页检索到它在网络上传输的比特,你将知道数据是如何转换的。此外,我们还将了解每个 PDU 如何进入下一层,正确格式化帧,以便使用适当的介质发送数据。

在本章中,我们将讨论以下主要话题:

  • OSI 模型概述
  • 发现每层的用途、协议和 PDU
  • 探索封装过程
  • 在 Wireshark 中演示帧的形成

OSI 模型概述

OSI 模型是一个七层框架,概述了每层的主要功能,代表了执行特定功能的一组协议。了解该模型将有助于您更好地准备使用 Wireshark 分析流量。此外,您将能够认识到在交易过程中所涉及的协议的角色。

注意

所有协议在网络上都有特定的用途。今天,Wireshark 已经为大多数协议提供了解析器,并且一直在添加新的解析器。

在本节中,我们将后退一步,了解框架是如何开始的,并认识到谁会从使用该模型中受益。

让我们从 OSI 模型背后的灵感开始。

开发框架

我们在 20 世纪 60 年代末到 70 年代中期开始了这段旅程,在这段时间里,我们看到了计算的扩展,以及总体技术的进步。除此之外,我们还见证了计算机的发展,从小型个人计算机到超级计算机,如 1976 年的 Cray,以及视频游戏,如 1972 年的 Pong。

在这个开发的同时,两个国际组织,即国际标准化组织 ( ISO )和国际电报电话咨询委员会 ( CCIT ),开始致力于一个参考模型来定义和标准化网络互操作性。最终,在 1983 年,这两个组织开发了 OSI 模型。

OSI 模型有多种用途,包括:

  • 为开发人员提供一个通用框架
  • 缩小网络管理员的问题范围
  • 支持各层和设备之间的互操作性。
  • 分解每一层,帮助学生更好地理解数据封装的整个过程。

结果,许多人从使用 OSI 模型中受益,我们将在下面概述。

使用框架

虽然 OSI 模型是一个参考模型,但是有许多组织在使用它。这些群体包括:

  • 开发人员参考 OSI 模型来概述系统如何相互通信。
  • 网络管理员在排除网络故障时,会根据他们认为应对故障负责的层来提及问题。
  • 设备制造商依靠 OSI 模型来确保他们的产品能够跨所有层工作。

此外,学生使用该模型开始他们的网络之旅。每个大学新生网络课程的主要内容是 OSI 模型的介绍。在大多数情况下,这些学生从来没有听说过这个,所以以简单的方式提出一个复杂的话题可能是困难的。因为这是他们第一次见面,所以以简单易学的方式传达这一信息很重要。

此外,该模型还提供了每一层中正在发生的事情的可视化描述。该模型定义了协议、PDU 和每层的用途,如下一节所述。

发现每层的用途、协议和 PDU

在这一节中,我们将带仔细看看 OSI 模型的七个层中的每一层,并描述以下内容:

  • OSI 模型的各层,从层七层到层一层:应用演示会话传输网络数据链路,以及物理
  • 在封装过程中使用源寻址和目的寻址的三层:传输、网络数据链路层
  • 每个层的 PDU,它定义了数据在通过到上面的层或下面的层时的形状。

在下图中,我们可以看到 OSI 模型的总结:

Figure 8.1 – The OSI model

图 8.1–OSI 模型

在深入研究各层之前,使用记忆方法来记住每一层的第一个字母是很有帮助的。对于 OSI,我们有两个,如下图所示:

Figure 8.2 – OSI mnemonics

图 8.2–OSI 助记符

一旦你知道了这些层的名字,下一步就是解决每个层的角色、目的和协议。

当概述每一层时,我通常从应用层开始,因为这是我们开始与网络联系的地方。接下来我们来讨论这个。

评估应用层

应用层(或第 7 层)包含允许进程间通信的协议,这使我们能够完成以下任务:

  • 检索网页
  • 获取或发送电子邮件
  • 将文件上传到 FTP 服务器
  • 请求动态分配的 IP 地址

在 TCP/IP 网络上,每个应用层协议根据其功能遵循特定的建议、要求和选项。让我们讨论一下这一层 PDU 的一些协议。

探索应用层协议

应用层有数百个协议。许多常见的或众所周知的协议在 20 世纪 80 年代很早就被开发和标准化了。有些已经弃用,我们很少见到,比如 Telnet 和简单认证和安全层 ( SASL )。然而,根据需要,新的协议被开发出来,以跟上今天的需求,例如受限应用协议 ( CoAP )和消息队列遥测传输 ( MQTT ),它们都与物联网 ( 物联网)设备一起使用。以下是应用层协议的候选名单:

Table 8. 1 – The Application layer protocols

表 8。1–应用层协议

在许多情况下,这一层的协议涉及一系列客户端请求和服务器响应。接下来,我们来谈谈这一层的 PDU。

了解应用层 PDU

应用层PDU 是专用于所用协议的数据。

每个协议的报头结构会有所不同,因为每个协议都是特定于应用的。除此之外,客户端的标头通常不同于服务器的标头。

大多数协议都有一个相关的端口,该端口位于传输层报头中。以下是应用层的总结:

Table 8. 2 – Summary of the Application layer

表 8。2–应用层概述

数据离开应用层后,会被传递到表示层,以便正确格式化数据。接下来我们来探讨一下。

剖析表示层

表示层负责正确的数据格式化,以及可选的压缩和加密。这一层确保在将数据呈现给应用(如 Word 文档)之前,或者在将数据发送到网络之前,数据处于正确的格式。例如,如果你从互联网上下载一个扩展名为.gz的文件,那么表示层将搜索一个与之相关的应用,这样操作系统就可以正确打开该文件。如果没有安装该应用,您将会看到一条消息,如下面的屏幕截图所示:

Figure 8.3 – The dialog box to select an application

图 8.3–选择应用的对话框

如果您没有安装应用,那么您可以进入并手动选择您想要用来打开文件的应用,或者获取并安装正确的应用。

表示层还提供可选的服务来压缩和解压缩数据。压缩消除了冗余,使数据变得更小。这个函数是可选的,因为不是所有的数据都被压缩。

此外,这一层还处理加密,包括使用密钥对数据进行加扰,使其处于不可读的格式,除非拥有密钥,否则对任何人都没有意义。因为加密也是一个可选功能,所以这可能不是必需的。

表示层中,有一些协议,我们将在下一节和 PDU 一起研究。

描述协议和 PDU

在这一层中,协议处理适当的数据翻译和编码/解码,例如外部数据表示 ( XDR )。此外,由于表示层在加密中的作用,您会发现以下协议:

  • 传输层安全(TLS)/安全套接字层(SSL) :这些协议使用加密保护端到端通信,如银行交易和网页检索。
  • 安全/多部分互联网邮件扩展(S/MIME) :这些协议以数字方式对电子邮件消息进行签名和加密。

表示层, PDU 仍然是数据,我们看到数据被翻译或转换成正确的格式。下面的是展示层的总结:

Table 8.3 – Summary of the Presentation layer

表 8.3-表示层总结

在许多方面,表示层是应用层的扩展。接下来是会话层,在这里我们可以看到会话管理的所有关键元素。

了解会话层

会话层(或第 5 层)负责建立、维护和拆除会话。在开始与网络联系后交换任何数据之前,操作系统必须建立一个会话。创建会话时,操作系统将创建适当的套接字,即 IP 地址和端口。这是为了使两个端点可以相互交换数据。

在网络上通信时,您将建立多个并发会话和连接。您可以通过进入命令行并运行netstat来查看您的活动连接,如下面的屏幕截图所示:

Figure 8.4 – Netstat showing active connections

图 8.4-显示活动连接的 Netstat

在前面的截图中,我们只看到了传输控制协议 ( TCP )连接。TCP 是一个面向连接的协议,两个端点都需要相互交流数据事务的状态。因此,您将看到一个本地和外地地址,以及交易的状态。例如,下面表示一个连接:

TCP 172.20.4.31:51393 104.118.222.227:443  ESTABLISHED

除了管理两个端点之间的通信,会话层还提供其他服务,包括:

  • 认证:通过要求密码或其他形式的认证来验证和识别一个实体。
  • 授权:如果实体有适当的权限,这允许访问系统资源。
  • 检查点:它监控会话的错误,并确保所有数据都已接收。如果传输中有错误,会话层可能会重新请求任何丢失的数据。

通信流结束后,会话层安全关闭会话。接下来,我们来看看这一层的一些关键协议。

识别协议和 PDU

会话层中存在几个协议。尽管大多数协议可能起源于其他层,但这些协议部分始于会话层:

  • 实时传输控制协议(RTCP) :它与实时传输协议 ( RTP )一起工作,将控制信息传递给所有IP 语音 ( VoIP )呼叫中的参与者。
  • 域名系统(DNS) :将主机名解析为 IP 地址,以便进行会话。
  • 点对点隧道协议(PPTP) :这通过使用通用路由封装隧道来创建 VPN,以提供比使用纯文本更安全的方式来传递数据。
  • 远程过程调用(RPC) :这允许一个程序在共享网络上的另一个主机上运行一个子程序。

会话层,PDU 是数据。以下是会话层的总结:

表 8.4-会话层总结

会话层管理会话的所有方面,使主机能够在对话中相互通信。在这一点上,数据然后移动到传输层层,在那里它现在变成一个段,在传输层报头中有必要的端口寻址。

Appreciating the Transport layer

The Transport layer (or layer 4) is responsible for transporting the data, either using a connectionless or connection-oriented protocol across the network. The encapsulation process starts at this layer. The data will have additional headers added as it traverses down the layers to become a frame, ready to be sent on the network.

所选择的传输协议将取决于应用。数据主要使用 TCP 或用户数据报协议 ( UDP )进行传输。然而,传输层还有其他几种协议。让我们来看看它们。

区分协议和 PDU

传输层有几个协议来传输数据,包括:

Table 8.5 – Common protocols in the Transport layer

表 8.5-传输层中的常见协议

虽然还有其他一些鲜为人知的传输层协议,但我们将从使用更广泛的 TCP 协议开始,讨论两个主要的协议:TCP 和 UDP。

通过 TCP 提供可靠性

TCP 是面向连接的协议具有端到端的可靠性。TCP 以三方握手开始一个会话,以交换finish(FIN)数据包结束会话。

TCP 使用 11 字段报头中的字段值主动对数据进行排序和确认,以确保所有数据都到达终端设备。

一旦进入连接,TCP 就会经历一系列状态。例如,在图 8.4 中,可以看到ESTABLISHEDTIME_WAIT状态。

TCP 状态列表如下:

  • LISTEN :系统等待远程主机的连接请求。
  • SYN_SENT :客户端发出连接请求后,系统等待响应。
  • SYN _ RECEIVED:SYN 请求返回给客户端后,服务器等待最终的 ACK 来启动连接。
  • ESTABLISHED :这是两个端点主动通信的正常状态。
  • FIN_WAIT_1 :主机等待响应发送到远程主机的 FIN 的 ACK 或来自远程主机的 FIN 请求。
  • FIN_WAIT_2 :主机等待来自远程主机的 FIN 请求。
  • CLOSE_WAIT :这意味着服务器已经从客户端收到一个 FIN 包,正在等待结束会话。
  • 关闭:FIN 包发出后,主机开始关闭连接,等待相应的确认,以便完全关闭会话。
  • LAST_ACK :发送 FIN 包后进行最终确认,以确保远程主机已收到终止请求。
  • TIME_WAIT :发送终止请求后,此状态等待确保远程主机已经收到结束会话的请求。
  • 关闭:这根本不是一种状态;它代表一个封闭的连接。

对于面向连接的会话,获取通信流的所有部分非常重要,TCP 是传输层协议的首选。然而,当需要数据传输的速度时,UDP 是更好的选择。UDP 是一种只有四个字段值的无连接协议,我们将在下面学习。

使用 UDP 确保及时交付

UDP 是一种无连接的轻量级传输层协议,它有一个四字段的报头。UDP 没有任何握手或连接过程、排序或可靠性服务,也没有拆卸。作为一个轻量级协议,它非常适合速度是一个问题的地方,并且用于时间敏感的应用,例如:

  • 动态主机配置协议 ( DHCP )
  • 路由信息协议 ( RIP )
  • 网络电话(VoIP)
  • 琐碎的文件传输协议 ( TFTP )。

无论使用 TCP 还是 UDP,传输层都是确保数据传输的关键组件。在封装过程中,数据开始转换,PDU 现在是一个数据段。此时,传输层需要一个端口号(或地址),该端口号与正在使用的应用或进程相关联。这将在下一节讨论。

提供端口寻址

在传输层,我们添加一个端口地址,用于标识特定的应用或进程。端口号分为三大类:

  • 众所周知的端口范围在 1 到 1,023 之间,包括 HTTP、DNS 和 SMTP 等协议。
  • 注册的端口范围在 1,024 到 49,151 之间,被分配并用于特定服务,如游戏应用、OpenVPN 和 IPsec。
  • 动态私有短暂端口在 49,152–65,535 的范围内,并且没有分配给任何特定的应用。它们通常由客户端在会话期间临时使用。

当传输层报头应用于数据时,会添加源端口和目的端口。使用的端口类型取决于数据包是来自客户端还是服务器:

  • 如果一个客户端发送一个数据包,那么源端口将是(在大多数情况下)一个随机分配的动态或临时端口。因此,当服务器向主机发送数据包时,它会使用该端口来发送数据。
  • 如果一个服务器发送一个数据包,那么源端口将是一个众所周知的端口或者是一个注册端口。

传输层提供端点之间的主机间通信。下面概述了传输层:

Table 8.6 – Summary of the Transport layer

表 8.6-传输层总结

传输层之后,下一层是网络层。正如我们将在下一节中看到的,这一层完全是为了将数据传输到正确的网络。

解释网络层

网络层(或第 3 层)有两个关键作用:寻址和路由数据。这一层使用逻辑 IP 地址提供寻址。此外,网络层确定通过其他网络传输的数据包的最佳逻辑路径,以便它们能够到达目的地。它通过在路由过程中与其它设备通信来实现这一点。

除了数据转发之外,网络层还会传达传输中的错误。为了实现这一点,网络层有几个关键协议,我们将在下一节看到。

区分协议和 PDU

网络层负责寻址和路由。这一层的主要有三个协议:IP、地址解析协议 ( ARP )、以及互联网控制消息协议 ( ICMP )。先说 IP。

用 IP 路由数据包

IP 是一种尽力而为的无连接协议,它使用逻辑 IP 地址将数据包从源路由到目的地。

多年来,TCP/IP 套件中的许多原始协议都有微小的变化、更新和修改。然而,IP 不得不做出重大改变,这主要是由于缺少地址空间。因此,有两个版本的 IP: IPv4 和 IPv6。以下是两者的简要比较:

  • IPv4 有一个 32 位地址空间。私有 IP 地址的使用延长了 IPv4 在局域网上的寿命,但是向 IPv6 的迁移很慢。
  • IPv6 拥有 128 位的地址空间,并提供了对该协议的总体增强,例如简化的网络配置和更高效的路由。

接下来,我们来看看 ARP,它将 IP 地址解析为 MAC 地址。

使用 ARP 解析地址

IP 通过网络将流量路由到目的局域网。当一个包到达局域网时,它不再需要 IP 地址。它需要一个物理地址或 MAC 地址才能到达目的地。ARP 发出广播,将 IPv4 地址解析为 T2 局域网 T3(T4 局域网 T5)上的 MAC 地址,这样就可以传送帧。

注意

ARP 是一种不常见的协议,因为它出现在 OSI 模型的第三层和第二层之间。ARP 将 IP 地址(网络层)解析为 MAC 地址(数据链路层)地址。然而,许多人认为它是第三层协议。

除了 IP 和 ARP,我们还需要 ICMP 来帮助报告数据传输过程中可能出现的任何问题。这将在下一节讨论。

使用 ICMP 传送消息

ICMP 是另一个重要的网络协议。但是,ICMP 不交换或传输数据。它的主要作用是错误报告。因为 IP 是一个尽力而为的、不可靠的协议,ICMP 必须由每个 IP 模块来实现,正如最初的征求意见稿 ( RFC )中所概述的,可以在https://tools.ietf.org/html/rfc792找到。ICMP 报告传输过程中遇到的任何问题,例如网络不可达和主机不可达。因为有两个 IP 版本,所以有两个 ICMP 版本:

  • IPv4 使用 ICMP。
  • IPv6 使用 ICMPv6。

在封装过程中,网络层的 PDU 是一个数据包。网络层负责路由和寻址数据。一个关键要素是 IP(或逻辑)地址,如下所述。

为数据包提供 IP 地址

在这一层,IP 报头将保存 IPv4 格式或 IPv6 格式的源地址和目的地址。两者都被称为逻辑地址,并表示为如下:

  • IPv4 地址有 32 位,Wireshark 将使用点分十进制表示法显示。
  • IPv6 地址有 128 位,Wireshark 将使用由冒号分隔的十六进制数字来显示。

在上一节中,我们讨论了另外两种协议:ARP 和 ICMP。让我们结合寻址的需要来讨论这两个问题。

我们知道 IP 使用包含 IP 地址的报头。但是,ARP 和 ICMP 都是独特的,如下所述:

  • ARP 没有 IP 报头。ARP 是一种将 IPv4 地址解析为 MAC 地址的服务协议。
  • ICMP 是 IP 的伙伴协议,它报告传输过程中遇到的问题,例如网络不可达和主机不可达。ICMP 本身不需要 IP 地址,因为它封装在 IP 报头中,如以下 ICMP 回送请求的屏幕截图所示:

Figure 8.5 – An ICMP echo request

图 8.5–ICMP 回应请求

到目前为止,您应该已经了解网络层通过提供逻辑寻址和路径确定,允许不同网络上的主机相互通信。

下表概述了网络层:

Table 8.7 – Summary of the Network layer

表 8.7-网络层总结

随着数据被封装并沿 OSI 模型向下传递,下一步是数据链路层,其中一个关键作用是正确的帧形成,以便帧可以在局域网上传输。让我们来看看。

检查数据链路层

数据链路层(或第 2 层)主要关注正确的帧形成,并在数据在网络上发送之前准备好数据。在数据链路层层中,有几个协议负责正确格式化数据,以便数据能够在目的网络上成功传输。接下来让我们关注几个关键的数据链路层协议。

研究协议和 PDU

数据链路层是数据沿着 OSI 模型传输的最后一站,因为这一层添加了帧头和帧尾来为网络准备帧。这一层使用的协议包括:

  • 以太网 II 是当今应用最广泛的以太网技术。它使用物理(或 MAC)地址在 LAN 上建立连接。
  • 高级数据链路控制 ( HDLC )使用帧将数据从点到点传送。

在这一层,PDU 是一个帧。每个帧都需要一个地址,我们将在下面概述。

描述数据链路层地址

在局域网上,数据链路层使用目的机器的 MAC 地址而不是 IP 地址。数据链路层有一个帧头,包含源和目的 MAC 地址,也称为物理地址。预告片,或帧校验序列,保存一个称为循环冗余校验 ( CRC )的值,用于网络上的错误检测。

下表总结了数据链路层:

Table 8.8 – Summary of the Data Link layer

表 8.8-数据链路层总结

数据链路层确保通过网络介质传输时,帧的格式和链路的访问正确,并能进行错误检测。然后,数据传输到物理层,我们将在下一节中看到。

穿越物理层

物理层(或第一层)通过媒体以比特流的形式传输数据。

一旦数据被格式化成帧,网络接口卡 ( NIC )就以比特流的形式将其发送到网络媒体。

示例协议

在物理层,有几种不同的协议用于通过网络介质传输数据:

  • 数字用户线 ( DSL )通过电话线为的居民和企业提供宽带。
  • 综合业务数字网 ( ISDN )利用公共交换电话网 ( PSTN )传输语音、视频和数据。ISDN 主要用于广播行业。
  • IEEE 802.3—以太网物理层—根据媒体类型定义传输属性,如快速以太网、千兆(GB) 以太网。

物理层是通过网络介质进行二进制传输的地方。让我们回顾一下这一层的 PDU。

描述 PDU

在这一层,帧形成完成并准备在介质上传输。PDU 是最基本的形式,即比特。传播的方法将取决于媒介。

网络媒体包括以下内容:

  • 铜缆采用非屏蔽双绞线 ( UTP )、屏蔽双绞线 ( STP ),或者同轴;用电脉冲传输
  • 光纤使用多模或单模电缆;用光脉冲传输
  • 无线使用 802.11 规范;通过无线电波传输

下表总结了物理层:

Table 8.9 – Summary of the Physical layer

表 8.9-物理层概述

在通过网络传输之前,数据必须采用正确的格式。下一节将探讨封装过程,即添加报头和地址,并为通过介质传输数据做好准备。

探索封装过程

现在我们已经对各层有了了解,让我们看看在封装过程中各层如何协同工作来创建一个帧。

在帧形成期间,该过程从数据开始。随着数据沿各层向下移动,一个接一个地添加报头,直到帧完整。每个框架都有以下组件:

  • 数据和适当的应用层报头(如果适用)
  • 段标题
  • 数据包(或 IP)报头
  • 帧头

我们将从帧的数据部分开始。

查看数据

在大多数情况下,当帧形成和封装开始时,我们从数据开始,如下所示:

Figure 8.6 – The encapsulation process—data

图 8.6-封装过程-数据

该数据可能是以下任何一种:

  • HTTP GET请求
  • 将主机名解析为 IP 地址的 DNS 请求
  • 请求动态分配 IP 地址的 DHCP 广播

然后,数据继续它的旅程,成为一个片段。

识别细分市场

接下来发生的事情是数据将(在大多数情况下)变成使用 TCP 报头或 UDP 报头的数据段:

Figure 8.7 – The encapsulation process—segment

图 8.7–封装过程-分段

该段包含一个源和目的端口地址,如图 8.7 所示。封装过程的下一步是添加 IP 报头,使其成为数据包。我们接下来将讨论这一点。

表征数据包

随着数据被封装,我们现在有了数据,以及保存 TCP 或 UDP 端口地址的数据段。封装的下一部分是通过将源和目的 IPv4 或 IPv6 地址添加到 IP 报头来创建数据包,如下所示:

Figure 8.8 – The encapsulation process—packet

图 8.8–封装过程—数据包

封装过程的最后一部分是添加帧头,这将在下一节中演示。

形成框架

创建框架之旅的最后一站是添加标题。在该框架中,我们有以下内容:

  • 数据,如 HTTP 请求或 DNS 回复
  • 传输层报头(或数据段)
  • 网络层报头(或数据包)

此时,我们通过添加源 MAC 地址和目的 MAC 地址来完成帧,如下所示:

Figure 8.9 – The encapsulation process—frame

图 8.9-封装过程-框架

对于一个帧,我们不仅有一个帧头,还有一个帧尾,称为帧校验序列 ( FCS )。FCS 保存一个称为循环冗余校验的值,该值用于网络上的错误检测,并在行进途中被校验。

注意

FCS 用于错误检测,而不是错误校正

下一节将介绍当 Wireshark 捕获流量并将其呈现给用户时,帧的结构是什么样子。

演示 Wireshark 中的帧结构

一旦您理解了封装和帧形成,您将能够学习 Wireshark 如何表示帧形成,如下面的截图所示:

Figure 8.10 – Frame formation in Wireshark

图 8.10-Wireshark 中的帧结构

注意

并非所有帧都包含数据;然而,这一个有,所以它是一个完全封装的帧的好例子。

查看单个帧时,您会在图 8.10 的顶部看到Frame 4371行,这是关于该单个帧的元数据,它总结了该帧的内容。该帧的元数据包括诸如401 bytes on wire401 bytes captured的信息。

在帧元数据之后,您将看到以下内容:

  • :帧头显示以太网 II,之后是源和目的 MAC 地址。
  • 数据包:IP 头代表网络层,保存源和目的 IP 地址。
  • :TCP 报头代表传输层,它保存源和目的端口地址。
  • 数据:HTTP 头表示应用层。在这种情况下,它是一个 web 请求。

这是 Wireshark 如何显示封装过程及其与 OSI 模型关系的示例。

既然您已经了解了 Wireshark 中的封装过程和帧形成过程,那么让我们来看看 NIC,看看 OSI 模型在您自己的系统上的运行情况。

检查网络绑定

在你自己的笔记本电脑或台式机上,你可以很容易地看到 OSI 模型的运行。如果您检查您的网络连接,然后选择您的网络接口卡的属性,如下面的屏幕截图所示,您可以看到 OSI 模型中的各层是如何表示的:

Figure 8.11 – Network bindings

图 8.11–网络绑定

下面描述了不同的层以及它们在以太网属性中的表现方式:

  • 数据链路层和物理层在网卡中表示。
  • 微软网络的客户端和微软网络文件和打印共享中表现了应用层、表示层和会话层。
  • 网络层显示为互联网协议(TCP/IP)

到目前为止,您应该能够识别 OSI 模型的每一层,以及每一层在 Wireshark 中是如何表示的。

总结

在本章中,我们仔细研究了一个重要的概念,OSI 模型和封装过程。OSI 模型是一个服务于多种目的的框架。该模型为开发人员提供了一个通用框架,并提供了一种方法来帮助学生理解每一层发生的过程。除此之外,了解每一层、PDU 和寻址将有助于您更好地理解 Wireshark 中的流程,并提高您的数据分析技能。

至此,您应该对每一层的作用、目的、协议和 PDU 有了更好的理解。我们探讨了封装过程,并研究了 Wireshark 中的帧结构。为了帮助您理解您的系统如何使用 OSI 模型,我们查看了该模型在网络绑定中是如何表示的。

在下一章中,我们将仔细研究如何解码两个主要的传输层:TCP 和 UDP。我们将首先回顾传输层的用途,然后讨论 TCP 并研究 Wireshark 中的 11 字段报头格式。然后,我们将对 UDP 的目的进行概述,并检查四个字段的报头和每个字段值的重要性。

问题

现在是时候检查你的知识了。选择最佳答案,然后将您的答案与评估附录中列出的答案进行核对:

  1. ____ 层或第 5 层负责建立、维护和拆除会话。
    1. 运输
    2. 应用
    3. 会议
    4. 介绍会;展示会
  2. ____ 层或第 4 层负责传输数据,要么使用无连接协议,要么使用面向连接的协议。
    1. 运输
    2. 应用
    3. 会议
    4. 介绍会;展示会
  3. ____ 层或第 6 层负责正确的数据格式化以及可选的压缩和加密。
    1. 运输
    2. 应用
    3. 会议
    4. 介绍会;展示会
  4. TCP 端口334在 _____ 端口范围内。
    1. 短暂的
    2. 众所周知
    3. 注册的
    4. 安全的
  5. 传输层的 PDU 是 _____。
    1. 数据
    2. 基本框架
    3. 小包裹
  6. ARP 没有(n) ___ 报头,因为它是一种将 IPv4 地址解析为 MAC 地址的服务协议。
    1. 数据传输器
    2. 基本框架
    3. 互联网协议(Internet Protocol)
  7. 在局域网中,数据链路层使用目的机器的 _____ 地址,而不是 IP 地址。
    1. 测量与控制(Measurement and Control)
    2. 短暂的
    3. 小包裹

第三部分:互联网套件 TCP/IP

在这一节中,我们将学习 internet 套件,并研究传输数据的协议,TCP、UDP、IP 和 ICMP。我们将仔细研究 TCP 如何管理连接,并剖析握手和拆卸过程。您将看到 IPv4 和 IPv6 之间的区别,并了解为什么 ICMP 是数据传输过程中不可或缺的一部分。

本节将涵盖以下章节:

九、解码 TCP 和 UDP

自从 20 世纪 80 年代早期标准化以来,传输控制协议/互联网协议 ( TCP/IP )套件已经定义了数据如何被寻址、打包、传输和路由。多年来,TCP/IP 套件已经过修改,以在当今不断变化的网络中提供更高的效率。本章将重点介绍该套件的 TCP 部分,即开放系统互连 ( OSI )模型的传输层(或第 4 层)。第 4 层有几种传输数据的协议;然而,我们将重点放在最广泛使用的传输层协议,TCP 和 UDP。

在本章中,我们将首先回顾传输层的作用和目的。然后,我们将进一步了解 TCP(一种面向连接的协议)及其用途。为了便于您分析 TCP,我们将详细检查报头格式和字段值,例如序列号、偏移量、窗口大小 ( WS )和 TCP 标志。我们将回顾一下用户数据报协议 ( UDP ),并讨论这种轻量级、无连接协议的常见用途。我们将通过检查 UDP 的简化的四字段报头来结束。

本章将涵盖以下内容:

  • 查看传输层
  • 描述 TCP
  • 检查 11 字段 TCP 报头
  • 了解 UDP
  • 发现四字段 UDP 报头

查看传输层

OSI 模型的传输层负责通过在 IP 网络上使用无连接或面向连接的协议来提供端到端的数据传输。所使用的传输协议将取决于应用。

除了 TCP 和 UDP 之外,这一层还有几个协议,包括:

  • 可靠数据协议 ( RDP ):用于以面向连接的方式传输数据
  • 流控制传输协议 ( SCTP ):为有多个 IP 地址的数据流提供可靠的传输

虽然还有其他传输层协议,但两个主要的协议是 TCP 和 UDP,如下图所示:

Figure 9.1 – The OSI model—Transport layer

图 9.1-OSI 模型-传输层

UDP 是无连接的,在需要快速传输数据时使用。UDP 有一个轻量级的四字段报头,其长度总是 8 个字节。

注意

与 TCP 不同,UDP 目前没有任何报头选项。然而,由于互联网不断变化的特性,人们一直在积极讨论是否可能包含 UDP 选项。你可以查看名为UDP传输选项的草案,这里:https://www . IETF . org/archive/id/draft-IETF-tsvwg-UDP-Options-13 . txt

与 UDP 相反,TCP 是面向连接的协议。它有一个 11 字段的标题,能够包含选项。在下一节中,我们将了解该协议在监控拥塞和提供流量控制的同时确保完整数据传输的能力是多么令人印象深刻。

描述 TCP

TCP 是面向连接的协议具有端到端的可靠性。这两个重要特征描述如下:

  • 面向连接意味着在传输任何数据之前,两个端点必须建立连接。要开始一个会话,TCP 以一次(三方)握手开始,以一系列finish(FIN)数据包结束,从而结束会话。
  • 端到端可靠性是指在数据传输过程中,数据被排序和确认。所有数据都被仔细监控,如果传输中有任何间隙,TCP 将请求任何丢失的数据包。

两台主机建立连接后,TCP 会监控会话,以确保数据传输完成,而不会给主机或网络造成过度压力。在下一节中,我们将总结 TCP 连接期间发生的情况。

建立和维护连接

使用 TCP 时,在进行任何数据交换之前,会话必须从主机之间的三方握手开始。握手确立了对话的参数。在开始通信之前,客户端和服务器必须就所有参数达成一致。

在许多情况下,除了 TCP 报头之外,还有报头选项来概括和进一步定义对话的参数。

任何 TCP 选项都可以在三次握手的前两个数据包中找到。例如,两个常见选项如下:

  • 窗口缩放:通过提供乘数来扩展规定的 WS 的值,该乘数更准确地反映了真实的 WS。

  • Selective Acknowledgements (SACK): When SACK is enabled, the receiver will notify the sender only if there are any missing packets.

    注意

    TCP 选项将在第十章 、管理 TCP 连接中详细介绍。

一旦两台主机之间建立了连接,本地和外部(或远程)主机的操作系统都会创建一个套接字,它是一个 IP 地址和一个端口。

要查看 Windows 机器上所有活动的 TCP 连接,请打开命令行提示符并运行netstat -anp tcp。这将显示您的活动连接。

在顶部,您会看到以下标题:

原始本地地址外部地址状态

这些定义如下:

  • Proto(协议)
  • Local Address(本地 IP 地址和端口)
  • Foreign Address(远程 IP 地址和端口)
  • State连接的

运行netstat命令后,我的输出如下:

Figure 9.2 – Netstat showing TCP connection status

图 9.2–显示 TCP 连接状态的 Netstat

图 9.2 中,您会看到一个本地 IP 地址和端口,以及一个外地(或远程)IP 地址和端口。例如,在第一行中,我们看到以下内容:

  • Proto : TCP
  • Local Address : 10.0.0.148:49559
  • Foreign Address : 172.249.124.141:5223
  • State : ESTABLISHED(或主动沟通)

在对话过程中,TCP 会确认收到的所有数据包,以确保数据的完整传递。每次 TCP 收到数据,接收方主机都会向发送方发回一个确认 ( ACK )数据包,通知发送方收到了什么数据。

会话结束后,TCP 通过交换 FIN 数据包来结束会话。

接下来,让我们看看这个强大的协议是如何帮助控制数据流和减少网络拥塞的。

管理流程

在连接过程中,TCP 主动监控连接,发送方和接收方不断相互通信。在数据交换期间,TCP 将按如下方式管理主机和网络的数据:

  • 流量控制是一种使用 WS 的端到端控制方法,因此发送方不会传输太多数据,并且会淹没主机
  • 拥塞控制防止一个节点发送过多数据使网络不堪重负。

当提供拥塞控制时,有两个在数据传输期间计算的状态变量:

  • 拥塞窗口 ( Cwnd ):发送方限制定义了主机在接收到确认之前可以发送的数据量。
  • 接收窗口 ( Rwnd ):接收端限制定义了主机可以接收的数据量。

在 TCP 连接中,这两个变量共同调节数据流,最大限度地减少拥塞,并提高网络性能。

很难相信,但是在一个单独的帧中有大量的细节,并且每个帧可以包含许多组件。组件可以包括各种标题、标题中的字段值和可选数据。在下一节中,我们将查看单个 TCP 帧中的所有信息。

探索单个 TCP 帧

要深入了解 TCP 报头,请访问 https://www.cloudshark.org/captures/0012f52602a3 的。在 Wireshark 中下载并打开HTTP.cap数据包捕获文件。

如下面的屏幕截图所示,选择Frame 4并关注数据包细节窗格:

Figure 9.3 – The packet details pane for Frame 4

图 9.3–帧 4 的数据包详细信息窗格

每个标题都有一个摘要,后面是标题的详细信息。要查看协议摘要,将光标放在协议上,单击右键,然后选择协议首选项,如下所示:

Figure 9.4 – Protocol preferences for TCP

图 9.4–TCP 的协议首选项

进入后,选择显示协议树中的 TCP 摘要,如图所示。此外,您可以通过单击右侧的箭头(或插入符号, > )来展开标题,以查看详细信息。

我们来分解一下Frame 4的各个元素,从画面细节开始。

描述框架细节

图 9.3 的顶部开始,我们看到Frame 4。点击左侧的箭头展开框架标识符,查看如下详细信息:

 Figure 9.5 – Frame metadata on a single frame

图 9.5–单个帧上的帧元数据

注意

标识符Frame不是一个协议,它是由 Wireshark 生成的值列表,描述关于单个帧的信息(或元数据)。

图 9.5 所示,我们看到的是关于Frame 4的元数据,它总结了帧的内容,比如帧长度和任何着色规则。

下一个标识符开始真正的帧封装,正如我们看到的Ethernet II报头。

扩展以太网 II 报头

(真正的)帧头是Ethernet II帧,这是一种常见的帧格式,可以在局域网 ( 局域网)上找到。帧头跟随元数据摘要,并提供关于源和目的媒体访问控制 ( MAC )地址的信息,如下面的截图所示:

Figure 9.6 – Frame header

图 9.6–帧标题

在报头中,我们在帧的最后一行看到了下面的:Type: IPv4 (0X0800)。这意味着跟在后面的下一个报头是 IPv4 报头,我们接下来将对此进行研究。

查看 IP 报头

Internet Protocol Version 4报头以包括源和目的地 IP 地址的总结开始,随后是 IPv4 字段值。

注意

IPv4 报头将在第十一章 、分析 IPv4 和 IPv6 中详细介绍。

Frame 4的 IPv4 报头如下图所示:

Figure 9.7 – IPv4 header

图 9.7–IP v4 报头

类似于帧头,我们在帧内看到下面的:Protocol: TCP (6)。这意味着接下来的下一个报头是 TCP 报头。

导航 TCP 报头

TCP 报头以标识符Transmission Control Protocol开始,并列出源和目的地端口、序列和确认号。此外,您还会看到 Wireshark 生成的数据,显示在[ ]中,比如[Stream index: 0]

Frame 4的 TCP 报头如下图所示:

Figure 9.8 – TCP header

图 9.8–TCP 报头

这里我们看到了 TCP 报头的细节。在这种情况下,我已经禁用了协议树协议首选项中的 Show TCP summary,因此整个报头能够适合页面。

Frame 4的最后一个组件是超文本传输协议 ( HTTP )头。

检查 HTTP 头

因为客户端正在从 web 服务器请求数据,所以使用的应用是 HTTP。在这种情况下,我们会看到 HTTP 标头,如下所示:

Figure 9.9 – HTTP header

图 9.9–HTTP 标题

注意

HTTP 协议将在 第十五章解码 HTTP 中详细介绍。

既然我们已经介绍了单个帧中的细节,让我们详细检查 TCP 报头和每个字段值的。

检查 11 字段 TCP 报头

TCP 有一个 11 字段的报头。字段包含跟踪对话的值,如下图所示:

Figure 9.10 – The TCP header

图 9.10–TCP 报头

TCP 使用字段的值来监控通信。一旦接收到所有字节,TCP 将指示终端设备已成功接收到所有数据。如果在数据传输过程中出现问题,TCP 会提醒另一台主机任何丢失的数据段。

在本节中,我们将查看每个报头字段,以便您更好地理解 TCP 如何能够在主机之间提供可靠的通信。在适当的时候,我将以下面的方式列出字段和大小,[Field: Size],以便您理解组成 TCP 报头的值。

HTTP.capFrame 4中的 TCP 报头顶部开始,我们可以看到标签Transmission Control Protocol,如图图 9.8 所示。在标签下方,您可以看到 TCP 报头字段。

查看 TCP 报头内容时,Wireshark 生成的任何信息都会显示在括号中。这些生成的内容将帮助您更好地理解标题的细节,例如[Timestamps][SEQ/ACK analysis],如靠近图 9.8 底部所示。

让我们从端口和 TCP 数据段长度开始,逐步查看前几个报头字段。

探索 TCP 端口

在 Wireshark 中,您可以解析物理、网络和传输层地址。数据包捕获HTTP.cap使用传输层名称解析。因此,只要使用已知或注册的端口,Wireshark 就会识别与该端口号相关联的应用。比如 HTTP 使用端口80,使用端口80时会被识别为 HTTP。

下面列出了端口号,以及 Wireshark 提供的生成信息,如Stream IndexSegment Length:

  • 源端口 16 位 : Frame 4是客户端对服务器的请求。通过指示一个端口号,告诉服务器,当你传送数据时,使用这个端口。在这种情况下,值为Source Port: 57678 (57678),其中不与任何应用相关联;它是在此连接中使用的短暂(或临时分配的)端口。因此,您不会看到端口号前列出的协议。
  • 目的端口 16 位 : Frame 4是客户端对服务器的请求,很可能是 web 服务器,因为值是Destination Port: http (80)
  • 流索引:该值显示在括号中,Wireshark 计算该值以跟踪流的,其中每个流是两个端点之间的通信。在Frame 4中,我们可以看到[Stream index: 0],这意味着这是该捕获中的第一个流。该值在进行分析时是一个有用的工具,因为您可以轻松地右键单击一个帧并选择跟随,然后选择一个流(如 TCP 或 HTTP ),如下面的屏幕截图所示:

Figure 9.11 – Following the stream

图 9.11–顺流而下

  • 对话完成度:这个生成的值表示对话是否完成。在这种情况下,我们看到Complete, WITH_DATA (31)]。这意味着捕获的对话是完整的,因为它具有完整对话的所有元素,例如握手、数据传输和 FIN 数据包交换。
  • TCP 段长度:在传输层,协议数据单元 ( PDU )是一个段。段长度是 TCP 有效载荷的值,它是 TCP 报头和任何选项之后的数据。Wireshark 计算该值,如括号中所示。在Frame 4中,我们可以看到[TCP Segment Len: 134],它与TCP payload (134 bytes)的值相同,如图 9.8 最后一行所示。

接下来,我们将看看记录数据传输期间发送和接收的数据的字段。

排序字节

因为 TCP 是面向连接的协议,所以操作系统跟踪收到的每个字节(或八位字节)数据。每个字节被排序,一旦被接收,就被确认。三次握手开始排序过程。

在看序列号之前,让我们讨论一下它们是如何计算的。

同步序列号

在交换数据之前,客户端和服务器必须同步序列号。这是通过使用 TCP 报头中的同步 ( 同步)标志来实现的。SYN 数据包位于三次握手的前两个数据包中,负责同步连接期间使用的序列号。

例如,如下面截图中的所示,客户端向服务器发送一个 SYN 数据包,其序列 ( SEQ )编号为100:

Figure 9.12 – The three-way handshake

图 9.12-三次握手

注意

在本例中,序列号 100 是随机选择的。在实际的 TCP 连接中,操作系统将生成一个随机序列号来启动该过程。

服务器通过发送带有序列号300和 ACK101同步确认 ( SYN,ACK )进行响应。客户端发送一个序列号为301的最终 ACK 和一个序列号为101的 ACK。序列号现在已同步。

注意

你可以在HTTP.cap的前三包里看到一个的例子三次握手。

接下来,我们将评估 Wireshark 在分析数据时如何表示序列号。

了解序列号

当处理数据包捕获时,您可以选择如何表示您的序列号。Wireshark 能够生成相对序列号,主要是因为实际(或绝对)序列号非常大。相对序列号易于理解,表示与特定对话的值相关的值

要进行切换,右击 TCP 报头的任意位置,选择协议首选项,然后选择相对序列号

请记住,为了显示相对序列号,您还必须选择分析 TCP 序列号,如下图所示:

 Figure 9.13 – Protocol preferences—relative sequence numbers

图 9.13-协议首选项-相对序列号

这将把序号调整为更容易理解的值。

使用相对序列号时,绝对序列号在下方显示为Sequence Number (raw): 3344099089,如以下截图所示:

图 9.14–查看序列号

现在你已经了解了序列号是如何产生和显示的,让我们看看在数据传输过程中它们是如何表示的。

查看序列字段值

正如我们所知,处理序列的字段值有助于提供 TCP 连接期间交换的数据的快照。这些字段如下所示:

  • 序列号(32 位):握手结束后,数据流开始。在Frame 4中,我们可以看到Sequence number: 18825 (relative sequence number)
  • 序列号(原始):该值代表未改变的序列号。在Frame 4中,我们可以看到值为3344099089
  • 下一个序列号:括号内为计算值。Wireshark 将当前序列号添加到 TCP 数据段长度中,以获得下一个序列号。

除了对数据进行排序,TCP 还会确认所有数据的接收。

确认数据

在数据传输过程中,操作系统通过使用序列号来跟踪所有字节和重新排序。每次操作系统接收数据时,接收主机都会确认数据已收到,并准备好接收更多数据,从下一个预期字节开始。

该过程与服务器发送数据同时发生。因此,它被称为期望确认。如下图所示,客户端向服务器发送 ACK,声明他们已经收到 524 字节的数据,并准备好接收更多数据,从 525 字节开始:

Figure 9.15 – Acknowledging the data

图 9.15–确认数据

在 TCP 报头中,有几个用于确认收到数据的字段。这些字段如下所示:

  • 确认号 32 位:在Frame 4中,我们可以看到值为Acknowledgment Number: 1 (relative ack number)。该值为1,因为它是来自客户端的第一个数据包。
  • 确认号(原始):该值代表未更改的确认号。在Frame 4中,我们可以看到值为3344080265

在图 9.14 中确认号后的一行,您会看到1000。这一行代表数据偏移字段,它以 32 位倍数表示 TCP 报头的长度。先说这个值是怎么算出来的。

计算偏移

固定 TCP 报头字段的大小是 20 字节。然而,在当今的网络中,TCP 报头通常具有额外的选项。因此,该值并不总是一致的。为了使接收设备知道数据何时开始,偏移字段将指示报头的长度,因为紧接在 TCP 报头之后,数据部分开始。

Frame 4的 TCP 报头按以下方式计算:

  1. 偏移值为1000,二进制等于八(8)。
  2. 偏移量以四(4)个字节为增量。
  3. 计算出的 TCP 报头长度: 8 * 4 = 32 字节。

Frame 4的偏移值(或 TCP 报头)是 32 字节。

评估 TCP 报头时,请记住以下几点:

  • 最小 TCP 报头长度为 20 字节。
  • 最大 TCP 报头长度为 60 字节。

如果您想快速检查报头长度,将光标放在Frame 4的 TCP 报头上,该值将反映在状态栏中,如下所示:

Figure 9.16 – Viewing the TCP header length

图 9.16–查看 TCP 报头长度

在跟踪数据交换的同时,TCP 报头中的另一个重要元素是标志的使用,这将在下一节中讨论。

跟随旗帜

TCP 标志用于指示对话期间的特定状态。有些是常见的,比如 ACK、FIN、SYN 但有些在实际应用中很少见到。TCP 有八个控制标志,如下所示:

Table 9. 1 – Defining the TCP control flags

表 9。1–定义 TCP 控制标志

TCP 标志在被设置时,将讲述 TCP 连接的故事。Wireshark 将在数据包列表窗格的Info列中反映这一状态:

 Figure 9.17 – Viewing the TCP flags

图 9.17–查看 TCP 标志

注意

TCP 被广泛使用,标志对于控制每个会话非常重要。但是,TCP 标志可以被恶意使用来发起攻击或逃避检测。因此,安全分析器应确保对设备进行调整,以监控 TCP 标志的非标准和不当使用。

TCP 标志提供了对话过程中正在发生的事情的指示。保持数据移动是很重要的。正如我们将在下一节中看到的,WS 用于通知发送方主机在任何给定时间可以接收多少数据。

解剖窗口大小

TCP 是一种全双工通信协议,其中发送方和接收方不断地相互通信。在激活的连接期间,会发生以下情况:

  • 服务器向客户端发送数据。
  • 客户端用一个 ACK 和一个 WS 值(以字节为单位)来响应,WS 值表示客户端可以接受多少数据。

通过每个 ACK 传输 WS 有助于控制数据流。让我们来谈谈这是如何工作的。

控制流量

流量控制是 TCP 使用的一种协议。在此过程中,客户端会在每个 ACK 中发送一个 WS,这样发送方就不会传输太多数据而使主机不堪重负:

  1. 如果客户端无法处理所有数据,客户端将发送一个具有较低 WS 值的 ACK。
  2. 一旦客户机通告了一个较小的 WS,服务器就抑制数据传输。
  3. 当客户端恢复并能够接受更多数据时,客户端会发送一个 ACK,其中包含反映新值的窗口更新。
  4. 然后,服务器可以继续发送数据,直到所有数据都发送到客户端。

请记住,WS 值可以在对话过程中随时更改。

注意

流量控制的一个相关术语叫做滑动窗口,因为随着端点调整它可以接受的流量,该值将来回滑动。

Frame 4的情况下,我们可以看到Window: 46:

 Figure 9.18 – Viewing the window size

图 9.18–查看窗口大小

尽管客户端已经指示 WS 为 46 字节,但是这个值很可能更大。先说为什么这个值不一样。

计算窗口大小

沿着Window: 46线,如图图 9.18 所示,我们可以看到[Calculated window size: 5888]。这个值比实际的 WS 大,因为这个流使用了一个缩放因子,它改变了窗口大小的值。这是由于 WS 随时间的不同而不同。

最初的 TCP 征求意见稿 ( RFC ) 793写于 1981 年。当时,缓冲区空间较小,16 位窗口大小值字段将容纳 20 世纪 80 年代可用的实际窗口大小。

如果所有 16 位都被使用,这将意味着窗口大小等于 216,或 65,536 字节。随着时间的推移,硬件得到了改进,缓冲区空间也超出了这一限制。因此,选项用于扩展 TCP 报头中的 WS 值。在 20 世纪 90 年代早期,RFC 被编写来解决较大的缓冲区大小,并且窗口缩放选项提供了解决实际 WS 的方法。

因此,Wireshark 通过将 128 的缩放因子乘以所列的 46 字节的窗口大小字段值来计算窗口大小,这为我们提供了 5888 字节的计算窗口大小。

接下来,我们来看看比例因子是如何确定的。

缩放窗口值

[Window Size scaling factor: 128]由 Wireshark 计算。这反映了三方握手期间交换的 TCP 选项的比例因子。如三次握手的第一个包(Frame 1)所示,我们可以看到服务器发送的 TCP 选项将最后一个选项列为Window scale: 7 (multiply by 128),如下图:

Figure 9.19 – TCP options

图 9.19–TCP 选项

Wireshark 将通过将比例因子乘以窗口大小字段值来确定计算出的 WS。

如果捕获是在三次握手之后开始的,Wireshark 无法知道缩放因子是什么,将显示[Window Size scaling factor: -1 (unknown)]。你也可能看到[Window size scaling factor: -2 (no window scaling used)]。在这种情况下,Wireshark 将显示实际的窗口大小。

如果您知道比例因子,您可以修改该值。右键单击 TCP 报头中的任意位置,选择协议首选项 | 缩放因子,以便在无法从捕获中获得时使用。在那里,选择适当的值,如下面的屏幕截图所示:

Figure 9.20 – TCP protocol preferences

图 9.20–TCP 协议首选项

除了监控通信的字段值,TCP 报头中还有一些其他字段值和选项。让我们来看看。

查看附加标题值

报头的最后一部分列出了额外的值和帮助保持 TCP 连接正常的选项。

在数据传输过程中,可能会出现错误。校验和是数据包数据部分的计算值,在传输过程中会定期重新计算以确保数据完整性。校验和用于错误检测,而不是校正。如果在重新计算过程中校验和不准确,数据包将被丢弃。

Frame 4中,我们可以看到校验和的值为Checksum: 0x4729 [unverified]。进行数据包捕获时,在硬件或网络驱动程序计算校验和之前,捕获的数据包会呈现给 Wireshark。它可能被错误地计算,这将导致错误。

为了避免校验和错误,您可以通过右键单击 TCP 报头中的任意位置,选择协议首选项,以及取消选中 来禁用校验和验证,如果可能的话

TCP 标志(包括 URG 标志)指示应该具有优先级的数据包。如果设置了 URG 标志,接收主机将需要检查帧以获取相关数据。这个很少用。一个更常用的标志是 PSH,因为它通知 TCP 数据应该立即被发送到堆栈上。

添加 TCP 选项

在任何 TCP 对话之前,有一个三方握手的。在握手过程中,TCP 通常有几种选择。在 SYN 包交换期间,选项将被列出。在Frame 4中,选项包括Timestamps不操作 ( NOP ),如下图:

Figure 9.21 – TCP options for Frame 4

图 9.21–第 4 帧的 TCP 选项

在捕获过程中,Wireshark 收集统计数据并计算可用于分析的值。

计算值

在 TCP 报头的底部,有两个计算,[Timestamps][SEQ/ACK analysis],如下面的截图所示:

Figure 9.22 – Calculated values in the TCP header

图 9.22–TCP 报头中的计算值

[Timestamps]计算指示经过的时间,并用于提供关于在统计 | 捕获文件属性中找到的捕获的详细信息。

[SEQ/ACK analysis]是一个计算字段,它包括诸如确认了什么帧和往返时间 ( RTT )等信息,这些信息用于诸如在统计 | TCP 流图下找到的时序图等功能中。

列出的最后一个组件是TCP payload (134 bytes),它(如前所述)是计算出的偏移值。

如您所见,TCP 有很多优点,它提供可靠的数据传输。在下一节中,我们将了解 UDP,这是一种在数据传输需要速度而非可靠性时使用的传输协议。

了解 UDP

UDP 是用于数据传输的轻量级无连接协议。UDP 没有握手或连接过程,也没有拆卸。

要查看 Windows 机器上所有活动的 UDP 连接,请打开命令行并运行netstat -anp udp,如下面的屏幕截图所示:

Figure 9.23 – Netstat command showing UDP connection status

图 9.23–显示 UDP 连接状态的 Netstat 命令

UDP 没有任何订购或可靠性服务;它只是传递数据。因此,不需要外部(或远程)IP 地址和端口。因此,如图 9.23 所示,您将只看到一个用于 UDP 的本地 IP 地址和端口。

由于 UDP 的流线型本质,它是对时间敏感的应用的合适协议,例如:

  • 动态主机配置协议 ( DHCP )
  • 域名系统 ( DNS )
  • 琐碎的文件传输协议 ( TFTP )
  • 网络电话 ( 网络电话)

UDP 是一种轻量级协议,长度只有 8 个字节。在下一节中,让我们看看单个 UDP 帧的元素。

研究单个 UDP 帧

与 TCP 不同,UDP 是一种轻量级的协议,具有非常简单的报头。UDP 只有四个字段,没有选项。

要检查 UDP 并深入研究 UDP 报头,请到 https://www.cloudshark.org/captures/0320b9b57d35下载DNS Question & Answer.pcapng文件。前往Frame 1,这样你就能跟上。选择后,您将看到以下详细信息:

Figure 9.24 – Frame 1 showing the packet details pane

图 9.24–显示数据包详细信息窗格的第 1 帧

Wireshark 从顶部开始列出这一帧的内容。

Frame 1中,我们可以看到以下内容:

  • Frame 1:Frame标签不是一个协议。它是由 Wireshark 生成的值或元数据的列表,描述关于单个帧的信息。
  • Ethernet II:帧头跟随元数据,提供关于源和目的 MAC 地址的信息。
  • Internet Protocol Version 4:提供所用 IP 协议的详细信息,包括源和目的 IP 地址。
  • User Datagram Protocol:提供 UDP 头的详细信息。

既然我们已经查看了单个 UDP 帧中的信息,让我们检查 UDP 报头和每个字段值。

发现四字段 UDP 报头

UDP 有一个包含四个字段的头,其中包含跟踪会话的值,如下图所示:

 Figure 9.25 – The UDP header

图 9.25–UDP 报头

现在,让我们来看看四个 UDP 报头。

分析 UDP 报头字段

从 UDP 报头的顶部开始,我们可以看到User Datagram Protocol,后面是报头所代表内容的摘要。标题和摘要下面是 UDP 标题字段,如下所示:

Figure 9.26 – The UDP header as shown in Wireshark

图 9.26–Wireshark 中显示的 UDP 报头

与 TCP 不同,UDP 有一个简单的报头,没有列出额外的通信细节,如TimestampsSEQ/ACK analysis

在标题之后,您将看到以下内容:

  • 源端口 16 位:源端口字段是发送方的端口。在Frame 1中,发送方是一个 DNS 客户端,使用Source Port: 54585,不与关联任何应用;它是在此连接中使用的短暂或临时分配的端口。

  • 目的端口 16 位:目的端口字段是接收方的端口。在这种情况下,Frame 1中的端口是Destination Port: domain (53,它是 DNS 服务器上接受解析域名请求的端口。

  • Length 16-bit :在一个 UDP 包中,Length 代表 UDP 头和后面任何数据的字节数。在Frame 1中,我们可以看到Length: 36,它等于 UDP 头(8 字节)和 DNS 头(28 字节)。

  • Checksum 16-bit: The UDP checksum is a calculated value of the data portion of the packet that is periodically recalculated during transmission to ensure data integrity.

    注意

    使用 IPv4 时,使用 UDP 校验和是可选的;但是,使用 IPv6 时需要。使用 IPv6 时需要校验和的原因是 IPv6 没有校验和,UDP 报头中的值用于确保数据完整性。

*UDP 总是 8 字节长,因为它没有任何报头选项。此外,UDP 是无连接的。因此,如果在数据传输过程中出现问题,则由更高级别的协议来传达任何问题或请求任何丢失的数据。

总结

在本章中,我们重点介绍了 OSI 模型的传输层(或第 4 层),特别是这一层中的两个主要协议:TCP 和 UDP。我们从传输层的概述开始。然后我们评估了 TCP,一种面向连接的协议。我们看到,为了实现可靠性,TCP 对每个二进制八位数进行排序和确认。我们现在了解了,除了传输数据之外,TCP 如何监控传输,并且不仅提供流量控制,还提供拥塞控制。我们还仔细查看了标题以及八个控制标志,然后回顾了窗口缩放是如何工作的。

除了 TCP 之外,我们还研究了另一种主要的传输层协议 UDP,它可以确保对时间敏感的数据和协议(如 DHCP 和 DNS)的快速传输。我们回顾了四字段 UDP 报头的细节,它提供了足够的信息来传递数据,而没有额外的开销。

现在您已经对 TCP 有了坚实的了解,下一步是更详细地了解 TCP 如何建立和拆除连接。在下一章中,我们将逐步完成启动 TCP 对话的过程。我们将研究 TCP 三次握手和由此产生的套接字创建。此外,我们还将学习数据包交换,并进一步了解 TCP 选项。最后,我们将概述 TCP 如何通过交换 FIN 包来结束数据传输。

问题

现在,是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. ____ 被定义为 IP 地址和端口。
    1. 窗户
    2. (电源)插座
    3. 校验和
    4. 顺序
  2. ACK 725 表示我已经收到了 _____ 字节的数据,并准备好接收更多数据,从 _____ 开始。
    1. 七百和八百
    2. 724 和 725
    3. 725 和 726
    4. 725 和 725
  3. ____ 标志通知 TCP 应该立即发送数据。
    1. RST
    2. SYN
    3. ACK
    4. PSH
  4. 如果偏移值是 0101,则 TCP 报头长度= ___ 字节。
    1. Thirty-two
    2. eight
    3. Twenty
    4. Sixty-four
  5. 在正常连接中,___ 将使用 UDP。
    1. 超文本传送协议
    2. 简单邮件传输协议
    3. 动态主机配置协议
    4. 文件传送协议
  6. 与 TCP 不同,UDP 报头没有任何 _____。
    1. 港口
    2. 套接字
    3. 总和检查(checksum 的复数形式)
    4. 选择
  7. 如果客户端公布的缩放因子为 9,操作系统将需要将 WS 乘以 ____。
    1. Two
    2. nine
    3. One hundred and twenty-eight
    4. Five hundred and twelve

延伸阅读

要了解 Wireshark 中 TCP 分析的更多信息,请访问https://www . Wireshark . org/docs/wsug _ html _ chunked/chadvtcpanalysis . html。*

十、管理 TCP 连接

最重要的,但最不为人所知的,传输控制协议 ( TCP )概念之一是三次握手。TCP 握手启动连接并设置参数。在此过程完成之前,不会交换任何数据。与握手类似的是当两个端点交换一系列finish(FIN)包时的拆卸,这表示会话完成。

在这一章中,我们将更详细地看看握手和由此产生的套接字创建。为了让您能够专注于单个 TCP 流,我们将进行大规模捕获,并对数据包进行子集化、标记和过滤,以便我们能够检查 TCP 握手。随着本章的深入,我们将对握手过程中交换的 TCP 选项有更深入的了解。我们将了解它们的含义,以及为什么它们需要在今天的网络上进行对话。此外,我们将看到如何轻松地修改协议首选项,例如通过简单的右键单击来分析 TCP 序列号。最后,我们将检查 TCP 拆卸过程,并了解 FIN 标志如何指示数据传输的结束。

本章将通过涵盖以下内容来解决所有这些问题:

  • 剖析三次握手
  • 发现 TCP 选项
  • 了解 TCP 协议首选项
  • 识别 TCP 拆除

剖析三次握手

在计算中,握手是设备之间的信息交换,它设置了对话的参数。每一方发送可用的内容,在交换任何数据之前,两个端点就条款达成一致。

在大多数情况下,客户端会通过发送同步 ( SYN )数据包来发起与服务器的对话;服务器同步确认 ( SYN-ACK )响应,客户端随后以确认 ( ACK 完成握手。TCP 握手如下:

Figure 10.1 – The TCP three-way handshake

图 10.1–TCP 三次握手

握手完成后,将会进行数据交换。

要进一步了解三方握手,请访问。一旦到了那里,下载bigFlows.pcap以便你可以跟随。BigFlows 是一个包含许多协议和对话的大型捕获,如下面的屏幕截图所示:

Figure 10.2 – bigFlows.pcap

图 10.2–big flows . pcap

BigFlows 有791615个数据包,如图图 10.2 中状态栏的右下方所示。虽然您可以在技术上处理整个捕获,但是在下一节中,我们将隔离一个单独的流,然后创建一个更小、更易于管理的文件。

隔离单个流

当捕获流量时,Wireshark 会跟踪所有数据流。在一个bigFlows.pcap大小的文件中,会有很多 TCP 和用户数据报协议 ( UDP )流。虽然我们可以过滤任何流,但是现在,让我们用TCP stream 312来过滤,因为这包括握手、选项、数据,然后 FIN 交换来结束会话。

要仅显示流 312,转到显示过滤器并输入tcp.stream eq 312,然后按输入。因为这是一个很大的文件,Wireshark 需要几秒钟来运行过滤器。完成后,您将看到一个完整的 TCP 流示例,如下所示:

Figure 10.3 – tcp.stream eq 312

图 10.3–TCP . stream eq 312

既然我们已经有了一个单独的流,我们将希望对捕获进行子集化,并将其保存为一个更小的文件。要子集只需中的TCP stream 312,转到文件 | 导出指定数据包

这将打开一个对话框,提供各种导出指定数据包的方法,如以下屏幕截图所示:

Figure 10.4 – Select the All packets and Displayed options

图 10.4–选择所有数据包和显示选项

在对话框的底部附近,您会看到一个标题,数据包范围,您可以在这里选择。如果您已经过滤了捕获,Wireshark 将假设您只想导出显示的数据包,并且显示的单选按钮将被激活。

选择所有数据包显示的,如截图所示,然后另存为Flow312.pcapng

关闭bigFlows.pcap并清除显示过滤器,然后打开新创建的文件。在下一节中,让我们关注握手,并检查交换的每个数据包。

标记 TCP 握手

在 Wireshark 中隔离一系列数据包的方法之一是对其进行标记,这将修改数据包,使其具有白底黑字。一旦我们标记了它们,我们就可以根据标记的数据包进行过滤,以专注于握手。

在文件中,我们将通过标记数据包来识别握手。我们知道,要开始一个会话,TCP 从握手开始,握手使用三个数据包,如下所示:

  1. 客户端向服务器发送一个 SYN 数据包。
  2. 服务器通过发送 SYN ACK 数据包进行响应。
  3. 客户端发送最后一个 ACK 包。

握手完成后,数据流开始。

Wireshark 将通过在 info 列中显示交易详细信息来识别三次握手和数据包交换(如果您激活了此列标题)。在Flow312.pcapng捕获中,数据包 1、2 和 3 代表握手。

一旦握手被识别,我们将标记三个数据包中的每一个。要标记数据包,选择每个数据包并右键单击标记/取消标记数据包子菜单选项,如以下屏幕截图所示:

Figure 10.5 – Mark/Unmark Packet

图 10.5–标记/取消标记数据包

标记数据包后,背景将变为黑色,文本将变为白色,如下所示:

Figure 10.6 – Results of marking a packet

图 10.6–标记数据包的结果

之后,我们将希望通过在显示过滤器中输入frame.marked==1并按下 Enter 来仅查看标记的数据包。进入编辑 | 清除所有显示的标记,这样我们就可以开始分析握手了。

既然我们已经挑出了三次握手,让我们来看看三个数据包中的每一个。

识别握手数据包

在这一节中,我们将看一下每个包并检查标志,以及序列和确认号。让我们从 SYN 包开始。

发送 SYN 数据包

在第一个包中,客户机将通过向服务器发送一个 SYN 包来启动连接,然后等待响应。

要查看所有字段值,请转到帧 1 ,并展开 TCP 报头,如下图所示:

Figure 10.7 – The Flow312.pcapng TCP header in Frame 1

图 10.7–第 1 帧中的 Flow312.pcapng TCP 报头

帧 1 中,您将看到源端口和目的端口以及报头中的其他字段值。这包括序列号和 ACK 号,如下所示:

  • Sequence number: 0 (relative sequence number)
  • Acknowledgment Number: 0

如果我们展开标志,我们会看到Syn标志是set,如下面的屏幕截图所示。请记住,在握手的前两个数据包中,Syn标志将用于同步序列号:

 Figure 10.8 – The TCP Syn flag set

图 10.8–TCP Syn 标志集

虽然握手的三个包都很重要,但是前两个包设置了对话的参数。选择帧 1 并在数据包细节窗格中查看 TCP 报头。然后,选择 TCP 报头,我们会在底部的状态栏中看到Transmission Control Protocol (tcp), 40 bytes,如下面的截图所示:

Figure 10.9 – TCP header 40 bytes

图 10.9–TCP 报头 40 字节

正常的 TCP 报头是 20 字节,而这个报头是 40 字节。TCP 报头更大,因为它包含添加到报头的选项。

注意

在大多数情况下,您会在三次握手的前两个数据包中看到较大的报头。当 TCP 报头包含选项时,您可能还会在后续帧中看到更大的报头。

此外,在字段值中,我们看到 Wireshark 将这个对话标识为[Stream: 0]。在客户端,操作系统会创建一个 IP 地址和端口号组合为172.16.133.132: 50405的本地套接字来接收数据。

现在我们已经看到了三次握手的第一个数据包,让我们来看看第二个数据包,SYN-ACK 数据包。

返回 SYN-ACK 数据包

一旦服务器同意加入连接,服务器将返回一个 SYN-ACK 并等待最后的 ACK 来启动连接。

帧 2 中,您将看到字段值。在这种情况下,ACK 号已经改变。帧 2 中的序列和 ACK 号如下:

  • Sequence number: 0 (relative sequence number)
  • Acknowledgment Number: 1

此外,TCP 标志现在设置为 SYN-ACK,如下面的屏幕截图所示:

Figure 10.10 – Viewing the TCP SYN-ACK flags set

图 10.10–查看 TCP SYN-ACK 标志集

在交换任何数据之前,握手必须与 ACK 包一起完成,如下所述。

用 ACK 包结束

第 3 帧是三次握手中的最后一个数据包。此时,序列号和 ACK 号如下:

  • Sequence number: 1 (relative sequence number)
  • Acknowledgment Number: 1

要查看详细信息,请转到帧 3 ,然后转到 TCP 报头,然后展开 TCP 标志,这些标志现在设置为 ACK,如下面的屏幕截图所示:

Figure 10.11 – The TCP ACK flag set

图 10.11–TCP ACK 标志集

此外,我们还可以在底部的状态栏中看到Transmission Control Protocol (tcp), 32 Bytes,如前面截图中的所示。同样,这是因为该连接具有 TCP 选项,这增加了 TCP 报头的长度。

在许多情况下,TCP 报头选项概述并进一步定义了对话的参数。在下一部分中,我们将大致了解 TCP 选项,然后重点关注Flow312.pcapng中的 TCP 对话选项。

学习 TCP 选项

虽然 TCP 已经是一个令人惊叹的协议,但它也允许将各种选项添加到 TCP 报头中以扩展功能。完整的列表最后一次更新于 2021 年 2 月,可在https://www . iana . org/assignments/TCP-parameters/TCP-parameters . txt上找到。

请记住以下关于 TCP 选项的内容:

  • 并非所有选项都被使用。
  • 有些选择是实验性的。
  • 有些用于特定原因,没有关联的意见征询 ( RFC )。
  • 有些是在没有得到适当的互联网号码分配机构 ( IANA )分配的情况下开发和使用的。

下表列出了七个最常见的选项:

Table 10.1 – TCP options

表 10.1–TCP 选项

前三个,EOL、NOP 和 MSS,来自最初的 TCP RFC 793。其他的是随着时间的推移发展起来的。任何选项都将跟随 TCP 报头,并且是 8 位(或 1 字节)的倍数。为了存储器对齐,整个报头必须是 32 位或 4 字节的倍数。因此,在某些情况下,需要填充以确保报头是 4 字节的倍数。为了存储器对齐,整个报头必须是 32 位的倍数(或四个 4 字节)。

要查看Flow312.pcap的 TCP 选项,选择帧 1 中的选项标题,其中列出了附加的对话参数,如下所示:

Figure 10.12 – Flow312 Frame 1 options

图 10.12–流程 312 框架 1 选项

为了让您对七个常见选项中的每一个都有更好的理解,让我们从 EOL 选项开始逐一了解一下。

抓住 EOL 选项

EOL 是选项列表末尾使用的单个字节。要查看示例,打开Flow312.pcap数据包捕获,将tcp.option_kind == 0放入显示过滤器,按进入。Wireshark 将显示帧 2 。展开 TCP 报头选项,这将在列表末尾显示EOL:

Figure 10.13 – Flows312 Frame 2 options list

图 10.13–流程 312 框架 2 选项列表

另一个 TCP 选项是 NOP,它根本不是一个选项,而是一种占用空间的方式,我们接下来会看到。

使用 NOP

NOP 本质上是一个占位符,用来分隔不同的选项。NOP 的使用方式和取决于操作系统。例如,如前面的截图所示,我们可以看到在Window ScaleTimestamps选项之间放置了两个 nop。

除了使用 NOP 来分隔各种选项之外,NOP 还用于确保 options 报头是 32 位的倍数(或四个 4 字节),以便进行内存对齐。

例如,如果有一个 3 字节的选项,如窗口缩放,将添加一个单个 1 字节的 NOP,使选项的长度总计为 4 字节。

接下来,我们将查看一个选项,它有助于概述可接受的接收段大小,这在许多方面都很重要。

定义 MSS

MSS 是一个定义最大(接收)段大小的选项。这个值很重要,原因有几个。

在端点之间的会话期间,TCP 监控连接以确保发送最佳数据,从而不浪费带宽。查看典型帧时,我们可以看到 TCP MSS 和互联网协议 ( IP ) 最大传输单元 ( MTU )之间的差异,如下图所示:

Figure 10.14 – Comparing the MSS with the MTU

图 10.14–比较 MSS 和 MTU

在数据处理过程中,TCP 跟踪以下值:

  • 窗口大小 ( WS ),用于流量控制,以免淹没接收主机。
  • 网络,使用拥塞窗口 ( CWND )进行拥塞取证。当需要的时候,服务器会对数据传输进行节流。
  • MTU 因此主机只发送网络能够处理的数据量,以避免需要对数据报进行分段。

在网络上,发送主机监控这些值,因为它只能发送三个值中最小的

*例如,主机需要发送 1,800 字节的数据。网络限制如下:

  • CWND : 900 bytes
  • MTU : 1,500 bytes
  • WS:1800 字节

根据列出的值,TCP 必须发送最小值,即 CWND : 900 字节。

MSS 并不总是包含在选项标题中。如果不使用此选项,服务器可以发送任意大小的数据段,同时保持符合网络限制。

正如我们所见,MSS 提供了确保最佳数据流的基本信息。现在让我们回顾另一个常见的选项,WS。

缩放 WS

TCP 是一种全双工通信协议,其中发送方和接收方不断地相互通信。流量控制是一种端到端控制方法,其中主机传输一个带有每个 ACK 的 WS,指示它可以接受多少字节,因此发送方不会传输太多数据而使主机不堪重负。

窗口缩放是一个选项,它允许根据从三次握手期间交换的 TCP 选项中获得的缩放因子来扩展 ws。WS 值用于增加允许的最大 WS。尽管这是可选的,但它为服务器提供了更准确的 WS 值的信息。

让我们概括一下为什么这是一个重要的选择。在 TCP 报头中,window字段值是 16 位,这允许 2^16(或 65,535)字节的最大大小。TCP 的原始 RFC 是在 20 世纪 80 年代早期编写的,当时缓冲区很小,所以这个值是有意义的。然而,随着时间的推移,显然需要更大的值,窗口缩放选项提供了一种真正表示该值的方法。

使用窗口缩放选项时,总值可达 2^30.当数据传输时,尤其是在高带宽的广域网链路上,这个值作为一个度量是有益的。较大的 WS 将提高性能。中间设备可以被调整以接受更大的 WS;例如,当配置支持窗口缩放的 Cisco 路由器时,您可以将该值调整到 1,073,741,823 字节。

为了说明这一点,下图显示了一个连接,其中客户端公布了一个 35,000 字节的 ws。服务器开始按照 WS:

Figure 10.15 – Server sending data in line with a smaller WS

图 10.15–服务器按照较小的 WS 发送数据

在连接过程中,如果 WS 开始掉线,服务器将需要控制数据,以免淹没客户机。但是,如果客户端使用缩放,现在公布 70,000 字节的 WS,服务器可以发送两倍的数据包,如下图所示:

Figure 10.16 – A larger WS allows the server to send more data

图 10.16-较大的 WS 允许服务器发送更多的数据

增加 WS 将利用所有可用的带宽,并提供更有效的数据传输。

网络可能不稳定,数据传输也不总是有序的。这个下一个选项概述了客户端如何有选择地确认收到的数据,因此服务器只需重新传输丢失的字节。

允许麻袋

随着时间的推移,TCP/IP 协议套件也有所改进。其中一个改进就是 SACK。在 SACK 的情况下,如果有丢失的数据包,客户端将只通知服务器T2,目的是保持数据流动。让我们讨论一下这个选项是如何改善数据流的。

TCP 是面向连接的协议。在传输过程中,所有数据都经过排序和确认,以确保该会话所需的所有数据都能完整传输。这是通过以下方式实现的。

服务器向客户端发送数据后,客户端将确认数据已收到,并准备好接受更多数据。这通过发送指示下一个预期字节的 ACK 来传达给服务器。为了确保完整的数据传输,服务器会监控确认。但是,有时传输会有间隙。

例如,服务器收到 ACK 1-100,然后收到 ACK 151-200。在这种情况下,存在 ACK 101-150 的感知间隙,并且服务器认为客户端丢失了字节 101-150。

服务器不知道为什么在传输中会有间隙,并且会重新发送它认为丢失的所有数据。这种差距可能是由以下原因之一造成的:

  • 客户端没有收到数据。
  • 客户端收到了数据,但是服务器没有收到确认。

这可能导致不必要的数据重传。

通过使用 SACK,服务器只需重新发送任何丢失的数据。使用 SACK 时,在三次握手的前两个数据包中发送两个选项,如下所示:

  • SACK-permitted 选项表示可以在建立连接后使用 SACK。
  • SACK 选项允许有选择地确认数据。

TCP SACK 选项使用两个 16 位字段,因此客户端可以指示它已经接收到的字节。

例如,打开的bigFlows.pcap捕获,并使用tcp.stream eq 198滤镜。在tcp.stream 198中,我们看到了一些问题的迹象,例如一个重复确认 ( Dup ACK )以及几个Out-Of-Order数据包,如下面的截图所示:

Figure 10.17 – Stream 198

图 10.17–流 198

画面 4006 中,客户端使用了TCP option – SACK 10852-11096,如下图所示:

Figure 10.18 – TCP SACK option evident in bigFlows.pcap

图 10.18–big flows . pcap 中明显的 TCP SACK 选项

在 SACK 选项中,我们看到以下值,它们表示传输中的间隙:

  • left edge = 10852 (relative)
  • right edge = 11096 (relative)

通过使用 SACK,服务器只需要发送从序列号1085211096的数据,可以防止不必要的重传,保持数据流动。

另一个 TCP 选项是时间戳,它监视传输并跟踪数据交换期间的往返时间。

使用时间戳

TCP 依赖时间作为流量控制和可靠数据传输功能的一部分。数据通过局域网和广域网传输。每个网络都是不同的,TCP 需要了解每个网络上的延迟程度,以便设置适当的 ACK 超时值。

使用Timestamps选项,TCP 可以监控往返时间。这样,如果发送主机没有及时收到 ACK,它就可以重新传输数据包。

帧 2Flow312.pcap截图中,打开选项查看时间戳选项,如以下截图所示:

Figure 10.19 – Viewing the TCP Timestamps option

图 10.19–查看 TCP 时间戳选项

在该选项中,有以下值:

  • 种类 : (1 字节)该字段表示选项的类型,在本例中,值为(8),即时间戳选项。
  • Length : (1 字节)表示该选项头的长度,以字节为单位;在这种情况下,它是10字节。
  • 时间戳值 ( TSval ): (4 字节)这是发送方的时间戳时钟。值为1707407197
  • 时间戳回应回复 ( TSecr ): (4 字节)这是远程主机发送的回应回复。该值在帧 2 中,为131517608

TCP 使用时间戳值来监控路径中各段的往返时间。必须在握手期间设置时间戳选项。之后,您将在对话期间看到报告选项。

正如我们所看到的,TCP 可以在握手过程中设置各种选项,这些选项进一步定义了对话的参数。

使用 Wireshark 时,协议响应或配置的方式可能会有偏好。我们可以修改许多协议首选项,我们将在接下来看到。

了解 TCP 协议偏好

在 Wireshark 中,根据我们的偏好,我们可以修改几个协议来显示数据。要修改协议的显示方式,选择一个标题,右键查看协议首选项,如下图所示:

Figure 10.20 – Viewing TCP protocol preferences

图 10.20–查看 TCP 协议首选项

在首选项列表的顶部,有另一个选项,打开传输控制协议首选项...,这将打开 Wireshark 首选项,如以下截图所示:

Figure 10.21 – TCP preferences

图 10.21–TCP 首选项

一旦首选项对话框打开,您可以选择和修改一些 TCP 选项。

修改 TCP 首选项

当在 TCP 的首选项对话框中时,您将看到一个概述您的选择的列表,如下所示:

  • 在协议树中显示 TCP 摘要:选中时,该选项将显示该数据包中发生的事件的摘要。
  • 如果可能,验证 TCP 校验和 : TCP 有一个用于错误检测的校验和。在大多数情况下,不选择此选项,因为校验和将卸载到 NIC,值将无效并指示错误。
  • 允许子分配器重组 TCP 流:选中时,允许上层协议重组 TCP 流。
  • 重新组装无序段:选中时,会将段按正确的顺序排列,以有序的形式显示。默认情况下,此选项是禁用的,因为使用它会消耗过多的内存。
  • 分析 TCP 序列号:此选项有助于分析,因为 Wireshark 会监控序列号,帮助识别故障,如 TCP 重新传输、重复 ack 和零窗口。
  • 相对序列号(需要“分析 TCP 序列号”):使用时,该功能有助于使序列号更容易读取和比较。对于每个流中的第一个数据包,相对序列号从零开始,然后从该点开始递增。
  • 当从捕获中不可用时使用的缩放因子:窗口缩放用于增加允许的最大 WS。该选项在第 9 章 、解码 TCP 和 UDP 中有详细介绍。
  • 跟踪飞行中的字节数:要查看飞行中的字节,在Flow312.pcapng中,使用tcp.analysis.bytes_in_flight显示过滤器,这将产生两帧。选择帧 5 ,展开 SEQ/ACK 分析,查看传输中的字节,如下所示:

Figure 10.22 – Calculating TCP bytes in flight

图 10.22–正在计算 TCP 字节

  • 计算会话时间戳:该选项将监控时间值,有助于发现 TCP 会话期间的延迟。

  • 首先尝试启发式子解析器:此选项有助于 Wireshark 通过使用端口号来正确解析数据包,从而尝试识别所使用的应用类型。这是根据展示的行为完成的,Wireshark 认为是合适的协议。

  • 忽略 TCP 时间戳摘要 : Wireshark 从操作系统内核获取时间戳。如果您觉得时间戳可能不准确,请使用此选项。

  • 快速重传取代无序解释:在繁忙的网络中,数据包会丢失并出现延迟。使用此选项,您可以修改 Wireshark 在分析过程中优先考虑的方式,并在任何乱序数据包之前对快速重传进行解释。

  • 不要为错误数据包调用子拦截器 : Wireshark 会尽最大努力根据 RFC 正确解析每个协议。在某些情况下,解剖者可能会错误地识别错误。因此,最好选中此选项,这样 Wireshark 就不会继续错误地解析数据包并抛出更多错误。

  • 带有幻数的 TCP 实验选项:在某些情况下,捕获可能包括一个会话,其中 TCP 选项是实验性的,可能用于测试。因为选项是实验性的,而不是标准的,Wireshark 需要使用一个幻数来标识选项,所以可以对其进行适当的剖析。

  • Display process information via IPFIX: Internet Protocol Flow Information Export (IPFIX) is a format used to analyze network traffic. When selected, Wireshark will display the process information that can be used to analyze and troubleshoot IPFIX flows.

    注意

    对于任何更改默认值的选项,请小心使用!您输入的内容可能会被粘住,并且可能不允许您在没有重新安装的情况下撤销该选项。

在分析过程中,Wireshark 会尝试调查协议行为的所有方面。如您所见,可以个性化您的偏好并定制 TCP 的解释方式。

这最后一节提供了 TCP 拆除的概述,它正确地关闭了两个端点之间的连接。

拆除连接

当一个 TCP 连接完成时,TCP 通过交换一系列 FIN 包,关闭端口,并拒绝任何更多的通信请求来断开连接。让我们看一下整个过程。

两台主机通信时,TCP 会话会经历几个阶段:

  • TCP 从(三次)握手开始建立会话。在许多情况下,还有额外的标题选项来进一步定义参数。
  • 在会话期间,TCP 监控通信并确认收到的所有字节,以确保数据的完整传递。
  • 会话结束后,TCP 通过在两个端点之间交换 FIN 数据包来结束会话,这表示会话已完成。

现在让我们看看 Wireshark 是如何表示会话拆除的。

Flows312.pcapng捕获中,数据包6, 7, 8,9代表会话拆除,如下所示:

Figure 10.23 – The four-packet FIN exchange

图 10.23–四包 FIN 交换

为了关闭会话,TCP 使用 FIN 标志,如下面的屏幕截图所示,这表示没有数据要发送:

Figure 10.24 – The TCP FIN flag set

图 10.24–TCP FIN 标志集

如 RFC 793 中所述,为了完全关闭连接,TCP 从已建立状态前进到FIN-WAIT-1FIN-WAIT-2CLOSE-WAITCLOSINGTIME-WAIT,然后是CLOSED

注意

有些应用(比如 Outlook 和 Exchange)会关闭一个 TCP 连接,用Reset()和 FIN 来尝试,防止端口耗尽。

**TCP 会等到双方说了最后的再见并发送了 FIN 包,然后操作系统会关闭套接字。今后任何交流的尝试都将被拒绝。

总结

建立面向连接的会话的一个重要概念是在交换任何数据之前概述会话的参数。在本章中,我们学习了 TCP 如何通过三次握手开始对话,然后进一步了解了握手的每一步。我们看到了一旦握手完成,操作系统如何创建一个套接字以便进行数据交换。

此外,我们还回顾了在三次握手过程中交换的 TCP 选项,如 SACK、MSS 和时间戳。本章还解释了 TCP 协议首选项,并概述了如何在 Wireshark 中修改 TCP 首选项。最后,我们看了 TCP 是如何通过交换 FIN 数据包来结束会话的,FIN 数据包会向每台主机发出关闭会话的信号。

IP 是 TCP/IP 套件中的另一个主要协议。在下一章中,我们将仔细研究 IPv4 和 IPv6。为了让您更好地理解这种网络层协议,我们将从 IPv4 的全面概述开始,研究报头格式以及每个字段值。然后我们将看看 IPv6 以及相应的报头格式和字段值。此外,由于 IPv4 是与 IPv6 完全不同的格式,我们将通过在双栈环境中使用各种隧道协议来解决两者如何共存的问题。

问题

现在是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 要仅过滤您在 Wireshark 中标记的数据包,请在显示过滤器中使用 _____。
    1. marked:all
    2. frame = black
    3. frame.marked==1
    4. marked: on
  2. ____ 用于增加允许的最大 WS。
    1. nototherwiseprovided(for)除非另有规定
    2. 窗口比例
    3. 时间戳
    4. 解雇
  3. 使用 _____ 时,如果有任何丢失的数据包,接收方将通知发送方。
    1. nototherwiseprovided(for)除非另有规定
    2. 窗口比例
    3. 时间戳
    4. 解雇
  4. TCP 通过交换数据包来结束会话,表示每一端都应该关闭各自的套接字。TCP 使用 _____ 标志来表示会话的结束。
    1. 结束
    2. synchronizing 同步
    3. 鳍状物
    4. 紧急的
  5. 如果 TCP 报头中的序列号为 1,下一个序列号为 937,则该数据包包含 _____ 字节的数据。
    1. Thirty-two
    2. Three hundred and eighty
    3. Nine hundred and thirty-six
    4. Thirty-three thousand three hundred and four
  6. 使用 TCP 选项时,_____ 是在选项末尾使用的单个字节。
    1. 寿命终止
    2. 解雇
    3. nototherwiseprovided(for)除非另有规定
    4. 《华盛顿明星报》(Washington Star)
  7. 使用 _____ 选项,TCP 可以监控往返时间。这样,如果发送主机没有及时收到 ACK,它就可以重新传输数据包。
    1. 寿命终止
    2. SACL
    3. nototherwiseprovided(for)除非另有规定
    4. 时间戳

延伸阅读

请参考以下链接了解更多信息:

十一、解析 IPv4 和 IPv6

任何参与网络的人都需要了解互联网协议,这是一种负责在网络上传输数据的网络层协议。在本章中,我们将首先回顾网络层,更具体地说,IP 作为主要网络协议的目的。然后,我们将进一步了解 IPv4 和 IPv6,它们负责两个关键角色:寻址和路由数据。Wireshark 为 IPv4 和 IPv6 提供了出色的支持。为了加强您的分析技能,我们将从两个版本的全面概述开始,并检查每个协议的报头格式。

您将开始理解每个版本中的字段值是如何进行比较和对比的,并能够识别每个字段的重要性。由于寻址是一个重要的概念,我们将研究特殊和私有 IPv4 寻址的使用。此外,我们将概述 IPv6 中使用的不同地址类型。为了让您了解如何自定义 Wireshark 显示 IP 的方式,我们将评估协议首选项。最后,由于 IPv4 的报头格式与 IPv6 完全不同,我们将研究在双栈环境中,两者如何通过使用各种隧道协议共存。

本章将通过涵盖以下内容来解决所有这些问题:

  • 查看网络层
  • 概述 IPv4
  • 探索 IPv6
  • 编辑协议首选项
  • 发现隧道协议

查看网络层

网络层(或第三层)有两个关键角色:寻址和路由数据。这一层使用逻辑 IP 地址提供寻址。此外,网络层确定数据包通过其它网络传输的最佳逻辑路径,以便它们能够到达目的地。它通过在路由过程中与其它设备通信来实现这一点。

如图所示,网络层有三个主要协议,IP、ARP 和 ICMP,它们是传送数据的基本协议:

Figure 11.1 – The OSI model—network layer

图 11.1-OSI 模型-网络层

除了 IP 之外,其他协议包括:

  • 地址解析协议 ( ARP ): ARP 将一个 IPv4 地址(网络层)解析为局域网上的媒体访问控制 ( MAC )(数据链路层)地址,这样帧就可以被传送到合适的主机。ARP 显示在第 3 层和第 2 层之间,因此,许多人认为 ARP 是第 3 层协议。
  • 互联网控制消息协议 ( ICMP ):报告传输过程中遇到的问题,如网络不可达或主机不可达。

接下来,我们将讨论 IP 的作用和目的,以及当数据包必须通过网络才能到达最终目的地时,它是如何帮助数据包找到路径的。

理解知识产权的目的

IP 是一种网络层协议,它有两个关键作用:寻址、使用逻辑 IP 地址和路由流量。当传输层传输数据时,网络层与其他设备通信以确定数据包的最佳逻辑路径

*网络层的主要协议之一是 IP,它提供尽力而为的无连接服务,如下所述:

  • Best-effort 表示不保证数据会被传送。这类似于使用一般递送邮寄一封信。虽然有些邮件会丢失,但大多数情况下还是会到达最终目的地。
  • 无连接表示 IP 不保留任何状态信息;那个过程留给了更高层的协议,比如传输控制协议 ( TCP )。

虽然 IP 不能保证传送,但它可以优先化流量,这样时间敏感的数据,如IP 语音 ( VoIP )和流媒体,比电子邮件或网页更优先传送。

由于互联网的不可预测性,优先考虑某些类型的流量将有助于更快地传输数据。优先级以下列方式标记:

  • IPv4 中,通过使用区分服务 ( DiffServ )字段
  • IPv6 中,通过使用的流量类的字段

为了详细检查 IP 报头,我们将使用位于http://tcpreplay . app neta . com/wiki/captures . html # big flows-pcapbigFlows.pcap数据包捕获。下载文件并在 Wireshark 中打开它。

让我们从对 IPv4 的评估开始。

概述 IPv4

1981 年,征求意见稿 ( RFC ) 791 概述了 IPv4 的规范。RFC 概述了 IPv4 有两个主要任务,寻址和分段,如1.4 节所定义。操作,在https://tools.ietf.org/html/rfc791#section-1.4找到。

如上所述,IPv4 最初的作用之一是分段,它将数据包分开。在当时,这是必要的,因为在 20 世纪 80 年代初,大多数网络带宽有限,无法传输大数据包。

随着时间的推移,人们一直在努力升级和替换陈旧的数据路径,互联网的大部分已经被高速光纤电缆所取代。因此,在今天的网络中,很少使用分段。

注意

最大传输单位 ( MTU )小于 1500 字节时,使用分片。

随着时间的推移,我们可以看到,为了将数据发送到最终目的地,IPv4 仍然在寻址方面发挥着重要作用,路由也是如此。

IPv4 于 1983 年标准化,使用 32 位地址空间。科学家们在早期就发现了对更大地址空间的需求。IPv6 拥有 128 位地址空间,并提供了对协议的增强,例如简化的网络配置和更高效的路由。向 IPv6 的迁移很慢,主要是因为在 T4 的局域网上使用私有 IP 地址延长了 IPv4 的寿命。

因此,IPv4 仍然被广泛使用。为了让您在处理 IPv4 时具备应对日常网络相关问题所需的技能,在下一节中,我们将研究 IPv4 报头和每个字段值。一旦您理解了字段值,您在查看数据包捕获时就会更有信心,这样您就能够快速深入问题。

解析 IPv4 报头

IPv4 报头有几个字段,如下图所示:

 Figure 11.2 – IPv4 header

图 11.2–IP v4 报头

有些字段很少使用,比如那些处理碎片的字段。其他的提供有助于故障排除的信息,例如解决网络冲突时的地址字段。

要检查 IPv4 报头,打开bigFlows.pcap,转到帧 1 ,如下所示:

Figure 11.3 – bigFlows Frame 1—IPv4 header

图 11.3-大流量帧 1-IP v4 报头

下一节将列出每个字段,使用多少位或字节,以及每个字段所代表的信息。我们将从版本和长度字段开始。

发现版本和长度

IPv4 报头中的前两个字段如下:

  • 版本(4 位):该字段值表示正在使用的 IP 版本。许多设备同时支持 IPv4 和 IPv6 因此,获取版本很重要,这样设备就知道如何处理流量。在帧 1 中,我们看到Version: 4,这意味着这是一个 IPv4 报头。
  • 报头长度(4 位):报头长度是 4 字节的倍数,等于基本报头和任何选项。尽管长度可以变化(因选项而异),但最小必须是 5,等于 20 字节的报头长度。在帧 1 中,数值显示为Header Length: 20 bytes (5)

在这两个字段之后,我们看到一个名为DiffServ的字段,它将在下一节中介绍。

分解服务类型

互联网是不可预测的,这可能会影响时间敏感的数据,如 VoIP 和流媒体。因此,IPv4 具有DiffServ字段来对时间敏感的流量进行优先级排序,从而使其比电子邮件或网页的优先级更高。

DiffServ字段为 8 位,分为两个功能:服务质量 ( QoS )和显式拥塞通知 ( ECN )。

在第一帧的中,我们可以看到Differentiated Services Field: 0X00 (DSCP: CSO, ECN: Not-ECT)

如上所述,DiffServ字段有两个功能。让我们看看这代表了什么。我们将从DiffServ字段的前 6 位开始,它用于表示通过网络时请求的 QoS。

确保服务质量

QoS 提供了选项来区分流量的优先级。大多数(但不是全部)设备支持 QoS。当请求优先级时,字段值将通过使用几个不同的类选择器 ( CS )值之一来指示这一点。

例如,CS6CS7用于包括以下内容的网络控制协议:

  • 增强型内部网关路由协议 ( EIGRP )
  • 先开最短路径 ( OSPF )
  • 热备路由协议 ( HSRP )
  • 互联网密钥交换 ( 艾克)
  • 边界网关协议 ( BGP )

这些网络协议的优先级更高,因为任何延迟都会影响网络性能。

其他值如下表所示:

Table 11.1 – Differentiated services field values

表 11.1–差异化服务字段值

第一列显示了区分服务码点 ( DSCP ),其中列出了 CS。如帧 1 所示,在图 11.3 中,该字段值汇总显示DSCP: CS0(或类选择器 0)。CS0 是默认或最大努力设置,因为没有为该数据包分配优先级。使用此设置的流量可以正常传送。

要查看高于尽力而为的 CS 的示例,请转到bigFlows.pcap并进入ip.dsfield.dscp > 0显示过滤器。选择第 4 帧,这里会列出 CS 值,如下图所示:

 Figure 11.4 – CS1

图 11.4–CS1

Class Selector 1 (8)用于清道夫应用,如 YouTube、游戏应用和 P2P,因为这种流量在互联网上传输时会受益于(稍微)更高的优先级。

注意

CS1 被列为清道夫应用。这个类意味着应用将在任何可用的时候获取带宽

DiffServ字段的最后 2 位用于标识 ECN,这有助于管理网络上的拥塞。让我们看看这是如何工作的。

发送 ECN

你可能还没有意识到 ECN 及其重要性;但是,这可能会影响设备在网络上传递拥塞信息的方式。让我们来看看这 2 位如何改善数据流。

在最初的 RFC 791 中,DiffServ字段的最后 2 位是Reserved for Future Use,如下图所示:

 Figure 11.5 – Service bit assignments

图 11.5–服务位分配

在 2001 年,RFC 3168 发现了最后 2 位的用途。RFC 3168 概述了 ECN,它在网络上提供拥塞通知,是对管理网络拥塞的传统方法的改进。

通常,当 TCP 遇到拥塞时,主机通过进入拥塞控制来响应丢弃的数据包,这会导致以下结果:

  • 客户端发送重复的确认,表示有丢失的数据包。
  • 服务器使用快速重传,重新发送丢失的数据包。

ECN 是对这种行为的改进,它提供了网络拥塞的通知。这最终防止了当存在重复确认和快速重传时出现的额外流量。

ECN 使用 TCP 和 IP 报头,如下所述:

  • IP 头使用DiffServ字段末尾的 2 位来表示 ECN 能力传输 ( ECT )和经历拥塞 ( CE )。
  • TCP 头使用两个标志:拥塞窗口缩小 ( CWR )和 ECN Echo ( ECE )。

使用 ECN 时,DiffServ字段的 2 位标识代码点。在下表中,您将看到这些位、组合所指示的内容,以及在 Wireshark 中显示DiffServ字段值时作为指示器可能看到的内容:

Table 11.2 – Identifiers in the DiffServ field

表 11.2-DiffServ 字段中的标识符

可以看到,代码点与1001的值基本相同。

帧 1 下的bigFlows.pcap中,如果我们展开 IPv4 报头,我们会看到Explicit Congestion Notification: Not ECN-Capable Transport (0),这意味着该连接不支持 ECN,如下所示:

Figure 11.6 – Not ECT-Capable

图 11.6–不支持 ECT

连接中涉及的设备将相互通信,并在可用时使用 ECN,这有助于通知端点网络拥塞问题。

虽然 IP 是一种无连接协议,但它提供了提高流量优先级的方法,以及通知设备网络拥塞问题的方法。

在 IPv4 报头的下一组字段值中,我们将评估处理使用分段的字段。

分割数据

在 RFC 791 中,IP 负责寻址和分段。我们将在后面的部分讨论寻址,但是现在,让我们概述一下什么是分段以及为什么它是必要的。

在网络上,监控各种值:

  • 最大段尺寸 ( MSS )就是数据有效载荷。
  • 最大传输单元 ( MTU )是 MSS 加上传输层头。

当数据在网络上路由时,它可能会遇到一个 MTU 小于数据包大小的数据段。如果允许,可以使用碎片化;这将数据报分成更小的片段,以便它们可以在具有限制性 MTU 的网络上发送。

以下三个字段与碎片相关:标识标志碎片偏移,如下所述:

  • 标识(16 位):该标识 ( ID )字段用于在数据分片时标识数据报。在这种情况下,所有片段将具有相同的 ID。
  • Flags :在一个 IP 头中,有三个标志,如下面的截图所示:

Figure 11.7 – IP flags

图 11.7–IP 标志

  • 片段偏移量(13 位):在 IP 报头中的三个标志之后,该字段提供使用分片时如何重组片段的信息。

在大多数情况下,IP 报头标志将在Don't Fragment设置。这是因为在今天的网络中,没有使用分段,因为大多数管道都有足够的带宽和可接受的 MTU。

虽然在当今的网络中,我们很少看到碎片,但是熟悉一些场景中处理碎片的字段和标志是一个好主意:

  • 故障排除期间,您可能需要查看字段,以确定数据无法通过的原因。
  • 安全评估期间,碎片字段的使用可能表示恶意活动。

网络设备监控数据报长度,并可能施加大小限制。在这种情况下,如果数据包太大,可能需要将其分段或重新路由才能传递。

总长度 IPv4 字段在评估大小限制时提供了一个度量,因为它指示报头长度和任何数据的值。该字段值为 16 位,这意味着整个长度不能超过 216,即 65,535 字节。

互联网控制消息协议 ( ICMP )充当 IP 的侦察兵。当 ICMP 遇到一个 MTU 比数据包的大小小的网络,并且设置了位时,路由器将丢弃该数据包。ICMP 然后会通过发送一个Type 3 Code 4 ICMP 消息:Destination Unreachable: Fragmentation Needed and Don't Fragment was Set来通知源。

如果数据包被丢弃在带宽受限、不允许分段的网段上,发送主机必须使用较小的 MSS 重新传输数据。

接下来的几个字段更具管理性。它们保存与跳数、遵循 IPv4 报头的协议以及用于错误检测的校验和相关的值。

查看 TTL、协议和校验和

查看 IPv4 报头时,有几个字段与数据包的路由或寻址没有直接关系,但其作用可能会影响其他类型的行为。我们的第一个例子是生存时间 ( TTL )字段,它的存在是因为互联网之父很早就意识到必须有一种方法来阻止数据包继续在网络中传输。如果配置错误和/或数据包处于路由环路中,就会发生这种情况。

注意

TTL 字段是 8 位,因此最大值是 28,即 255 跳。

在正常的网络运行期间,这种情况很可能不会发生。然而,如果存在路由环路,IP 报头中的TTL字段值是在丢弃分组之前分组可以经过的路由器或跳数。TTL 的工作方式如下:

  • 每当数据包到达路由器时,该数字就减 1。
  • 当 TTL 值达到 0 时,数据包被丢弃,ICMP Type 11 (TTL 在传输中过期)被发送到发送方。

要查看 TTL 值的示例,打开bigFlows.pcap,并转到帧 1 ,其中TTL字段被设置为Time to live: 64,这是该字段的默认值。

提供与管理流量和通知设备相关的信息的另外两个字段如下:

  • 协议(8 位):protocol字段标识跟随 IPv4 报头的高层协议。该字段标识数据报中携带的协议(通常是传输层协议)。在帧 1 中,我们看到值为Protocol: UDP (17)

  • Header checksum (16-bit): This field is used to house the checksum value. Similar to the checksum in the TCP header, this value is used for error detection. In Frame 1, we see the checksum and notification from Wireshark that the checksum validation is disabled.

    报头校验和:0x ee5e[验证禁用]

    [标题校验和状态:未验证]

在大多数情况下,最好禁用验证,因为校验和卸载到网络接口卡 ( NIC )会导致值不正确。

在处理 IPv4 时,在处理寻址时还有一些额外的考虑,例如特殊和私有 IP 地址,我们将在下一节中讨论。

了解 IPv4 寻址

在本节中,我们将检查 IPv4 报头中的最后两个字段。此外,我们将回顾 IPv4 中的不同类别,以及特殊和私有 IP 地址的概述。

IP 报头中最重要的元素之一是寻址。在最后两个字段中,我们看到了目的地址 (32 位)。每个字段包含源或目的 IPv4 地址,以易于理解的点分十进制格式表示。在帧 1 中,我们看到以下值:

Source Address: 172.16.133.57
Destination Address: 68.64.21.62

IPv4 将整个地址块分成多个类。在每个类别中,都有特殊的私有 IP 地址。让我们来看看那些概念。

比较 IPv4 类别和地址

当编写 IPv4 的 RFC 时,开发人员有一个将 IP 细分为五类或五种地址格式的概念。IPv4 地址分为 A-E 类,如下所示:

Table 11.3 – Classes of IPv4 addresses

表 11.3–IP v4 地址的类别

如上所述,A 类、B 类和 C 类主要分配给公司。D 类仅用于组播,E 类用于实验,不使用。

除了有五类寻址之外,IPv4 还有几个特殊和私有 IPv4 地址范围,如下所述。

检查特殊和私有 IP 地址

IPv4 的局限性之一是地址空间有限。为了扩大 IPv4 的使用范围,起草了一组 A、B 和 C 类专用 IP 地址,仅用于内部网络。还有一个很大的环回范围和一个广播 IP 地址。

下面的表显示了主要专用和私有 IPv4 地址的列表:

Table 11.4 – Special and private IPv4 addresses

表 11.4-特殊和私有 IPv4 地址

此外,自动私有 IP 寻址 ( APIPA )还有一个范围,当动态主机配置协议 ( DHCP )服务器没有 IP 地址时,它会给主机一个 IP 地址。

虽然这种情况很少见,但是可以使用 IPv4 选项,如下一节所述。

修改 IPv4 的选项

对于 IPv4,可能有必要使用提供源路由信息、时间戳和其他信息的选项。几个 IP 选项已被否决,不再使用。有关正式否决选项的更完整讨论,请参考 RFC 6814。

使用时,options字段必须是 32 位或 4 字节的倍数。可能需要填充,以便报头是 32 位的倍数。

既然我们已经回顾了 IPv4,那么让我们更深入地了解一下 IPv6。

探索 IPv6

早期,科学家们意识到 IPv4 的 32 位地址空间将会耗尽。虽然没有人有一个确切的日期,但是已经制定了用改进版本 IPv6 取代 IPv4 的计划。1998 年,IPv6 的 RFC 发布,可以在 https://www.ietf.org/rfc/rfc2460.txt 找到。

IPv6 有许多增强,包括以下内容。

  • 流线型表头:表头字段较少;但是,它更大,主要是由于扩展的地址空间。
  • 流标签:在 IPv6 中,有一个流标签。该字段值可用于标识需要特殊处理的流,例如实时流量。
  • 对扩展和选项的支持:虽然 IPv4 可以添加选项,但 IPv6 更容易做到。IPv6 提供了添加选项的能力,例如分段,它具有将数据分段的参数,以及逐跳,它确保路径中的所有设备都读取该选项。

IPv6 报头可以容纳更大的地址空间。但是,如下图所示,标题是简化的,因为没有太多的字段值:

 Figure 11.8 – IPv6 header

图 11.8–IPv6 报头

要跟踪并检查 IPv6 报头,打开bigFlows.pcap,并转到帧 347 。IPv6 报头如下图所示:

图 11.9-大流量帧 347-IPv6 报头

请注意,IPv6 地址要大得多,因为它们是 128 位的,而 IPv4 地址是 32 位的。与 IPv4 中使用的点分十进制表示法相反,地址使用十六进制表示法。

在下一节中,我们将回顾 IPv6 中的每个字段,每个字段包含的比特或字节数,以及每个字段所代表的信息。

导航 IPv6 报头字段

正如我们将看到的,IPv6 报头删除了不必要的字段值,只添加了传输数据所需的内容。让我们逐步了解字段值并了解它们的重要性。我们将从版本开始,一个字段用于存放流量类,一个标签用于保存特定流的值。

识别版本、流量类别和流标签

IPv6 报头中的前三个字段如下:

  • 版本(4 位):该字段表示正在使用的 IP 版本。在第 347 帧,我们看到Version 6
  • 流量等级(8 位):当在互联网上发送数据时,有些流量需要特殊处理和优先排序。与 IPv4 类似,该字段包含两个值:
    • TOS :该字段的前 6 位用于传达所请求的服务类型。TOS 使用与 IPv4 相同的 DSCP 值。帧 347 使用Differentiated Services Codepoint: Default (0)默认值。
    • ECN :该字段的最后 2 位用于指示网络上的拥塞,方式与 IPv4 相同。在帧 347 中,该值为Explicit Congestion Notification: Not ECN-Capable Transport (0)
  • 流标签(20 位):该字段可用于标识特定的信息流,以便提供排序或请求路径中的路由器进行特殊处理。在第 347 帧中,我们可以看到Flow Label: 0x00000。在 RFC 2460,附录 A:流标签字段的语义和用法中,有关于流标签的扩展讨论。

随着时间的推移,我们看到流标签的使用越来越多。让我们讨论如何使用它,并检查一个填充的流标签。

管理流程

该标签可用于区分流量的优先级,如实时数据(语音和视频),但也可用于其他用途。当使用时,一个随机分配的数字被附加到流标签上,然后所有流量将属于同一个流或流。

要查看正在使用的流标签的示例,请在您的网络上运行捕获,并收集大约 1,000 个数据包。应用(!(ipv6.flow == 0x00000)) && (ipv6)过滤器,它将只显示带有填充流标签的 IPv6 数据包。

另外,你可以去https://wiki . wireshark . org/sample captures # IPv6-and-tunneling-mechanism。选择sr-header.pcap文件并在 Wireshark 中打开它。

在这次捕获中,有 10 个数据包。使用ipv6.flow == 0xd684a过滤器,它将显示属于同一个流的六个数据包。

注意

流标签是一个 20 位的字段。在 Wireshark 中,您将首先看到位值,然后是十六进制值(通过在值前使用0x来标识)。例如,如果填充了该字段,您将在 Wireshark 中看到以下值:.... 1101 0110 1000 0100 1010 = Flow Label: 0xd684a

接下来的三个字段处理在 IPv4 报头中发现的类似值,但是有细微的差别,如下所示。

评估长度、下一个报头和跳数限制

在 IPv6 报头中,接下来的三个字段提供了有关有效载荷长度、IP 报头之后的协议以及数据包在离开之前可以经过多少跳的信息。这些字段如下所示:

  • 有效载荷长度(16 位):有效载荷长度表示数据包的有效载荷,包括高层报头、数据和任何扩展报头。与 IPv4 类似,整个长度不能超过 216,即 65,535 字节。在某些情况下,有效负载可能会超过 65,535 字节,这在使用扩展标头时可能会发生。如果该值大于 65,535 字节,则字段值设置为零(0)。
  • 下一个报头(8 位):该字段标识 IP 报头之后的高层协议。这类似于 IPv4 中的protocol字段,使用相同的值来标识更高层协议。然而,如果存在扩展报头,则该字段将指示 IPv6 报头之后是什么扩展报头。
  • 跳数限制(8 位):在 IPv4 中,IP 报头中的TTL字段值是一个分组在丢弃该分组之前可以经过的路由器或跳数。在 IPv6 中,这是相同的概念。然而,这一领域更多地反映了它今天所做的事情。该字段使用 8 位,可以保存不大于 255 的值。如果跳数限制达到 0,数据包将被丢弃。

帧 347 中,字段值是Hop Limit: 1,这是有意义的,因为该帧是来自试图获得 IP 地址的主机的 DHCPv6 多播。

与 IPv4 一样,IPv6 报头中的最后两个字段是地址字段,如下所述。

检查 IPv6 地址和地址类型

IPv6 有特定的寻址要求。在本节中,我们将检查最后两个字段,源地址目的地址(128 位),以及 IPv6 地址类型的概述。源地址和目的地址是 128 位字段,以容纳 IPv6 地址。Wireshark 以冒号分隔的十六进制数显示地址,这与 IPv4 中使用的点分十进制表示法相反。

在 IPv6 中,有各种不同的地址类型,而不是类别。现在让我们来看看你可能遇到的不同类型。

比较 IPv6 地址类型

IPv6 不像 IPv4 那样使用广播。但是,有几种类型的地址,如下所示:

  • 全球单播就像一个公共 IPv4 地址。该地址是全球公认的,可以在互联网上路由。
  • 本地链路用于与同一子网中的主机通信。这个地址总是以 FE80 开头。
  • 单播是网络上的单个主机。
  • 组播数据包使用一个组播地址发送到网络上的所有节点。
  • Anycast 用于向具有相同 IP 地址的多个位置发送数据。数据包被传送到最近的目的地。

帧 347 中,我们看到源地址和目的地址:

Source: fe80::9186:dbbd:2a45:50c2
Destination: ff02::1:2

如果可能,Wireshark 将使用适当的快捷方式,如目的地址所示。IPv6 快捷方式删除前导零,并折叠两个或更多包含连续零的块。

对于许多协议(但不是全部),Wireshark 提供了一种修改 Wireshark 显示数据方式的方法。以下内容让我们了解了如何调整 IPv4 和 IPv6 的首选项。

编辑协议首选项

在 Wireshark 中,您可以通过执行以下任一操作来修改大多数协议:

  • 在 IP 头上单击鼠标右键,选择协议首选项,您会看到一个首选项列表
  • 进入编辑 | 首选项 | 协议,然后选择合适的协议

让我们从 IPv4 的协议首选项开始,因为这是目前局域网上最常用的协议。

查看 IPv4 首选项

要修改 IPv4 首选项,您可以使用前面列出的方法之一,或者您可以在标题上单击鼠标右键并选择协议首选项,然后选择开放互联网协议版本 4 首选项...快捷方式,如图所示:

 Figure 11.10 – IPv4 preference shortcut

图 11.10–IP v4 首选项快捷方式

选择快捷方式后,将会列出一个首选项列表,如下图所示:

Figure 11.11 – IPv4 preferences

图 11.11–IP v4 首选项

在那里,您可以按如下方式修改选择:

  • 将 IPv4 TOS 字段解码为 DiffServ 字段 : RFC 791 使用 TOS 对流量进行分类。随着时间的推移,该字段被修改为使用DiffServ来识别流量,这允许更大范围的分类。在大多数情况下,这应该是启用的。
  • 重组分片的 IPv4 数据报:必要时,可能会对 IPv4 数据包进行分片。启用后,这将重新组装碎片 IP 数据报。
  • 在协议树中显示 IPv4 摘要:启用时,该选项将摘要报头内容。对于大型捕获,启用此功能可能会影响性能。
  • 如果可能,验证 IPv4 校验和:在大多数情况下,这是不启用的。
  • 支持从支持 IP TSO 的硬件捕获数据包 : TCP 分段卸载 ( TSO )是一种在虚拟化环境中使用的性能提升技术。使用时,数据包长度可能不准确。启用此选项将尝试纠正任何错误。
  • 启用 IPv4 地理定位 : Wireshark 使用 IP 地址通过[GeoIP]数据库识别数据包来源。选择是否要使用此选项。
  • 将保留标志解释为安全标志(RFC 3514):2003 年 4 月 1 日(愚人节),Steven M. Bellovin 写了一个 RFC,认为 IP 报头中的保留位应该被恶意参与者用来标记数据包,如果它包含恶意软件,那么 IDS 和防火墙将知道它包含恶意软件。如果使用的话,这个钻头被称为邪恶钻头
  • 首先尝试启发式子解析器:此选项有助于 Wireshark 通过使用端口号来正确解析数据包,从而尝试识别所使用的应用类型。
  • IPv4 UDP 端口:0...:如果您希望在 LAN 上使用时将协议行为更改为特定端口,请使用此选项。
  • 禁用 IPv4 :如果您想禁用 IPv4 并只关注帧头,请使用此选项(如图 11.10 所示)。请记住,如果选择了此选项,IPv4 和任何更高级别的协议(第 3-7 层)将不会被解析。

如您所见,有许多方法可以定制 IPv4 的首选项。接下来,我们来看看 IPv6 的选项。

调整 IPv6 的首选项

您可以通过进入编辑 | 首选项然后选择开放互联网协议版本 6 首选项来修改 IPv6 中的首选项...快捷方式。这将打开一个对话框,如下所示:

Figure 11.12 – IPv6 preferences

图 11.12–IPv6 首选项

在那里,您可以修改任何选项,如下所述:

  • 重组分片的 IPv6 数据报:启用后,将重组分片的 IPv6 数据报。

  • 在协议树中显示 IPv6 摘要:启用时,该选项汇总报头内容。

  • 启用 IPv6 地理定位 : Wireshark 使用 IP 地址通过[GeoIP]数据库识别数据包来源。选择是否要使用此选项。

  • 对 RPL 源路由头(RFC 6554) 执行严格检查:如果启用,这将有助于使用路由协议对低功率和有损耗网络(【RPL】)的流进行故障排除。

  • 首先尝试启发式子解析器 : Wireshark 将通过使用端口号来正确解析数据包,尝试识别使用的是什么类型的应用。

  • 在根协议树下显示 IPv6 扩展头 : IPv6 有几个扩展头,比如路由头和分片头。启用此选项将在根协议树下显示标题。

  • Use a single field for IPv6 extension header length: Enabling this will display a single field for the IPv6 extension header length (if any). If this is not enabled, the field will appear on two lines as follows:

    长度:0 (8 字节)

    [长度:8 字节]

  • 支持从支持 IPv6 TSO 的硬件捕获数据包 : TSO 是一种在虚拟化环境中使用的性能提升技术。使用时,数据包长度可能不准确。启用此选项将尝试纠正任何错误。

  • IPv6 UDP 端口:0… :如果要更改协议行为,请使用此选项。

从 IPv4 到 IPv6 的迁移一直不温不火,因为许多网络管理员继续在局域网上使用 IPv4,主要是因为使用私有 IP 地址的灵活性。以下部分概述了这两种协议如何使用各种隧道协议在同一网络中共存。

发现隧道协议

一些组织已经决定转向专用的 IPv6 网络环境。但是,许多公司运行的是双栈环境,在这种环境下,同时使用 IPv4 和 IPv6 的主机必须能够相互通信。

显然,IPv4 报头与 IPv6 报头完全不同。为了让流量从 IPv4 网络通过 IPv6 网络,反之亦然,流量必须使用隧道协议。RFC 7059 概述了通过 IPv4 网络传输 IPv6 数据包的各种方式,可在 https://tools.ietf.org/html/rfc7059找到。下图显示了在 IPv4 数据包中封装 IPv6 数据包的正确格式:

Figure 11.13 – Encapsulation of an IPv6 packet within an IPv4 packet

图 11.13–在 IPv4 数据包中封装 IPv6 数据包

支持 IPv6 数据包在 IPv4 网络上传输的一些隧道协议包括:

  • 站内自动隧道寻址协议 ( ISATAP ):通过 IPv4 网络向使用 IPv6 的主机发送数据,以及从使用 IPv6 的主机接收数据
  • 通用路由封装 ( GRE ):在 IPV4 网络内创建点对点 IPv6 连接
  • Teredo :在 Windows 操作系统中生成,当网络地址转换 ( NAT )就绪时,允许 IPv4 主机连接到 IPv6 网络。

隧道协议之一 Teredo 用 IPv4 报头包装(或封装)IPv6 数据包,以便数据包可以通过使用 NAT 的 IPv4 环境传输。要看特雷多隧道的例子,请去 https://www.cloudshark.org/captures/c0b7d1a1d1ec?filter = frame % 20 and % 20 eth % 20 and % 20ip % 20 and % 20 UDP % 20 and % 20 teredo,并在 Wireshark 中打开。转到第 29 帧,我们看到 IPv6 数据包封装在 IPv4 报头中,使用 UDP 作为传输协议,如下所示:

Figure 11.14 – IPv6 packet encapsulated in an IPv4 header

图 11.14–封装在 IPv4 报头中的 IPv6 数据包

虽然有几种隧道协议,但它们本质上都做同样的事情:用一个报头封装另一个报头,这样数据就可以在网络中传输。因此,创建隧道以及添加额外的报头会带来额外的开销。

由于我们复杂的网络环境,在排除网络故障时,您很可能会遇到隧道协议。

总结

在这一章中,我们首先讲述了知识产权的简史。我们了解了两个版本的 IP 如何完成路由和寻址的工作;但是,IPv4 和 IPv6 报头之间存在一些差异。我们检查并解释了 IPv4 和 IPv6 的每个字段值。此外,为了让您更好地理解这两种协议,我们比较了 IPv4 和 IPv6 之间的一些相似之处和不同之处。

为了帮助您巩固寻址知识,我们简要介绍了 IPv4 地址的类别,并回顾了不同类型的 IPv6 地址。然后,我们看了如何通过修改协议首选项来个性化 IPv4 和 IPv6 的设置。最后,由于需要两种 IP 版本在今天的网络上共存,我们比较了目前使用的不同类型的隧道协议。

在下一章,我们将学习 ICMP,IP 的伴生协议,它工作在 OSI 模型的网络层。我们将评估用于 IPv4 的 ICMP 和用于 IPv6 的 ICMPv6。然后我们将深入研究 ICMP 在这两个版本中是如何工作的,您将对这两种类型的消息有更好的理解:错误报告和查询。在本章的最后,您将看到 ICMP 如何成为 IP 的侦察兵,以及它的使用如何在传递数据中至关重要。

问题

现在是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. DiffServ字段中的类别选择器 6 与 _____ 一起使用。
    1. 发信号
    2. 广播视频
    3. 网络控制
    4. 实时
  2. 172.18.23.119 IP 地址是:
    1. C 类 IPv4 地址
    2. B 类私有 IPv4 地址
    3. E 类 IPv4 地址
    4. D 类私有 IPv6 地址
  3. IPv6 地址有 _____ 位。
    1. Thirty-two
    2. Forty-eight
    3. Sixty-four
    4. One hundred and twenty-eight
  4. 在 IPv4 中,我们使用生存时间值来表示它在网络中传输时可以经过的跳数。在 IPv6 中,该字段值称为 _____。
    1. 路由器通行证
    2. 班级停课
    3. 晶体管-晶体管逻辑。
    4. 跳跃总数
  5. IPv4 标头有 _____ 个标志。
    1. one
    2. Two
    3. three
    4. four
  6. 下图显示了 IPv6 报头。流量标签的价值是什么?

图 11.15–IPv6 报头

  1. 0X00

  2. fc00

  3. 0xfbb74

  4. 136

  5. 在 IPv4 或 IPv6 报头中,有效负载长度不能超过 _____ 字节。

    1. Sixty-five thousand five hundred and thirty-five
    2. One thousand one hundred and eleven
    3. Two hundred and fifty-six
    4. One hundred and twenty-eight

延伸阅读

请参考以下链接了解更多信息:

十二、探索 ICMP

大家都熟悉互联网协议 ( IP ,负责路由和寻址流量。然而,许多人并不熟悉互联网控制消息协议 ( ICMP ),这是一个强大的协议,在传递数据方面起着重要作用。在本章中,我们将学习 ICMP,它是 IP 的伴生协议,工作在 OSI 模型的网络层。我们将从概述开始,以便您对 ICMP 的主要功能有一个大致的了解。

然后,我们将评估 ICMP(与 IPv4 一起使用)和 ICMPv6 (与 IPv6 一起使用),以便您可以比较一些主要差异。此外,您将更好地理解两种类型的消息:错误报告查询。然后,我们将查看常见的类型代码值,并讨论哪些类型的 ICMP 消息不再使用。最后,我们将讨论恶意行为者如何利用 ICMP 发动攻击。然后,我们将概述一些基本的防火墙指南,说明在您的网络上允许什么类型的 ICMP 消息。

本章将通过涵盖以下内容来解决所有这些问题:

  • 了解 ICMP 的目的
  • 剖析 ICMP 和 ICMPv6
  • 发送 ICMP 消息
  • 评估类型和代码值
  • 配置防火墙规则

了解 ICMP 的目的

20 世纪 80 年代初,科学家们开发了驱动互联网流量的协议。此外,他们还发现了可能会阻止流量到达目的地的潜在问题,尤其是在使用 IP 时。这主要是因为 IP 不能保证传输,并且无法与终端设备交流网络问题。ICMP 通过发送查询消息和生成可能需要注意的问题的错误报告来克服 IP 的缺陷。

如下表所示,网络层负责寻址和路由:

Figure 12.1 – The OSI model network layer

图 12.1–OSI 模型网络层

网络层有三种主要的协议,它们对于传输数据至关重要。除了 ICMP 之外,其他协议如下:

  • IP 是一种尽力而为的无连接协议,使用逻辑 IP 地址将数据包从源路由到目的地。
  • 地址解析协议 ( ARP )将一个 IPv4 地址(网络层)解析为局域网 ( LAN )上的一个媒体访问控制 ( MAC )(数据链路层)地址,这样帧就可以被传送到合适的主机。

正如我们在 第十一章分析 IPv4 和 IPv6 中了解到的,网络层负责寻址和路由流量。因为 IP 是一个尽力而为的、不可靠的协议,所以 ICMP 对于数据传输是必不可少的,并且必须由每个 IP 模块来实现。

ICMP 有两个主要任务:

  • 传达阻止数据传送的错误。常见问题包括网络或端口不可达。
  • 发出查询,例如在 ping 网络实用工具中使用的 echo 请求/回复,或者路由器请求,它提供了一种请求和接收路由器信息的方法。

因为有两个 IP 版本,所以也有两个 ICMP 版本。这些角色特定于各自的 IP 版本:

  • IPv4 使用 ICMP。
  • IPv6 使用 ICMPv6。

由于其在协助 IP 传送数据中的作用,ICMP 的使用在针对 ICMP 两个版本的意见征询 ( RFC )中做了如下说明:

  • 如 RFC 792 中所述,“ICMP 实际上是 IP 不可分割的一部分,必须由每个 IP 模块来实现。”
  • 如 RFC 4443 中所述,“icmp V6 是 IPv6 不可分割的一部分,基础协议必须由每个 IP 版本 6 节点完全实现。”

为了传递查询或错误,ICMP 消息必须在报头中提供信息。在下一节中,我们将了解 ICMP 数据包如何跟随 IP 报头,以及两个版本中都存在的三个字段。

了解 ICMP 报头

当传递信息时,ICMP 和 ICMPv6 数据包都将跟随 IP 数据包,如下图所示:

Figure 12.2 – ICMP message following an IP header

图 12.2–IP 报头后的 ICMP 消息

所有 ICMP 消息都有一个共同的结构,以类型代码校验和开头,如下图顶部所示:

Figure 12.3 – ICMP message

图 12.3–ICMP 消息

ICMP 报头中一致的三个字段描述如下:

  • 类型(8 位):该字段表示类型,如Type: 3 (Destination unreachable)
  • 代码(8 位):code字段进一步定义了type字段。例如,Code: 1 (Host unreachable)
  • 校验和(16 位):该字段保存用于错误检测的数值。

typecodechecksum字段值之后,您将找到数据有效载荷。内容取决于 ICMP 类型和代码,可以是 ICMP 错误报告或查询消息。

整个有效负载封装在一个帧中,如下图所示:

Figure 12.4 – ICMP message in an Ethernet II frame

图 12.4–以太网 II 帧中的 ICMP 消息

这里我们看到各种报头,包括帧头、IP 头、ICMP 报文、数据和帧校验序列 ( FCS )。

注意

ICMP 没有传输层报头,因为它不交换或传输数据。它的主要作用是测试可达性并报告传输错误。

为了详细检查 ICMP 的几个示例,我们将使用位于http://tcpreplay . app neta . com/wiki/captures . html # big flows-pcapbigFlows.pcap数据包捕获。下载文件并在 Wireshark 中打开它。一旦打开,应用icmp过滤器。选择任何 ICMP 数据包,您将看到TypeCodeChecksum字段。如此处所示,我们看到了帧 202 的细节:

Figure 12.5 – Frame 202 - ICMP message

图 12.5–帧 202 - ICMP 消息

在画面细节中,我们看到以下内容:

  • Ethernet II:帧头
  • Internet Protocol Version 6 : IP 头
  • Internet Control Message Protocol:消息
  • Data:特定于 ICMP 回应回复

如图图 12.5 所示,此类 ICMP 消息的细节包括用于标识符和序列号的字段,有助于匹配相应的回应和回复。主机使用此信息来重建发送原始数据报的过程。

TypeCodeChecksum字段之后,ICMP 消息中有一个数据部分。下一节解释了您可能在数据有效负载中发现的内容。

调查数据有效负载

在 ICMP 数据报中,有效负载取决于消息的类型。在标准 ICMP 请求/回复中,数据有效载荷是无意义的,并且将具有 ASCII 字符或空值,这取决于操作系统 ( OS )。

在本节中,我们将探索您可能在 ICMP 数据包中遇到的不同有效载荷。除了数据之外,ICMP 有效负载还可以包括水印,甚至是隐藏数据的证据,例如您可能在 Loki 攻击中看到的内容。

让我们先回顾一下在 ICMP 回应请求中可能会看到什么。

查看回应请求/回复

要查看回应请求的示例,请打开bigFlows.pcap,然后转到帧 38 ,显示一条Type 8Code 0消息。展开 ICMP 标头,如以下屏幕截图所示:

Figure 12.6 – ICMP echo request details

图 12.6–ICMP 回应请求详细信息

例如,在帧 38 中所示的回应回复中,数据部分是如下字符串:

00000000138a1a34abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdab cdabcdabcd

此外,您应该在标准 ICMP 回复中看到类似的有效载荷,您可以在帧 74 中看到。

在回送请求/回复中,您将看到一个字符串,而错误消息具有不同的有效负载格式。让我们来看看。

报告错误

每当 ICMP 遇到错误时,ICMP 必须将 IP 报头加上原始数据报的至少前 8 个字节(或 64 位)返回给发送方。

注意

ICMP 错误消息的总长度不能超过 576 字节。

要查看示例,请打开bigFlows.pcap并使用icmp.type == 3过滤器,这将显示所有带有Type 3: Destination unreachable error消息的 ICMP 数据包。

选择帧 4794 并展开 ICMP 标题,您将看到 ICMP Type: 3 (Destination unreachable) Code: 3 (Port unreachable) fields,如第一部分所示:

Figure 12.7 – ICMP echo request details

图 12.7–ICMP 回应请求详细信息

因为这是一个错误,ICMP 已经返回了 IP 头和原始数据报。正如您所看到的,ICMP 数据包有几个部分,如下所示:

  • 第一部分( 1 )是指示错误的 ICMP 报头。
  • 第二段( 2 )是原始的 IP 头。
  • 第三个段( 3 )是原始的用户数据报协议 ( UDP )头,后面跟着数据。

在大多数情况下,您可能遇到的唯一 ICMP 有效负载是一个 echo 请求/回复以及错误消息。但是,在其他情况下,您可能会看到有效负载。让我们探索一下这可能在什么时候发生。

包括其他数据

ICMP 被设计成在网络上发出查询和传达错误。然而,随着时间的推移,ICMP 已被用于其他目的,因为 ICMP 请求中的数据部分可以被修改。一种方法是在监控网络时使用非恶意水印来识别公司。另一种方式是通过使用 ICMP 隧道恶意泄漏数据。

让我们先来看看水印是如何使用的。

创建水印

一家网络监控公司(https://www.paessler.com/ping-monitoring)使用 ping 监控来评估网络上设备的健康状况。在 Wireshark 中收集数据包时,您会看到佩斯勒的数据包带有水印,如下图所示:

Figure 12.8 – Ping request with a watermark

图 12.8–带水印的 Ping 请求

数据包字节面板中,您可以在右下角看到一个突出显示的区域。数据如下:P•I•N•G• •b•y• •P•R•T•G• •N•

在这种情况下,水印不是恶意的。然而,一个 ICMP 信息包可以被修改成秘密地发送数据,我们将在下面看到。

秘密发送命令

恶意行为者找到了许多方法来隐藏他们的活动。通过网络发送命令的一种方式是使用 Loki 工具执行隐蔽通道攻击,其工作方式如下:

  1. 数据嵌入在 ICMP 回应数据包中。
  2. 数据然后通过网络秘密发送。

与上一节描述的水印不同,这种类型的活动会带来安全风险。因此,网络管理员应该调整设备来检查 ICMP 数据。如果发现有效载荷包含无法识别的数据模式,设备应发送警报,因为这可能是秘密 ICMP 隧道的迹象。

我们现在可以看到,ICMP 是一个重要的网络层协议,它与 IPv4 和 IPv6 一起使用,提供错误报告和信息性消息。接下来我们来对比一下 ICMP 和 ICMPv6 两个版本。

剖析 ICMP 和 ICMPv6

尽管 IPv4 和 IPv6 都负责路由和寻址数据,但这两种协议有许多不同之处。因此,有两个版本的 ICMP。

在下一节中,我们将探讨 ICMP 和 ICMPv6,以便您理解在报告网络问题中的一些基本角色和功能。

先说 ICMP,和 IPv4 一起用。

查看 ICMP

ICMP 与 IPv4 一起用于交流阻止数据传送的网络问题。ICMP 错误和查询消息可以在连接出现问题时提醒终端系统,还可以从中间系统获得诊断信息,例如往返时间。

尽管 ICMP 功能强大,但它无法使 IP 成为可靠的协议;它只通过提供错误消息和信息来帮助数据传递。有时数据传输延迟的原因不在 ICMP 可以发送和报告的消息范围内。在这种情况下,由传输控制协议 ( TCP )或其他更高层的协议来通知主机传输过程中的传输错误。

接下来,让我们看看 ICMPv6,它有许多相同的功能,但还提供了支持 IPv6 的额外功能。

概述 ICMPv6

虽然 IPv4 和 IPv6 在整体功能上很相似,但 IPv6 还有许多其他的优势,包括:

  • 选项和扩展
  • 改进的多播路由
  • 无状态地址自动配置 ( SLAAC

因此,ICMPv6 是为 IPv6 开发的,用于传递更新或错误消息。ICMPv6 消息包含类型代码校验和细节,随后是取决于类型和代码的内容。但是,ICMPv6 有与 IPv6 流量相关的选项。

一个例子是 ICMPv6 路由器请求消息,它警告网络上的其他路由器它们的存在。要查看 ICMPv6 消息与网络上其他设备通信的示例,请访问 CloudShark:https://www.cloudshark.org/captures/0f90f2c2de86?过滤器=帧% 20 和% 20 eth % 20 和% 20 IPv6 % 20 和%20icmpv6

在 Wireshark 中下载并打开test55.pcap。在显示过滤器中,输入icmpv6 并按下输入来运行过滤器。在下面的截图中,第 63 帧有一条 ICMPv6 路由器请求消息:

Figure 12.9 — ICMPv6 router solicitation

图 12.9-icmp V6 路由器请求

注意

IPv6 ff02::2目的地址是一个组播地址,使用一个地址发送给网络上的所有节点。

ICMP 和 ICMPv6 都可以提供对网络活动的洞察。下一节将探讨 ICMP 的两个主要功能:报告错误和查询。

发送 ICMP 消息

ICMP 消息分为两类:错误报告和查询。一些消息特定于每个版本;但是,有一些是两个版本共有的,如下所示:

Figure 12.10 – ICMP messages

图 12.10–ICMP 消息

对于这两个类别,每个 ICMP 数据包都有typecodechecksum字段。查询的有效负载不同于错误消息,因为每一个都有不同的目的,我们将在下面的章节中看到。

让我们先回顾一下 ICMP 如何报告错误。

报告网络上的错误

ICMP 错误消息报告阻止数据传送的网络问题。通常发送的错误消息被分为具有特定用途的类别,包括以下内容:

  • 目的地不可达是指路由器通知主机无法到达所请求的目的地地址。
  • 当 IPv4 生存时间 ( TTL )值或 IPv6 跳数限制达到零时,发送超时
  • 参数问题当确定标题或扩展标题中的字段值出现问题时,可以报告。

接下来,让我们看看您可能在网络中看到的一些错误示例。

查看示例

我们已经在调查数据有效载荷部分的中看到了一个Destination Unreachable消息的例子。另一个错误是Time Exceeded。要查看该错误的示例,打开bigFlows.pcap,然后转到框 7217 ,显示一条Type 11Code 0信息。展开 ICMP 标头,如以下屏幕截图所示:

Figure 12.11 – ICMP Time Exceeded error message

图 12.11–ICMP 超时错误消息

在这种情况下,一旦数据包到达路由器,TTL 将达到零,这将触发 ICMP 错误。

另一个例子是Parameter Problem错误消息。我们可以去 https://www.cloudshark.org/captures/bed61f75bde3云鲨找到这个。在 Wireshark 中下载并打开alive6-1.pcap。进入画面 3 ,展开 ICMPv6 表头,如图所示:

Figure 12.12 – ICMPv6 Parameter Problem error message

图 12.12–icmp V6 参数问题错误消息

在这种情况下,错误消息是Type: Parameter Problem (4) Code: 2 (unrecognized IPv6 option encountered)

如前所述,ICMPv6 具有许多与 ICMP 相同的功能,但也提供了额外的报告来支持 IPv6。特定于 ICMPv6 的消息之一是Packet Too Big。让我们来看看。

监控数据包大小

除了 IPv4 中报告的三个错误消息之外,ICMPv6 还包括另一个错误Packet Too Big,如下图所示,列出了 ICMPv6 的一些错误消息:

Figure 12.13 – ICMPv6 error messages

图 12.13–icmp V6 错误消息

我们在 第十一章解析 IPv4 和 IPv6 中了解到,净荷长度是 IPv6 中的一个字段值。当数据在网络中传输时,会监控数据包的大小。如果数据包太大,ICMPv6 将报告Packet Too Big错误。当设备无法发送数据时,发送该错误,因为数据包大于输出链路的最大传输单位 ( MTU )。

要查看 ICMPv6 Packet Too Big消息的示例,请访问 CloudShark:【https://www.cloudshark.org/captures/7dd0b50eb768。在 Wireshark 中下载并打开packet too big.pcap。打开后,转到框 3 并展开 ICMPv6 标题,如下所示:

Figure 12.14 – ICMPv6 Packet Too Big error

图 12.14–icmp V6 数据包太大错误

由于网络的复杂性,有时很难避免这种错误。让我们看看当有效载荷对 MTU 来说太大时我们有什么选择。

管理数据包太大错误

当发送数据时,大多数操作系统采用路径 MTU 发现 ( PMTUD ),该过程用于确定允许多大的数据包在网络网段上传输。如果数据包太大,路由器会向主机发回一条 ICMPv6 Packet Too Big消息。在这种情况下,必须做两件事之一:

  • 该分组必须被丢弃。
  • 如果允许,数据包必须分段。

将数据包分段可以解决数据包过大的问题,因为这样就可以将数据包发送到网络上。正如我们所知,IPv6 报头没有的分片字段,并试图不对数据包进行分片;然而,它可以通过使用扩展头分段。你可以在图 12.14 的最后一行看到一个Fragment Header for IPv6片段扩展头的例子。

注意

网络上的许多设备会阻止碎片数据包,这是有原因的。碎片会给设备带来额外的压力,并可能带来安全风险。

ICMP 错误消息提供了额外的信息,以便主机可以确切地看到发生了什么。TCP、IP 或用户应用接收并处理错误。但是,在某些情况下,ICMP 消息会被忽略。

除了发送错误消息,ICMP 还可以请求和提供信息,这将在下一节中讨论。

发布查询消息

ICMP 查询有两个消息(一个请求和一个回复),它们一起工作,有一个特定的目的:提供状态更新和信息。

请求和答复的两个例子如下:

  • 回应请求/回复:ICMP 数据包作为一个探针来测试远程主机的可达性。
  • 路由器请求/广告:提供一种请求和接收路由器信息的方式,该信息提供了可用路由器接口的 IP 地址。

在主要使用 IPv4 的网络上,大多数 ICMP 消息提供了足够的信息。然而,为了帮助 IPv6 传递数据,ICMPv6 需要提供特定于 IPv6 的信息,我们将在下面看到。

使用 ICMPv6 提供信息

虽然在很多方面,ICMP 和 ICMPv6 相似,但 ICMPv6 的责任更多。原因是 IPv6 不再使用 ARP 广播或互联网群组消息协议 ( IGMP )。因此,ICMPv6 提供了额外的服务来交流网络上的问题,如下图所示:

Figure 12.15 – ICMPv6 informational messages

图 12.15–icmp V6 信息性消息

ICMPv6 特有的一些消息如下:

  • 邻居请求 / 广告:这些类型用于邻居发现协议 ( NDP )为主机提供在网络上共享其存在的方法。
  • 组播监听查询 / 报告:用于向路由器和主机交换组组播信息。
  • 组成员关系:用于提醒组播组成员关系中包含的主机上的邻居路由器。

要查看与网络上其他设备通信的众多 ICMPv6 消息的示例,请在 Wireshark 中打开test55.pcap。在显示过滤器中,输入icmpv6并按下输入来运行过滤器。

通过完成以下步骤创建流程图:

  1. 进入统计,然后进入流程图
  2. 一旦打开,转到左下角并选择限制以显示过滤器

结果如以下截图所示:

Figure 12.16 – ICMPv6 flow graph

图 12.16–icmp V6 流程图

在流程图中,您可以看到多播监听器报告路由器请求 ICMPv6 数据包。

一些 ICMPv6 报告有更多的细节。对于示例,在单独的捕获文件中,我们可以看到单个报告中提供的详细信息,如下所示:

Figure 12.17 – ICMPv6 Multicast Listener Report

图 12.17–icmp V6 多播侦听器报告

ICMPv6 如何在网络上通信的另一个例子是使用邻居请求。这里的是一台失去了与网关的连接的主机。为了建立连接,帧 99 中的主机在网络上发出组播邻居请求消息,如下图所示:

Figure 12.18 – ICMPv6 neighbor discovery

图 12.18–icmp V6 邻居发现

您看到多个 ICMPv6 数据包的原因是主机无法到达网关。邻居请求消息将继续,直到连接恢复。

如您所见,ICMPv6 是一个强大的协议。除了错误和信息消息之外,ICMPv6 还提供额外的信息,并与 IPv6 一起保持连接。

如前所述,ICMP 报头包含类型和代码的值。让我们看看这两个字段,以便帮助我们理解 ICMP 试图告诉我们什么。

评估类型和代码值

ICMP 最初的目标是提供网络状态的更新和其他信息性消息。在本节中,我们将回顾 ICMP 和 ICMPv6 的类型和代码值。先说 ICMP。

查看 ICMP 类型和代码值

ICMP 用于 IPv4 已经很多年了。有许多不同类型的 ICMP 消息,其中一些应该看起来很熟悉,例如:

  • 类型 0 :回显回复
  • 类型 3 :目的地不可达
  • 类型 5 :重定向
  • 类型 8 :回送请求
  • 类型 9 :路由器广告

一些(但不是全部)ICMP 类型有一组相应的代码值,用于进一步定义 ICMP 消息。例如,类型 3类型 9 都有一组代码值。

类型 3 (目的地不可达)有许多代码值,包括以下内容:

  • 代码 0 :网(网络)不可达
  • 代码 1 :主机不可达
  • 代码 2 :协议不可达
  • 代码 3 :端口不可达
  • 代码 4 :需要分段,且不分段位被置位

类型 9 (路由器广告)只有两个代码值:

  • 代码 0 :正常路由器广告
  • 代码 16 :不路由普通流量

类型和代码是 ICMP 消息中的前两个字段,用于传递信息。例如在第 543 帧中,ICMP 已经返回了一个 ICMP Type: 3Code: 13,如下面的截图所示:

Figure 12.19 – ICMP Type 3 and Code 13

图 12.19–ICMP 类型 3 和代码 13

当 ICMP 返回Type: 3 Destination Unreachable Code: 13 (Communication Administratively Prohibited)时,这意味着防火墙正在阻止该请求。

正如我们所了解的,ICMP 报头包含类型和代码的值,以传达网络上发生的情况。但是,有些 ICMP 类型已不再使用,并且已被弃用。我们来探讨一下这个。

不鼓励使用过时的类型值

虽然 ICMP 列出了多种类型值,但许多已经不再使用,因为随着时间的推移,它们已经被发现是无效的。过时和无效的类型被认为是过时的。以下是一些不推荐使用的 ICMP 类型:

  • 类型 4 :源淬火
  • 类型 33 : IPv6 你在哪里
  • Type 34 : IPv6 I-am-here
  • 类型 35 :移动注册请求
  • 类型 37 :域名请求

不鼓励使用不推荐使用的 ICMP 类型值。要阅读更多关于处理 ICMP 类型和代码值的最佳实践,请访问位于 https://datatracker.ietf.org/doc/html/rfc7279/的 RFC 7279。

与 ICMP for IPv4 一起,ICMPv6 用于传递更新或错误消息,并有自己的一组类型和代码值。在下一节中,我们将回顾 ICMPv6 的一些值。

定义 ICMPv6 类型和代码值

因为 ICMPv6 提供了关于 IPv6 路由器和主机配置的附加数据,所以您会发现有助于提供这些信息的特定类型值。

ICMPv6 类型值的简短列表包括以下内容:

  • 类型 1 :目的地不可达
  • 类型 2 :数据包太大
  • 类型 3 :超时
  • 类型 4 :参数问题
  • 类型 130 :组播监听查询
  • 类型 131 :组播监听报告

在某些情况下,该类型将有一个相应的代码值来进一步定义消息,类似于 IPv4。如果该类型没有对应的代码值,该字段值将被设置为0,如图图 12.17 所示。

下面是 ICMPv6 的各种类型和相应代码值的示例。

类型 1 (目的地不可达)有几个代码值。其中一些如下:

  • 代码 0 :没有到目的地的路线
  • 代码 1 :与目的地的通信被行政禁止
  • 代码 2 :超出源地址范围
  • 代码 3 :地址不可达

类型 3 (超时)有两个代码,如下:

  • 代码 0 :传输中超过跳数限制
  • 代码 1 :碎片重组时间超过

正如我们所知,ICMP 可以在网络上提供大量信息,因此,了解该协议可能被恶意使用是很重要的。因此,应该调整防火墙规则以防止恶意活动,如下一节所述。

配置防火墙规则

ICMP 支持 IP 以帮助确保数据传送;但是,它也可能被恶意使用。例如,ICMP 可以被用来作为攻击的前兆进行侦察,甚至帮助规避防火墙规则。在本节中,我们将举例说明如何使用 ICMP 来获取网络信息或重定向流量。然后,我们将评估一些用于限制攻击有效性的防火墙规则。

让我们先简要讨论几个使用 ICMP 的攻击。

恶意行事

ICMP 可以确定网络的大量信息。因此,它可以用作有效的扫描工具。此外,如果安全设备没有调整到不允许某些类型的 ICMP 数据包,您可能会成为攻击的受害者,例如 T2 分布式拒绝服务或重定向攻击。

首先,让我们从概述 ping 扫描开始,这是一种用于查看哪些网络主机可能处于唤醒状态并做出响应的技术。

发送恶意 ping 扫描

恶意行为者在攻击前使用各种技术扫描网络中易受攻击的主机。一种方法是通过使用 ICMP ping 数据包来确定哪些主机处于活动状态并做出响应。ping 扫描(或 ping 扫描)使用局域网上的一系列 ICMP echo 请求数据包来查看哪些主机处于活动状态并正在响应。如下图所示,攻击者在网络上发送一系列 ping 数据包。发送后,攻击者会等待收到主机的回应,以回应/回复的形式表示主机处于活动状态:

Figure 12.20 – ICMP ping sweep

图 12.20–ICMP ping 扫描

一旦识别出响应主机,攻击者将发送更高级的探测来获取有关该主机的更多信息。

除了使用一系列回应请求/回复之外,恶意行为者还可以使用几个 ICMP 查询来在发起攻击之前侦察信息。要查看使用 ICMP 数据包探测网络的示例,请访问 CloudShark:https://www.cloudshark.org/captures/51eabf15169e

在 Wireshark 中下载并打开sniffer_cybercop_scan_1-4223.cap。在显示过滤器中,输入((ip.src == 192.168.10.33) && (icmp)) && !(ip.src == 192.168.10.138)并按下 Enter 运行过滤器,过滤器将显示 12 个数据包。通过完成以下步骤创建流程图:

  1. 进入统计,然后进入流程图
  2. 一旦打开,转到左下角并选择限制以显示过滤器

结果如以下截图所示:

Figure 12.21 – Sending ICMP packets during reconnaissance

图 12.21–在侦察期间发送 ICMP 数据包

在这个流程图中,我们看到在192.168.10.33的恶意参与者如何向192.168.10.138主机发送各种 ICMP 消息。除了 ICMP 请求包,恶意行为者也使用时间戳和地址掩码请求。这种类型的探测器发送各种 ICMP 数据包,希望得到回复,以帮助扫描软件排除不同的操作系统以及主机上的其他信息。

接下来,我们来看看另一种使用 ICMP 重定向消息来重定向流量的攻击。

重定向流量

虽然 ICMP 被设计用来帮助数据在网络上移动,但是恶意的参与者已经找到了使用某些类型的消息来发起攻击的方法。

ICMP 和 ICMPv6 都有重定向消息:

  • ICMP 使用Type 5 – Redirect
  • ICMPv6 用途Type 137 – Redirect Message

当用于发起攻击时,恶意行为者会创建专门设计的重定向消息,可用于修改路由表。该消息包含指示存在发送流量的更优路由的信息。一旦攻击被设置,恶意行为者就伪装成路由器,并在网络上发送特制的 ICMP 消息。

要查看使用 ICMP 重定向数据包的示例,请访问https://github . com/bro/bro/blob/master/testing/btest/Traces/ICMP/ICMP 6-redirect . pcap。在页面中间,选择查看原始数据,然后在 Wireshark 中打开icmp6-redirect.pcap。只有一包。展开 IP 和 ICMP 报头,如该屏幕截图所示:

图 12.22–icmp V6 重定向数据包

一旦主机收到重定向消息,流量将被重定向到恶意参与者。然后,恶意参与者可以拦截流量以获取敏感信息,将流量重定向到另一台服务器,或者为更高级的攻击做准备。

我们要讨论的最后一种攻击是 IP/ICMP 分段 DDoS 攻击。

拒绝服务

破坏业务的方法之一是发起 DDoS 攻击。当在内部网络上发起时,一种类型的攻击是容量 DDoS 。容量型 DDoS 试图用大量流量淹没设备或网络,从而消耗所有资源,合法流量被封锁。

一个例子是碎片化 IP/ICMP 容量 DDoS 攻击。要查看您在这种类型的攻击中可能会看到的示例,请访问https://www.cloudshark.org/captures/962444a14a56。在 Wireshark 中下载并打开 fragmented-icmp-traffic.pcapng。打开后,您将看到以下内容:

Figure 12.23 – fragmented-icmp-traffic.pcapng

图 12.23–分段 icmp 流量. pcapng

在这个捕获中,您将看到以下内容:

  1. 192.168.12.1的主机在帧 1 发送Fragmented IP protocol
  2. 接下来是第二帧的中的Echo (ping) request
  3. 然后,192.168.12.1处的主机在来自192.168.12.2处的主机的每个Echo (ping) reply之后重复该模式。

这意味着在192.168.12.2的主机必须不断地重组碎片包,这将需要额外的资源。

如果您展开帧 1 中的 IP 报头,您将看到以下内容:

Figure 12.24 – A fragmented packet

图 12.24–碎片数据包

如(1)所示,跟随 IP 报头的协议是Protocol: ICMP (1)。我们还通过(2)看到数据包是[Reassembled IPv4 in frame: 2]

fragmented-icmp-traffic.pcapng捕获只有 20 个包;但是,如果攻击继续,这可能导致设备无法响应合法主机。

事实证明,ICMP 可用于获取主机信息,并以恶意方式进行操作。因此,最好了解各种类型,只允许绝对必要的 ICMP 数据包,我们将在下一节中看到。

只允许必要的类型

由于 ICMP 可以影响重要系统功能的运行并获取配置信息,黑客在对网络进行侦察或进行主动攻击时会使用 ICMP 消息。因此,最佳实践可以包括以下内容:

  • 在防火墙上用访问控制列表 ( ACL )阻止某些 ICMP 消息,尤其是在边界路由器上的
  • 配置一个入侵检测系统 ( IDS )以便在检测到 ICMP 重定向消息时阻止或警告管理员

虽然 ICMP 可能被恶意使用,但我们必须记住,诊断实用工具(如 Ping 和 Tracert)需要 ICMP。因此,网络管理员必须决定网络上应该允许什么类型的 ICMP 数据包。在设置防火墙时,请记住唯一重要的 ICMP 流量是Destination Unreachable(ICMP 的Type 3和 ICMPv6 的Type 1),以及相应的代码。

所有其他 ICMP 类型都是可选的,这取决于您是否希望在您的网络中允许它们。根据您的组织,允许的其他类型包括:

  • 类型 8/0 :回应请求/回复
  • 类型 11 :超时

ICMP 有助于确保数据得到传递;但是,它可以被恶意使用,因此,您需要确保防火墙得到适当的调整。

总结

现在,您可以看到 ICMP 的许多方面,它是 TCP/IP 套件中的一个重要协议。我们研究了 ICMP 的目的,ICMP 是一种交流阻止数据传输的问题的方法。我们比较了 ICMP 和 ICMPv6,它们的功能相似,但我们现在明白 ICMPv6 的作用更大。因此,您可以在排除故障时使用此协议,我们发现 ICMP 消息可以与主机通信以报告传输错误。此外,我们看到了如何使用查询消息来尝试从主机获取信息。

为了更好地理解 ICMP 类型和代码值,我们研究了它们在传递信息时是如何工作的。此外,我们了解到,有些 ICMP 类型您很少会看到,因为它们现在已被弃用和/或不受支持。到目前为止,您应该认识到 ICMP 是一种功能强大的协议,它有助于在网络上传输流量,但也可能被恶意使用。因此,您应该配置允许或拒绝特定 ICMP 类型的防火墙规则,以减少 LAN 上恶意 ICMP 流量的威胁。

在下一章中,我们将仔细研究如何用 Wireshark 检查域名系统 ( DNS )流量。使用实际的例子,您将能够理解 DNS 在将主机名解析为 IP 地址时是如何工作的。您将发现 DNS 头中的字段值,并逐步完成 DNS 请求/响应事务。此外,由于 DNS 问题在许多网络中很常见,我们将回顾一下可以帮助您使用 Wireshark 计算 DNS 响应时间的工具,以及保护 DNS 的方法。

问题

现在,是时候检查你的知识了。选择最佳答案,然后将您的答案与评估附录中的答案进行核对:

  1. ICMP 传达阻止数据传送的问题。常见问题包括网络或端口是 _____。
    1. 宏伟威严的
    2. 检查
    3. 不能得到的
    4. ARP 已启用
  2. 一些 ICMP 类型已经不再使用,因为随着时间的推移,它们已经被发现是无效的,并被认为是 _____。
    1. 熄灭
    2. 不能得到的
    3. 数字的
    4. 反对
  3. 在 ICMPv6 中,当确定 IPv6 标头或 IPv6 扩展标头中的字段值出现问题时,可以发送 _____ 消息。
    1. 超过时间
    2. 参数问题
    3. 数据包太大
    4. 源抑制
  4. 设置防火墙规则时,唯一重要的 ICMP 流量是 _____。其他的是可选的。
    1. Type 3代表 ICMP,Type 1代表 ICMPv。
    2. Type 123代表 ICMP,Type 17代表 ICMPv。
    3. Type 1代表 ICMP,Type 3代表 ICMPv。
    4. Type 9代表 ICMP,Type 104代表 ICMPv。
  5. ICMP 可以被恶意使用。一种方法是 ______ 扫描,它使用网络上的一系列 ICMP 回应请求数据包来查看哪些主机处于活动状态并正在响应。
    1. 有效载荷
    2. 港口
    3. 校验和
  6. 在 ICMPv6 中,当设备由于数据包大于传出链路的 MTU 而无法发送数据时,可以发送 _____ 消息。
    1. 超过时间
    2. 参数问题
    3. 数据包太大
    4. 源抑制
  7. 一些(但不是全部)ICMP 类型有一组相应的代码值,用于进一步定义 ICMP 消息。例如,_____ 都有一组代码值。
    1. Type 0Type 7
    2. Type 1Type 2
    3. Type 1Type 6
    4. Type 3Type 9

延伸阅读

请参考以下链接了解更多信息:

第四部分:常见协议的深度包分析

一旦您理解了 TCP/IP 套件的基本协议,就该对常用协议进行深入的数据包分析了——HTTP、DNS、DHCP 和 ARP。我们将详细研究每个协议的报头格式和字段值,以及可用于促进数据交换的常见选项。

本节将涵盖以下章节:

十三、潜入 DNS

域名系统 ( DNS )将人类可读的主机名转换成互联网协议 ( IP )地址。它是当今最常用的应用层协议之一,对任何网络都至关重要。在这一章中,我们将回顾 DNS 的目的和简史,以便你能更好地理解它是如何开始的。然后我们将介绍不同类型的服务器,比如根服务器、权威服务器和递归服务器。此外,我们将比较解析 IP 地址和更新区域文件时 DNS 记录的传输方式。

为了更好地理解这个协议,我们将回顾一下资源记录 ( RRs )的一些常见类型和类别。我们还将通过使用 Wireshark 深入查看报头和查询部分来检查 DNS 数据包结构。您将能够识别关键字段值,例如交易标识 ( ID )和标题标志。此外,您将能够分解 DNS 如何呈现查询的答案。然后,我们将逐步完成将主机名解析为 IP 地址的过程。您将了解到操作系统 ( OS )如何存储已解析的地址,以及它可以在缓存中保留多长时间。我们还将介绍 Wireshark 如何在故障排除时帮助您计算 DNS 响应时间,并以讨论保护 DNS 的方式结束。

本章将涵盖以下内容:

  • 认识 DNS 的目的
  • 比较不同类型的记录
  • 查看 DNS 数据包
  • 评估查询和响应

认识域名系统的目的

任何上过基本网络课程的人都会熟悉 DNS。这个众所周知的协议提供了一个基本的服务,将人类可读的主机名翻译成机器可读的数字 IP 地址。

在这一节中,我们将介绍 DNS 如何工作的概念,以及它是如何开始的简短历史。然后,我们将继续回顾解析 IP 地址所涉及的不同类型的服务器,最后比较 DNS 的传输方式。

让我们先讨论一下为什么 DNS 如此重要。

映射 IP 地址

DNS 解析主机和服务的地址,以及连接到互联网的任何对象。此外,还需要发送电子邮件,防御垃圾邮件,或发起基于互联网协议的语音 ( VoIP )对话。

每当主机发出访问资源的请求时,该过程就会通过一系列服务器进行名称解析。操作系统将首先搜索本地缓存,如果没有找到答案,它将搜索范围扩大到其他服务器,直到找到解决方案。

但是这一切是从哪里开始的呢?在下一节中,让我们回顾一下 DNS 的历史。

反思 DNS 的起源

对于我们大多数人来说,DNS 似乎已经存在很久了。但是曾经有一段时间,当互联网还年轻的时候,所有用来定位主机的都是一个纯文本文件。从早期的高级研究计划局网络 ( ARPANET )到 1987 年,DNS 的发展取得了几项重大进展,如图所示:

Figure 13.1 – Key moments in DNS history

图 13.1–DNS 历史上的关键时刻

阿帕网始于 1969 年,在整个 20 世纪 70 年代,这个小小的网络开始扩大,每天都在增加主机。类似于我们今天识别主机的方式,ARPANET 基础设施使用数字地址。为了定位另一台主机,科学家们设计了一个名为hosts.txt的文件,将主机名映射到它们的网络地址。

https://datatracker.ietf.org/doc/html/rfc597发现的Host Status文件包括如下条目:

101      65     UCLA-CCn        IBM 360/91      Server
204     132     UTAH-TIP                        TIP

在 ARPANET 的早期,每台主机都保存着网络上的系统列表。除了网络地址之外,他们还为它们分配了人类可读的名称,以便更容易识别它们。

然后,该文件由人工维护并分发给所有成员。在接下来的二十年中,映射的处理方式发生了重大变化:

  • 1973 年:随着 ARPANET 的扩展,科学家们认识到集中管理文件的局限性,并开始探索共享主机信息的替代方案。
  • 1983 : 征求意见 ( RFC ) 882 和 RFC 883 概述了 DNS 作为分布式(而非集中式)系统的开端。
  • 1984 年 : Berkeley 互联网域名 ( BIND )发布,提供了一种存储和检索关于对象和资源信息的方式。BIND 仍然是世界上最广泛使用的管理主机的方法。
  • 1987 : RFC 1034 和 RFC 1035 概述了我们今天所知的 DNS 框架。

虽然 DNS 以分布式方式工作,但是有一个使用区域的结构化层次结构。区域代表一个区域,管理员可以在其中提供对 DNS 对象的粒度控制。

搜索 IP 地址可能很复杂;然而,所有的起点是 DNS 根区域。我们来探讨一下这个概念。

从根开始

根服务器是响应根区域内查询的名称服务器。服务器是解析地址的重要组成部分,这样数据就可以在互联网上传输。根服务器的结构是顶层是根服务器,后面是顶级域名 ( TLD )服务器,如图所示:

Figure 13.2 – The DNS root server hierarchy

图 13.2–DNS 根服务器层级

DNS 根区域由全球 13 台根服务器和大约 600 台冗余根服务器组成。TLD 服务器代表域名的扩展,并提供一种组织数据的方式,以便更容易解析查询。离开 TLD,您将看到特定域的服务器,后面是它们各自的子域,如果有的话。

举个例子,如果我们从 TLD.org 开始,我们会看到以下内容:

虽然根服务器有着重要的作用,但是当发出 DNS 请求时,还会涉及到其他服务器。接下来我们来考察一下这个概念。

DNS 服务器的类型

当请求一个 IP 地址时,有两种主要类型的服务器参与事务,权威递归

首先,让我们看看在解析 IP 地址时,权威服务器是如何发挥重要作用的。

作为权威

在任何 DNS 结构中,都必须有一个权威的 DNS 服务器。权威服务器保存该域的主记录集,并在发生变化时进行更新。

在每个区域中,都有一个权威服务器。在大多数情况下,存在多个冗余。不同的类型如下:

  • 主服务器将存储所有可靠的域记录,包括 IP 地址和管理员名称,以及特定于域的 RRs。
  • 辅助服务器将存放区域文件的只读副本。它会定期通过请求区域转移来获取文件的更新版本。
  • 存根服务器只包含名称服务器 ( NS )数据,因为它的主要作用是向递归服务器发送请求。

需要一个主要权威服务器。辅助权威服务器是可选的。但是,在高请求量期间,通过分担负载来提供冗余和减少依赖性是一种很好的做法。

另一种类型的 DNS 服务器是递归服务器。

使用递归服务器

递归的服务器是一个非权威的服务器,保存普通来回用户查询的缓存副本。

当客户端请求 IP 地址时,查询可以是以下任何一种:

  • 递归是指 DNS 服务器将完成获取响应的工作。
  • 迭代是指客户端必须完成获取响应的工作。

在大多数情况下,当客户端发出 DNS 请求时,它将被定向到递归服务器。如果服务器没有请求的 IP 地址,它将代表客户端继续搜索响应。来自递归服务器的请求以迭代的方式完成,直到它们到达所请求的域的权威 DNS 名称服务器,如图所示:

Figure 13.3 – A DNS query using a recursive server

图 13.3–使用递归服务器的 DNS 查询

使用递归查询,GE.com的 IP 地址解析过程如下:

  1. 客户端为GE.com请求一个 IP 地址。
  2. 如果递归服务器在缓存中没有答案,它将需要查询根 DNS 服务器。
  3. 根服务器将把递归服务器指向.com的 TLD。
  4. TLD 服务器将指示递归服务器向权威域名服务器查询GE.com域名。
  5. 递归服务器然后将结果返回给客户端。

显而易见,DNS 过程涉及许多组件来解析 IP 地址。但是 DNS 是如何与其他主机通信的呢?正如我们所知,许多协议使用专用的传输方法。例如,动态主机配置协议 ( DHCP )使用用户数据报协议 ( UDP )作为其传输协议。然而,在下一节中,我们将了解 DNS 如何根据任务使用端口53使用传输控制协议 ( TCP )和 UDP 。

传输域名系统

两个主要的传输层协议是 TCP 和 UDP。区别如下:

  • UDP 是一种无连接的轻量级协议,用于需要快速传输数据的情况。
  • TCP 是一种面向连接的协议,能够在监控拥塞和提供流量控制的同时确保完整的数据传输。

传输数据时,DNS 可以使用 TCP 或 UDP。首先,让我们研究一下为什么 UDP 是发出请求时主要使用的协议。

提供快速解决方案

在大多数情况下,DNS 对主要或反向 DNS 请求使用 UDP。一个关键原因是,当主机发送查询时,目标是提供快速的解决方案。UDP 不经过握手过程;它只是请求解决方案并等待响应。

此外,UDP 是一种轻量级协议,使用小于 512 字节的数据包传输少量数据。大多数情况下,DNS 查询或响应都远远低于这个限制。

使用 UDP 是传输协议的最佳选择,因为 DNS 服务器必须快速响应并能够响应传入的查询,如果服务器必须保持 TCP 连接,这是不可能的。

虽然 UDP 是使用 DNS 时的主要传输协议,但 DNS 使用 TCP 的原因有几个。

确保完全转移

使用 DNS 时,TCP 可能被用作传输协议有两个原因:

  • 完成区域转移时,因为准确性比速度更重要。使用面向连接的流程将确保传输完成。
  • 每当有效负载大于 512 字节时,应用必须使用 TCP。

所有 DNS 记录都不相同。在下一节中,让我们比较一些 DNS RRs。

比较 RRs 的类型和分类

DNS 的核心是 RR,它包括请求资源的名称、类型、生存时间 ( TTL )和 IP 地址等信息。在这一节中,我们将回顾一些不同类型的 RR,并研究其中一种的结构。

让我们从回顾一些不同类型的 RRs 开始。

分解 DNS 类型

每当您向 DNS 服务器发送请求时,请求将包含要返回的记录类型。尽管有许多类型的 DNS RR,我们还是来看看一些常见的类型,如下表所示:

Table 13.1 – The types of DNS RRs

表 13.1–DNS RR 的类型

如所示,这些是普通记录;然而,还有更多。有关 DNS 类型的完整列表,请访问 https://phoenixnap.com/kb/dns-record-types。

注意

一个 AAAA 类型的 RR 是一个 IPv6 地址,也被称为四元 T2。此类型使用四个 As,因为 IPv6 地址的长度是 IPv4 地址的四倍。

现在您已经了解了一些 RR 类型,让我们来看看 RR 的结构。

检查 RR 结构

所有 RR 的结构包含描述 RR 的元素,如下表所示:

Table 13.2 – The elements in a DNS RR

表 13.2–DNS RR 中的元素

接下来,我们来看一个 DNS 响应包中 RR 应答的例子。为了让你能跟上,我们将从 CloudShark(【https://www.cloudshark.org/captures/13833cdd14ba】)获取一个数据包捕获。下载文件DNS Question & Answer.pcapng,并在 Wireshark 中打开它。选择帧 2 ,展开 DNS 头。然后,展开Queries部分的第一个 RR,如下图所示:

Figure 13.4 – A DNS RR answer

图 13.4–DNS RR 答案

在任何交易中,您都会在 DNS 数据包的结构中发现大量信息。接下来让我们对此进行调查。

查看 DNS 数据包

DNS 是一种客户端-服务器模型,用于将主机名解析为 IP 地址。要查看一个完整的 DNS 包,请转到DNS Question & Answer.pcapng并展开帧 2 中的Domain Name System (response)插入符号,如下所示:

Figure 13.5 – Expanded DNS packet

图 13.5-扩展的 DNS 数据包

正如您所看到的,DNS 数据包有几个部分,如下所示:

  • 第一部分( 1 )是 DNS 头。
  • 第二节( 2 )总结内容。
  • 第三部分( 3 )是查询部分。
  • 第四部分( 4 )是 Wireshark 特定的引用。

在本节中,我们将回顾 DNS 报头中的字段值,回顾 DNS 数据包的结构,然后比较 DNS 问答部分。

让我们从检查 DNS 头元素开始。

检查割台

客户端或服务器的报头结构是相同的。不同的是每个报头的字段值,它将标识消息是查询还是响应,并包括事务的其他参数。

进入DNS Question & Answer.pcapng后,展开第 2 帧中的Flags插入符号,如以下截图所示:

Figure 13.6 – The expanded DNS header

图 13.6–扩展的 DNS 头

检查标题字段时,您会看到两个主要部分:

  • Transaction ID
  • Flags

Transaction ID是 DNS 数据包的基本元素,因为它在查询和响应数据包的交换过程中识别特定的 DNS 事务。Wireshark 跟踪Transaction ID,以便您可以轻松地引用事务的各个部分。例如,在框 2 的底部,您会看到以下指示灯:

Figure 13.7 – Wireshark-created indicators

图 13.7-Wireshark 创建的指示器

Request In: 1是一个超链接,它将把您带到Transaction ID: 0x0003的请求包。

注意

Time部分列出了查询和结果响应之间经过的时间。

Transaction ID之后,您将看到Flags部分,它提供了交易的细节。但是,您会注意到,客户端的标志与服务器的标志不同。接下来我们来探讨一下。

比较标志

当比较 DNS 报头中的标志时,您会发现来自客户端的数据包和来自服务器的数据包有明显的不同。

来自客户端的标志如下:

  • 响应:设置为0,其中表示该消息为查询。
  • 操作码:对于大多数请求,操作码 ( 操作码)为0,表示这是一个标准查询。
  • 截断:当设置为0时,表示消息没有被截断。
  • 期望递归:设置为1时,表示客户端请求递归。
  • Z :过时 DNS 实现中使用的弃用标志。
  • 未认证数据:设置为0,因为该标志仅用于响应数据包。

来自服务器的标志是如下的:

  • 响应:设置为1,表示该消息为响应。

  • 操作码:对于大多数响应,操作码是0,这表明这是一个标准查询。

  • 权威:表示该服务器是否是该域的权威。当设置为0时,表示该服务器不是该域的授权机构。

  • 截断:当设置为0时,表示消息没有被截断。

  • 期望递归:设置为1时,表示客户端请求递归。

  • 递归可用:设置为1时,表示服务器可以进行递归查询。

  • Z :过时 DNS 实现中使用的弃用标志。

  • 答案认证:表示答案/权限部分是否通过服务器认证。

  • 非认证数据:用于响应包。如果该值被设置为1,这将表明所包含的所有数据都已经过 DNS 服务器的认证。

  • Reply code: 0 will indicate that there is no error.

    注意

    设置后,截断标志将指示消息是否因超出 UDP 数据包 512 字节的限制而被缩短。

操作码标志将指示正在发送的消息的类型,因为它向 DNS 服务器发出命令来执行一些动作。让我们来看看。

定义操作码

在大多数情况下当检查操作码值时,值将被设置为0,表示这是一个标准查询。但是,也可以设置其他值,如下所示:

Table 13.3 – DNS OpCode

表 13.3–DNS 操作码

一些操作码,如 3 和 7–15 等,目前尚未分配。但是,这种情况可能会发生变化,例如,操作码 6 DSO 是一个较新的操作码,在有活动状态时使用,例如在 TLS 会话期间。

最有可能在查询中的1处设置的一个标志是递归标志。让我们来讨论一下这面旗帜的意义。

请求递归

DNS 中有两种类型的查询——递归迭代。每当客户端提交一个 DNS 查询时,通常会看到下面的标志集—Recursion desired: Do query recursively

递归查询是首选选项,因为当可用时,DNS 服务器将完成获取响应的工作。相反,迭代查询适用于客户端必须获取响应的情况。

当服务器响应时,它将使用以下任一方式进行回复:

  • Recursion Available其中标志设置为1,这意味着服务器将完成一个递归查询
  • Recursion Not Available其中标志设置为0,这意味着服务器不会完成递归查询,因为不支持这种类型的查询

当查看请求或回复的 DNS 头时,消息头后面有四个部分。接下来我们就来探讨一下这些。

剖析数据包结构

对于查询或响应,DNS 头后面的四个部分如下:

  • Questions:请求的分辨率
  • Answers RRs:提供答案的 RR 的数量
  • Authority RRs:提供权威 NS 的 IP 地址的 RR 的数量
  • Additional RRs:包含附加信息的 RRs 的数量

举个例子,如内容摘要中的下图所示(如 2 部分所示),我们可以看到有 1 问题,它返回了 11 RRs:

Figure 13.8 – The DNS summary section

图 13.8–DNS 摘要部分

沿着数据包结构,您会发现查询部分,它用于发送问题或提供响应。

概述查询部分

当查看 DNS 头详细信息时,DNS 问题的格式不同于 DNS 答案,如下所示:

Figure 13.9 – DNS questions and answers

图 13.9–DNS 问题和答案

当客户端向 DNS 服务器发出请求时,它是在请求解析。如果我们从客户端转到DNS Question & Answer.pcapng并展开第 1 帧请求中的Queries插入符号,我们将看到以下信息:

Figure 13.10 – The DNS client query

图 13.10–DNS 客户端查询

第一部分( 1 )是 Wireshark 对查询部分的总结。第二部分( 2 )是 DNS 问题部分,包含以下内容:

  • 名称:请求的分辨率。在这种情况下,客户希望分辨率为Google.com
  • 类型:RR 的类型。在这种情况下,客户端请求一个A类型或 A 类型(IPv4)地址。
  • 类别:请求的 RR 的类别。在这种情况下,类被列为IN,这是最常见的 QClass 请求。

当服务器回复 DNS 请求时,它将返回客户端的查询,并(在大多数情况下)返回答案。如果我们从服务器转到DNS Question & Answer.pcapng并在第 2 帧的响应中选择Answers插入符号,我们将看到以下信息:

Figure 13.11 – The DNS server answers

图 13.11–DNS 服务器应答

当然,来自服务器的答案可能会有所不同。然而,在这种情况下,服务器返回了 11 个 RR。

现在您已经了解了 DNS 数据包的要素,让我们看看 DNS 进行解析时的其他一些考虑事项。

评估查询和响应

DNS 查询和响应非常简单。客户端向 DNS 服务器发送 IP 地址查询,服务器用该信息进行响应。在本节中,我们将了解事务期间的一些行为,例如缓存响应,以及使用 Wireshark 监视事务期间的平均响应时间。

然后,我们将评估当我们需要对 DNS 进行故障诊断时会发生什么,以及nslookup如何帮助检查和验证响应。最后,我们将看看欺骗 DNS,以及我们如何保护这个过程。

让我们从了解缓存如何在 DNS 过程中发挥作用开始。

缓存响应

网络上的任何事情都有时间限制。DNS 也不例外。当服务器返回响应时,答案中有几个元素。该响应中包含 TTL 值,它反映了记录在消失之前可以在缓存中存在多长时间。

TTL 值因系统而异,但通常由域名所有者设置。

图 13.4 中,我们可以看到Time to live: 4 (4 seconds),这意味着响应可以在缓存中存在 4 秒钟。

注意

请记住,DNS RR 中的 TTL 值不同于 IPv4 报头中的 TTL 值。DNS RR 中的 TTL 是响应可以在缓存中存在多长时间。IP 报头中的 TTL 表示数据包在被路由器丢弃之前可以经过多少跳。

DNS RRs 的 TTL 值变化很大是很常见的。要在 Windows 机器上检查自己的缓存,打开命令提示符并键入ipconfig /displaydns。这将显示缓存中保存的您自己的 DNS RRs 的列表,例如,在运行命令后,我选择了其中一个记录,如下所示:

api.wildtangent.com

记录名称。。。。。:api.wildtangent.com

记录类型。。。。。: 1

是时候活下去了。。。。: 17

数据长度。。。。。: 4

部分。。。。。。。:回答

(主)记录。。。: 34.210.94.123

在响应中,我们可以看到api.wildtangent.com的 RR 答案的Time To Live值为17(秒)。

如果 17 秒后,操作系统需要api.wildtangent.com的 IP 地址,而 DNS 信息不在缓存中,它必须发出另一个 DNS 查询。

大多数 DNS 查询和响应都在 120 毫秒(ms 或 msec)或 0.12 秒以下;然而,一些响应可能需要更长时间。接下来,让我们看看如何使用 Wireshark 来计算响应时间。

计算响应时间

DNS 响应时间可能有所不同;然而,有时回应似乎比平时要长。为了测试响应时间,网络管理员有多种工具。例如,要测试你的 DNS 提供商的速度,去 https://www.dnsperf.com/dns-speed-benchmark 的。一旦出现,在域名字段中输入example.com,然后选择运行测试。该网站将显示世界各地服务器的响应时间。向下滚动,您将看到如下结果:

  • 36 ms [United States] United States, Dallas (DC139)
  • 14 ms [United States] United States, Asheville (DC82)
  • 126 ms [Egypt] Egypt, Cairo (DC225)

您还可以使用 Wireshark 生成的统计数据来查看响应时间。让我们来看看。

查看 DNS 响应时间

为了向您展示一个更长 DNS 响应时间的可视化示例,我们将使用bigFlows.pcap。你可以在http://tcpreplay . app neta . com/wiki/captures . html # big flow-pcap找到 big flow。

打开bigFlows.pcap后,应用以下过滤器:

(((((dns) && (dns.flags.response == 1)) && !(sflow)) && !(icmp)) && !(dns.flags.rcode == 2)) && (dns.time > 0.2)

该过滤器将执行以下操作:

  • 使用dns过滤器显示所有 DNS 流量
  • 使用dns.flags.response == 1过滤器仅显示 DNS 响应
  • 使用!(dns.flags.rcode == 2)忽略任何 DNS 服务器错误
  • 使用!(sflow)) && !(icmp)过滤器移除所有管理流量,例如互联网控制消息协议 ( ICMP )和采样流量 ( sFlow )流量
  • 使用dns.time > 0.2过滤器缩小搜索范围,仅显示响应时间大于 0.2 秒的数据包

运行过滤器后,可以添加一个列标题来显示响应时间。

要添加列标题,请先展开 DNS 标题以查看详细信息。接下来,找到 Wireshark 生成的值Time,如下所示:

Figure 13.10 – The DNS server answers

图 13.10–DNS 服务器应答

右键单击该值并选择应用为列。要调整和编辑列以便更好地可视化数据,右键单击任何列标题并选择列首选项…

在那里,您可以通过单击并拖动列标题到所需的位置来移动列。为了显示响应时间,我重命名了快捷方式DNS Response time并禁用了一些列标题,如下所示:

Figure 13.11 – Column preferences

图 13.11–列首选项

在您调整了列的标题后,您可以通过单击一次 DNS 响应时间标题来对 DNS 响应时间进行排序,以显示最长的时间值。结果如下所示:

Figure 13.12 – BigFlows showing DNS response times

图 13.12–显示 DNS 响应时间的大流量

如图所示,DNS 响应时间可能会有所不同。虽然这是意料之中的,但查看 DNS 服务健康状况的另一种方法是检查统计数据。为此,进入统计 | DNS ,这将打开 DNS 统计窗口。我应用了!(dns.flags.rcode == 2)过滤器,然后删除了服务器故障错误,如下所示:

Figure 13.13 – BigFlows DNS statistics

图 13.13–大流量 DNS 统计

在统计窗口中,您可以看到各种计算值。窗口中央是服务统计数据。我们可以从这个(过滤后的)捕获中看到,以毫秒为单位的请求-响应时间如下:

  • 平均请求-响应时间–69.67毫秒

  • 最短请求-响应时间–0.082000毫秒

  • Maximum request-response time – 509.076996 milliseconds

    注意

    在大多数情况下,您会希望看到服务器故障错误。然而,在这个捕获中,有太多的错误扭曲了响应时间统计。

DNS 统计在故障排除过程中是一个非常有用的工具。例如,值得研究以下问题:

  • 请求-响应时间过长或响应失败的查询可能表明 DNS 服务器有问题,例如瓶颈或失败的网络接口卡 ( NIC )。
  • 如果您看到异常大量的请求和响应,这可能表明 DNS 隧道。
  • 大量请求和响应也可能表示主机正在与命令和控制 ( C & C )服务器通信,该服务器用于远程控制受感染的主机。
  • 经历不成比例的大量 DNS 响应可以表明 DNS 拒绝服务 ( DoS )可能在起作用。

接下来,让我们来看看nslookup,这是一个可以在排除 DNS 故障时使用的命令行工具。

使用 nslookup 进行测试

设置和维护 DNS 服务器是一项挑战。 DNS 服务是必不可少的,如果配置不当,这可能会导致主机之间的通信能力出现严重问题。此外,如果 DNS 缓存已中毒,这也将阻止主机通信,并可能将客户端误导到恶意站点。

在 Windows 机器上进行快速测试的一个方法是使用nslookup,这是一个命令行工具,主要用于解决 DNS 问题。

要使用nslookup,请转到启动,然后输入Run。进入应用后,输入cmd,如下图所示:

Figure 13.14 – Using Run

图 13.14–使用运行

一旦进入命令行界面,键入nslookup example.com,然后按进入。一旦运行,我的输出如下:

c:\ > nslookup example.com

服务器:cdns01.comcast.net

地址:2001:558:feed::1

非权威回答:

姓名:example.com

地址:2606:2800:220:1:248:1893:25 c8:1946

93.184.216.34

请求首先到我的互联网服务提供商 ( ISP ),然后cdns01.comcast.net解析 IP 地址。

注意

在 macOS 和/或 Linux 上,使用dig命令将提供类似的结果。

DNS 可能遭受恶意活动。在下一节中,让我们讨论一些与 DNS 相关的安全问题。

保护域名系统

DNS 已经被用来解析地址很多年了。在互联网的早期,没有任何保护协议的考虑。因此,它可能会遭受缓存中毒和欺骗等攻击。

首先,让我们概述一下如果恶意行为者毒害缓存会发生什么。

毒害缓存

DNS 对任何网络都是必不可少的。当客户端请求 IP 地址时,它们相信服务器会提供准确的地址。如果地址不正确,客户端可能会被重定向到一个虚假的站点。

DNS RRs 有一个 TTL 值,表示它们可以在缓存中存在多长时间,缓存是 DNS 记录的临时保存区域。缓存是一个重要的概念,因为它提供了一种对查询发送更快响应的方式。

缓存中毒将欺骗信息注入到 DNS 服务器的缓存中。恶意行为者利用这种攻击来误导请求 DNS 解析的客户端。攻击的结果将取决于中毒的服务器。在一个局域网 ( 局域网)上,所有本地用户都会受到影响。然而,毒害 ISP 服务器的缓存将会产生广泛的影响。

防范破坏 DNS 的攻击至关重要。让我们研究一下实现这一点的方法。

捍卫 DNS

DNS 服务器代表易受攻击的目标。为了保护服务器,网络管理员可以采用一些技术:

  • 使用缓存锁定,它控制如何以及何时可以覆盖缓存。
  • 将区域传送限制为只响应受信任的服务器。
  • 使用 DNS 安全扩展 ( DNSSEC ),由提供数据认证和完整性。

此外,应使用所有其他保护 DNS 服务器的标准良好实践技术。技术包括保持服务器更新和修补,并使用防火墙,限制访问只有授权的实体。

总结

在本章中,我们概述了 DNS 的用途,回顾了服务器的类型,然后比较了 DNS 的传输方式。然后,我们评估 RR 的类型和类别,然后分析 RR 中包含的结构和信息。接下来,我们检查了一个 DNS 数据包,深入研究了报头字段和标志,分析了数据包结构,并回顾了查询部分。

到目前为止,您应该对 DNS 查询和响应过程有了很好的理解,并且能够识别 TTL 值,该值表示该值可以在缓存中保留多长时间。此外,我们还了解了如何在 Wireshark 中检查 DNS 统计数据,以及如何使用nslookupdig等工具测试 DNS。然后,我们通过讨论潜在威胁以及如何保护 DNS 的一般建议进行了总结。

在下一章中,我们将首先解释动态主机配置协议 ( DHCP )的必要性,并回顾这一基本协议的目的。为了让您理解如何从 DHCP 服务器获得 IP 地址,我将概述一下发现提供请求确认 ( DORA )过程。然后,我将剖析 DHCP 报头,查看所有字段值标志和端口号,然后以一个 DHCP 示例结束。

问题

现在,是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. _____ 服务器是响应根区域内查询的名称服务器,是解析地址的重要组成部分。
    1. 递归的
    2. 多余的
    3. 贮藏
  2. 在任何 DNS 结构中,都必须有一个(n)_ _ _ _ _ _ DNS 服务器来保存域的主记录集,并在发生变化时进行更新。
    1. 递归的
    2. 多余的
    3. 命令式的
    4. 贮藏
  3. DNS RR 有很多种。类型 12 _____ 将 IP 地址转换为域名。
    1. AXFR
    2. 麦克斯韦(maxwellˌ磁通量单位)ˌ中性(Middlesex)
    3. AAAA
    4. 中石油
  4. 当被设置时,____ 标志将指示消息是否因为超过了 UDP 数据包 512 字节的限制而被缩短。
    1. 递归的
    2. 贮藏
    3. 变钝
    4. 缩短了的
  5. 经历不成比例的大量 DNS 响应可能表明可能存在 DNS _____ 攻击。
    1. 电子欺骗
    2. 两个
    3. 缩短
    4. 储藏毒药
  6. 在 DNS 问题部分,____ 是请求的解决方案。
    1. 名字
    2. 类型
    3. 班级
    4. 隐藏物
  7. 在 Windows 机器上解决 DNS 问题的一种方法是使用 _____ 命令行工具。
    1. baseline
    2. boost
    3. nslookup
    4. dig

延伸阅读

请参考以下链接了解更多信息:

十四、检查 DHCP

每当你第一次启动你的机器开始你的一天,你的操作系统 ( OS )会经历一系列的事件。其中一个事件是获得一个互联网协议 ( IP )地址。用来获取你的 IP 地址的协议被称为动态主机配置协议 ( DHCP )。在本章中,我们将从回顾 DHCP 的目的开始。然后,我们逐步完成 DHCP 过程,它有四个步骤:发现提供请求确认,也称为多拉过程。

为了熟悉使 DHCP 过程成为可能的元素,我们将仔细研究 DHCP 报头中的字段值。此外,在这个过程中,您将更好地理解客户机和服务器的角色。我们还将了解 DHCPv6,它用于为越来越多的采用 IPv6 的网络提供 IP 地址。我们还将回顾这个基本协议的一些安全方面,然后提供一个 DHCP 事务的例子。

在本章中,我们将讨论以下主题:

  • 认识 DHCP 的目的
  • 逐步完成 DORA 流程
  • 剖析 DHCP 报头
  • 以 DHCP 为例

认识 DHCP 的目的

网络中的每台主机都必须有唯一的 IP 地址,才能与其它网络主机通信。一些主机,比如服务器和打印机,有一个硬编码的 IP 地址,因为他们不希望 IP 地址改变。但是,绝大多数主机都有一个动态分配的 IP 地址。

DHCP 是一种在网络上使用的方法,用于向网络上的主机提供配置信息。除了提供 IP 地址之外,大多数响应还提供了其他信息。这些信息可以包括域名服务 ( DNS )服务器的 IP 地址和网络时间协议 ( NTP ),为网络提供时间服务。

DHCP 让您在繁忙的网络上节省 IP 地址。它还消除了对单个 IP 地址的繁琐和不必要的硬编码的需要。

DHCP 是一种客户端-服务器模型,其中主机请求一个 IP 地址,服务器用一个由租借一段时间的 IP 地址来响应。租用时间可能会有所不同,因为通常由网络管理员来配置 DHCP 服务器的不同参数。

当你请求一个 IP 地址时,一个客户至少会收到一个,但在许多情况下,会提供两个,因为许多网络使用多个服务器来实现冗余。

在企业网络中,DHCP 将使用以下元素:

  • DHCP 客户端:这些主机已经被配置为在其网络绑定中自动获取 IP 地址。
  • DHCP 服务器:这些服务器从可用的地址池中向网络上的客户端发布 IP 地址,以及特定时间段的配置数据。
  • DHCP 中继代理:当 DHCP 服务器与 DHCP 客户端位于不同的子网时,可以选择使用这个代理。中继代理接收请求,并代表客户端将(单播)消息定向到另一个子网上的 DHCP 服务器。

每当主机加入网络或醒来时,它将开始 DHCP 进程以获取 IP 地址并开始通信。为此,必须将主机配置为自动获取 IP 地址。

配置客户端的 IP 地址

在大多数情况下,DHCP 是在主机上自动配置的,例如,进入网络连接并选择您的网络接口卡的属性,互联网协议第 4 版(TCP/IPv4)属性。在那里,您可能会看到自动获取 IP 地址设置,如下面的截图所示:

Figure 14.1 – Internet Protocol Version 4 (TCP/IPv4) Properties

图 14.1–互联网协议版本 4 (TCP/IPv4)属性

一个局域网 ( LAN )上的大多数主机都被配置为自动获取一个 IP 地址。每当客户端启动时,它将通过尝试访问 DHCP 服务器来获取 IP 地址。然而,有时 DHCP 服务器与客户端不在同一个子网中。在这种情况下,必须使用中继代理。

使用 DHCP 中继代理

在 IPv4 子网络上,依赖于使用 DHCP 获取 IP 地址的客户端使用网络上的广播开始该过程。如果子网上没有 DHCP 服务器,客户端将需要一种到达服务器的方法。大多数路由器不转发广播,因此如果 DHCP 服务器在路由器的另一端,客户端将需要使用中继代理来代表它们请求 IP 地址。

中继代理配置有 DHCP 服务器的 IP 地址。代理驻留在 DHCP 客户端驻留的路由器接口上,以便它可以响应 DHCP 广播。一旦发现数据包被接受,中继代理将使用单播数据包直接与 DHCP 服务器通信。

中继充当代理,并在 DHCP 客户端和服务器之间提供桥梁,如下图所示:

Figure 14.2 – Using a DHCP relay agent on a router

图 14.2–在路由器上使用 DHCP 中继代理

在使用中继代理的子网络上,使用 DHCP 获取 IP 地址的过程按以下方式进行:

  1. 客户端在子网上发送发现广播。
  2. 中继代理代表客户端收集请求。
  3. 请求被重新打包,然后通过单播直接发送到 DHCP 服务器。
  4. 服务器用一个包含 IP 地址的提议来响应中继代理,以及客户机请求的任何可选信息。
  5. 中继代理将要约转发给客户端,并将继续在客户端和服务器之间交换消息,直到最终确认。

DHCP 为 IPv4 主机提供了一种获取 IP 地址的方式。在下一节中,我们将概述网络上使用 IPv6 的客户端获取 IP 地址的方式。

使用 IPv6 地址

虽然今天许多局域网主要使用 IPv4,但我们开始看到一小部分组织采用 IPv6。使用 IPv6 时,有三种方式在主机上配置 IP 地址:

  • 在需要静态 IP 地址的主机(如服务器和打印机)上手动配置地址。
  • 使用无状态地址自动配置 ( SLAAC )自动分配给一个 IP 地址。
  • 使用 DHCPv6 从预先配置的地址池中发布地址。

虽然 LAN 中的少数主机会有一个手动分配的 IPv6 地址,但绝大多数主机需要通过其他方式获得网络地址。让我们比较一下 IPv6 客户端获取 IP 地址的方式。我们将从讨论如何使用 SLAAC 开始。

使用 SLAAC

在 IPv6 网络上,SLAAC 是分配 IP 地址的首选方式。当你使用 SLAAC 时,网络管理员需要配置一个路由器来发布它的前缀。然后使用前缀,以便每个客户端可以生成自己的 IPv6 地址。

SLAAC 通过执行以下操作来创建 IPv6 地址:

  1. 首先,它从客户端的网卡 ( NIC )获取一个 12 位(48 位)媒体访问控制 ( MAC )地址。
  2. 然后,它将组织唯一标识符 ( OUI )和网卡序列号分开。
  3. 最后,它在 OUI 和 NIC 序列号之间插入 16 位标识符0xFFFE

完成后,它将如下所示:

Figure 14.3 – Generating an IPv6 using SLAAC

图 14.3–使用 SLAAC 生成 IPv6

当您使用 SLAAC 时,为网络主机生成 IPv6 地址是自动完成的。但是,DHCPv6 仍然可以使用,因为它可以为主机提供额外的配置选项。

使用 DHCPv6 提供信息

虽然 SLAAC 可以提供一种有效的方法来自动创建 IPv6 地址,但是主机可能需要附加信息,这些信息可以通过使用 DHCPv6 来提供。

DHCPv6 服务器可以向网络上的客户端提供的一些配置数据包括以下内容,以及相应的注释请求 ( RFC ,您可以在这里找到更多信息:

Table 14.1 – DHCPv6 options

表 14.1–DHCP V6 选项

例如,如果一个客户端已经使用 SLAAC 获得了一个 IP 地址,他们可以发送一个带有概述所请求的配置参数的选项请求Information-Request数据包消息。下面是一个例子:

Figure 14.4 – DHCPv6 Option Request

图 14.4–DHCP V6 选项请求

DHCP 是一种广泛使用的协议,它使主机能够自动获取 IP 地址。然而,在使用 DHCP 时,解决可能的安全风险是很重要的。

解决安全问题

DHCP 于 1993 年正式成为一种协议。在那段时间里,很少有人考虑提供方法来保护 DHCP 和 DHCP 服务器免受恶意活动的攻击。然而,流氓设备有可能发起攻击,例如 DHCP 饥饿攻击。

出现这种情况的一个主要原因是,当使用 DHCP 时,客户端和服务器之间没有本地身份验证或授权。因此,网络管理员应该采取措施,确保在任何 DHCP 交互之前,DHCP 服务器只与网络上的合法客户端进行交互。

一种方法是使用 DHCP 侦听。当在第 2 层设备(如交换机)上配置时,DHCP 侦听将监控流量并执行以下操作:

  • 允许有效的 DHCP 客户端消息与 DHCP 服务器通信。
  • 允许有效的 DHCP 服务器消息与 DHCP 客户端通信。
  • 拒绝并丢弃来自不可信来源的流量。

此外,在 Windows Server 环境中,DHCP 服务器必须在 Active Directory 中获得授权,才能开始租用地址。这是一个验证检查,以确保客户端不会从恶意 DHCP 服务器接收地址。

在下一节中,我们将描述使用 DORA 进程获取 IP 地址的过程。

逐步完成 DORA 流程

DHCP 过程是一种向客户端提供地址的有效方式。因为我们想要我们的 IP 地址快,它使用用户数据报协议 ( UDP )作为传输层协议。

DHCP 使用下列 UDP 端口:

  • 客户端使用端口68
  • 服务器和中继代理使用端口67

DHCPv6 使用下列 UDP 端口:

  • 客户端使用端口546
  • 服务器和中继代理使用端口547

当我们检查 DHCP 流量时,您会看到这些端口正在使用。

DHCP 进程在事务处理过程中会经历不同的状态,这将在下一节中介绍。

在 DHCP 状态间移动

在 DHCP 事务的过程中,客户端可以处于六种状态之一。了解这些状态和发生的情况将有助于故障排除。这些 DHCP 状态如下:

  • Initiate :客户端通过在网络上发送广播来搜索 DHCP 服务器,从而开始这个过程。
  • 选择:客户端将选择服务器发送的报价。
  • 请求:客户端将正式向服务器请求报价。
  • 绑定:一旦服务器发送 IP 地址,客户端将保持绑定状态,直到租约到期。
  • 续租:在此状态下,客户端会请求续租。此时,两件事情中的一件可能发生:
    • 如果服务器发送了一个 ACK,租约将被更新,客户端将返回到绑定到阶段。
    • 如果服务器没有发送 ACK,并且 87.5%的时间已经过去,则客户端移动到重新绑定阶段。
  • 重新绑定:在此状态下,客户端将尝试重新绑定。此时,可能会发生以下两种情况之一:
    • 如果服务器发送了一个 ACK,则租约被更新,并且客户端回复到绑定到阶段。

    • If the lease expires or the server sends a Negative Acknowledgment (NAK), the client will revert to the initiate stage.

      注意

      当您处理数据包捕获时,您可能会看到 Wireshark 将应用识别为引导协议(bootpc),因为这是协议的原始名称,如 RFC 951 中所述。但是,要仅查看 DHCP 流量,请使用显示过滤器工具栏中的dhcp(小写)过滤器。

当你经历 DHCP 过程的各个阶段时,必须有一种方法将事务保持在一起。让我们看看交易标识符 ( XID )在这个过程中扮演什么角色。

定义交易 ID

在整个 DORA 过程中,您将看到一个由客户端随机生成的 XID。服务器将采用相同的 XID,客户端和服务器都将能够识别哪些事务属于同一个事务。

在极少数情况下,客户无法提供 XID。在这些情况下,服务器将使用客户端硬件地址 ( chaddr )来识别客户端。通常不建议使用 chaddr,因为它可能会导致不良后果。此外,恶意行为者可以通过使用伪造的 chaddr 向 DHCP 服务器发送大量请求来尝试饥饿攻击。这可能会阻止合法用户获得 IP 地址。

每当客户需要一个 IP 地址时,它就开始通过四个步骤的 DORA 过程。让我们仔细分析一下这个过程。

获取 IP 地址

DORA 流程经历了四个阶段,如所示:

  • DHCP Discover :这个过程始于客户端在网络上发出广播,请求 IP 地址。

  • DHCP Offer :服务器通过提供一个 IP 地址来响应。在回复中,通常有许多参数。

  • DHCP 请求:客户端正式请求 IP 地址。

  • DHCP ACK: The server offers an IP address.

    注意

    DHCP 过程通常用四个步骤来描述。然而,实际上有两个操作——客户端请求 IP 地址,客户端正式请求 IP 地址。因此,前两个和后两个数据包的 XID 可能不同。

在这一节中,我们将概述每个步骤中发生的事情,从客户端尝试定位服务器开始。

搜索 DHCP 服务器

当主机需要 IP 地址时,它通过向子网发出 DHCP Discover广播消息来开始 DORA 进程。chaddr 与客户选择的 XID 一起列出。

Discover包中,可能有请求附加配置参数的 DHCP 选项,以及对 IP 地址的可能建议。

如果在与 DHCP 客户机相同的子网上没有 DHCP 服务器,中继代理将需要从另一个子网上的 DHCP 服务器请求 IP 地址。

一旦广播在 LAN 上发出,一台或多台 DHCP 服务器将响应一个提议。

提供地址

一旦服务器接受了Discover数据包,下一步就是检查 DHCP 池中可用的 IP 地址。如果有可用的地址,服务器将记录 XID 并返回一个 DHCP offer。

报价将有一个供客户使用的网络地址,以及租赁时间参数。此外,客户端可能会在 DHCP Discover数据包中发送对所请求选项的响应。

注意

尽管客户端可能已经请求了一个特定的 IP 地址(例如,一个以前使用过的地址),但是服务器并不一定要接受这个请求。但是,最好的做法是向客户端提供一个请求的 IP 地址,以避免任何冲突。

此时,客户端将从一个或多个 DHCP 服务器接收提议。

请求地址

一旦客户收到报价,下一步就是正式请求 IP 地址。如果 DHCP 客户端收到多个提议,它将检查每个提议,并接受、丢弃或拒绝提议,如下所示:

  • 如果客户端接受来自服务器的 DHCP 提议,DHCP 请求消息将作为广播发送,其中必须包括服务器标识符选项,以及由 DHCP 服务器提供的 IP 地址。
  • 当客户端收到 DHCP offer 消息时,它将检查以确保 DHCP offer XID 与 DHCP discover 消息的 XID 相匹配。如果它们不匹配,客户端将放弃 DHCP 提供。
  • 如果客户端收到多个提议,它将通过向其中一个服务器发送 DHCP 拒绝消息来拒绝提议。

最后一步是服务器用一个 IP 地址或 DHCP NAK 来响应客户端,我们接下来会看到。

确认参数

在发送一个 IP 地址后,服务器等待客户机的响应。一旦服务器接收到广播,它将向客户端发送 DHCP 确认 ( DHCP ACK )以指示四包 DHCP 发现过程的完成。

确认数据包包含 IP 地址,以及客户端在 DHCP 请求数据包中请求的任何配置选项。

然而,有时服务器无法为客户端提供 IP 地址。如果发生这种情况,服务器将向客户端发送 DHCP NAK,客户端必须再次启动 DORA 进程。

DHCP NAK 消息很少出现,但是如果您在网络上看到多个 DHCP NAK 消息,您将需要评估客户端无法获得 IP 地址的根本原因。造成这种情况的一些原因如下:

  • 配置错误的 DHCP 地址池。
  • DHCP 地址池已耗尽(IP 地址已用完)。
  • DHCP 服务器是饥饿攻击的受害者。
  • 配置错误的 DHCP 中继代理。

好消息是,在大多数情况下,客户端会收到一个 IP 地址。此后,客户端将检查是否有任何其他主机正在使用相同的 IP 地址。

检查重复的 IP 地址

一旦客户端获得了一个 IP 地址,它将经历一个过程,以确保新分配的地址还没有被使用。

要检查重复的 IP 地址,可以使用以下方法:

  • 在 IPv4 网络上,客户端会将地址解析协议 ( ARP )请求从广播到网络上,然后等待另一台主机是否响应。
  • 在 IPv6 网络上,客户端会发送互联网控制消息协议 ( ICMPv6 )邻居请求消息。

如果一个 IP 地址已经被使用,客户端必须向服务器发送 DHCP 拒绝,并重新开始 DORA 过程。然而,在大多数情况下,IP 地址还没有被分配,所以客户端可以接受这个 IP 地址。

一旦客户端接受了 IP 地址,并且服务器发送了最终的 DHCP ACK,客户端就进入绑定状态,直到租期结束。接下来,让我们看看当客户端从服务器租用 IP 地址时会涉及到什么。

租用 IP 地址

租赁背后的想法是,网络地址只在短期内需要,在某个时候,主机将不再需要 IP 地址。这使得能够实现更加灵活的环境和有限 IP 地址的高效共享。

租用时间定义了客户端可以使用 IP 地址的时间长度,根据环境的不同而有所不同。

定义租赁时间

DHCP 租借时间默认为 24 小时(1440 分钟)。但是,该值通常由网络管理员设置,并且可能会有所不同,如下所示:

  • 在一个高度不稳定的环境中,客户停留的时间很短,例如在健身房或发廊,将租赁时间设置为 60-90 分钟是合适的。
  • 在短暂的环境中,客户会短暂停留,将租赁时间设置为 1 到 3 天是合适的。
  • 在稳定的环境中,主机很少移动,客户端会停留很长时间,将租用时间设置为 1 到 3 周是合适的。

当计时器开始计时时,租用时间会经历不同的状态,如下图所示:

Figure 14.5 – DHCP lease time process

图 14.5–DHCP 租用时间过程

一旦服务器发送了最终的确认,客户机就启动一个定时器来监控租用时间。定时器 1 ( T1 )至定时器 2 ( T2 )的值如下:

  • Rebind (T1)表示 50%的租用时间。
  • 续订(T2)占租赁时间的 87.5%。

随着租赁时间从 T1 移到 T2,会发生各种事件。让我们概述一下这个过程,从 T1 之前发生的事件开始。

接近更新阶段

一旦客户端获得租约,计时器就开始计时。当计时器逐渐接近 T1 时,客户可能(也可能不会)选择延长租期。如果客户端想要更新 IP 地址,更新数据包将直接发送到 DHCP 服务器。此时,如果服务器发送 DHCP ACK,租约将被续订,客户端将恢复到绑定阶段。

但是,如果服务器没有发送 ACK,并且已经过了 87.5%的时间,则客户端进入重新绑定阶段。

走向重新绑定阶段

如果服务器没有及时发送 DHCP ACK,客户端将通过在网络上广播 DHCP 请求消息来尝试重新绑定。如果服务器发送了一个 ACK,租约将被更新,客户端将返回到绑定到阶段。

但是,如果租约到期或服务器发送 NAK,客户端必须返回到 initiate 阶段,重新开始该过程。

现在您已经了解了 DORA 过程,让我们来看看 DHCP 报头,并回顾一下字段值、标志和端口号。

剖析 DHCP 报头

查看 DHCP 数据包时,您会看到报头中有许多字段,如下所示:

Figure 14.6 – DHCP packet structure

图 14.6–DHCP 数据包结构

要跟进,请从https://wiki . Wireshark . org/uploads/_ _ moin _ import _ _/attachments/sample captures/DHCP . PCA pand获取一份DHCP.cap的副本,并在 Wireshark 中打开它。展开帧 1 中的 DHCP 报头,如下所示:

图 14.7–DHCP 报头

正如我们所见,每个 DHCP 报头都包含关键字段和标识符。让我们更详细地看看这些。

检查 DHCP 字段值

在标题中,您将看到帮助 DORA 流程在各种状态间移动的关键字段。字段值如下所示:

  • 操作码 ( op ):表示报文类型;比如1 = BOOTREQUEST或者2 = BOOTREPLY。在 Wireshark 中,这显示为Message type,如前面的截图所示。

  • 硬件类型(h 类型):这定义了会话的连接类型。通常,这个字段被列为Ethernet (0X01),因为消息通常来自以太网或 802.11 客户端。

  • 硬件长度 ( hlen ):以字节为单位定义硬件地址的长度。以为例,在帧 1 中,长度为 6(字节),这是 MAC 地址的常见大小。

  • 跳数:该字段为,可选由中继代理使用。通常,该值设置为 0。

  • XID :由客户端选择,用于跟踪客户端和服务器之间的消息。

  • ( ):这指定了从开始 DORA 或更新过程以来已经过去的时间。该值由客户端设置。

  • 旗帜:有两个旗帜,如下:

    • 广播标志:该选项由客户端设置,指示服务器如何将消息发送回客户端。
    • 保留标志:未使用。
  • 客户端 IP 地址 ( ciaddr ):这是客户端的当前 IP 地址,只有当客户端处于以下三种状态之一时才会有一个值:绑定、续订或重新绑定。

  • 您的 IP 地址(yiaddr):DHCP 服务器提供的 IP 地址。

  • 服务器 IP 地址 ( siaddr ):响应请求的 DHCP 服务器的 IP 地址。

  • 中继代理 IP 地址 ( giaddr ):中继代理或网关的 IP 地址。

  • chaddr:客户端的 MAC 地址。

  • 服务器主机名 ( sname ):可选值,包含服务器的名称。

  • 引导文件:这是一个可选文件,用于预引导执行环境 ( PXE ),比如瘦客户端,其中设备通过网络引导。

  • Options: DHCP options are listed after the main header.

    注意

    在报头字段的末尾,您会看到一个名为Magic cookie: DHCP的字段,它提醒网络主机选项是 DHCP,而不是传统的Bootstrap Protocol (BOOTP)

当你在检查 DHCP 流量时,经常会看到像DHCPDISCOVERDHCPOFFER这样的消息。但是,DHCP 还使用其他一些消息来传递信息。

了解 DHCP 消息

DHCP 消息在客户端和服务器之间交换,以请求配置数据等信息或提供状态更新。下表概述了各种类型的消息及其用途:

 Table 14.2 – DHCP messages

表 14.2–DHCP 消息

在 DHCP 报头之后,可能会列出几个选项。在接下来的几节中,我们将简要了解一些我们可能会遇到的 DHCP 选项。

比较 DHCP 选项

DHCP.cap帧 1 的 DHCP 报头中,紧接着Magic cookie标识符之后,可以看到一个选项列表,如下所示:

Figure 14.8 – DHCP header

图 14.8–DHCP 报头

DHCP 可以有多个选项,如下所述:https://www . iana . org/assignments/BOOTP-DHCP-parameters/BOOTP-DHCP-parameters . XHTML

其中一些选项如下:

  • DHCP 选项 3 :路由器(或网关)地址
  • DHCP 选项 6 : DNS 服务器地址
  • DHCP 选项 50 :请求的 IP 地址
  • DHCP 选项 51 :该 IP 地址的租用时间
  • DHCP 选项 53 :报文类型

在每个选项中,将列出各种参数。例如,在帧 1 中,我们可以看到Option: (61) Client identifier,它列出了客户端的 MAC 地址,如下所示:

Figure 14.9 – DHCP Option 61

图 14.9–DHCP 选项 61

虽然有几个选项,但最常用的选项是Option: (53),它描述了消息的类型。例如,在下面的截图中,我已经展开了Option字段,您可以看到消息的类型是 DHCP Release:

图 14.10–DHCP 版本选项

现在我们已经了解了 DHCP 的一般作用和用途,以及报头字段值和选项,让我们来看一个 DORA 过程的例子。

以 DHCP 为例

当主机启动并试图加入网络时,他们必须做的第一件事就是获得一个 IP 地址。

在这一节中,我们将看看当客户端发布 DHCP 版本时,您可能会看到什么。然后,我们将逐步完成 DORA 过程,并概述当客户端获得 IP 地址时所采取的每个步骤的细节。

让我们先来看看当一个客户端释放他们的网络地址时会发生什么。

释放 IP 地址

有时您可能需要释放和更新 IP 地址,例如在故障排除练习期间。

在 Windows 机器上释放 IP 地址的一种方法是打开命令提示符并键入ipconfig /release。要更新 IP 地址,请键入ipconfig /renew

我做了手动释放,然后在用 Wireshark 捕获流量时更新。结果如下所示:

Figure 14.11 – DHCP Release and Renew

图 14.11–DHCP 释放和更新

第一帧中,可以看到我发布 IP 地址的地方,还有一个0xa7c87247XID,如下图所示:

Figure 14.12 – DHCP Release message

图 14.12–DHCP 释放消息

注意

当您发送 DHCP Release 消息时,服务器通过使用 chaddr(即18:47:3d:4d:35:bb)和 ciaddr(即10.0.0.75)来识别客户端。

一旦 DHCP 服务器收到释放消息,IP 地址就会返回到地址池中。

接下来,我进入ipconfig /renew命令,开始 DORA 进程,如图帧 2帧 3帧 4帧 5 。在这个多拉过程中,我们可以看到一个0xb5de0170XID

最后,在帧 6 中,一旦我接受了 IP 地址,我就发送一个 ARP 探测来检查重复的 IP,以确保我的 IP 地址没有被其他主机使用。

现在,让我们一起浏览一下 DORA 流程。要跟进,请在 Wireshark 中打开DHCP.cap,这样您就可以看到前四个数据包中 DORA 过程的四个步骤,如下所示:

Figure 14.13 – The four-packet DORA process

图 14.13–四包 DORA 流程

注意

虽然已经列出了各种选择,但我们将主要关注交易的细节。

该过程从客户端在网络上发送广播消息开始。

广播发现包

帧 1 中,我们可以看到DHCP Discover消息,如下图所示:

Figure 14.14 – DHCP Discover packet

图 14.14–DHCP 发现数据包

Discover消息中,您可以看到以下关键值:

  • Message type: Boot Request (1)
  • Transaction ID: 0xb5de0170
  • Your (client) IP address: 0.0.0.0
  • Client MAC address: 18:47:3d:4d:35:bb

此时,客户端的 IP 地址是0.0.0.0Transaction ID0x00003d1d,客户端和服务器都将使用它来跟踪事务。在帧 1 的选项中,我们没有看到对特定 IP 地址的请求。但是,如果被请求,服务器通常会提供客户端使用的最后一个地址。

一旦广播在局域网上发出,一台或多台 DHCP 服务器将响应一个提议。

发出要约

服务器接受Discover数据包后,下一步是检查 DHCP 池中的可用 IP 地址。如果有可用的地址,服务器将记录 XID 并返回一个 DHCP Offer。下一步是直接向 DHCP 客户端发送要约。请记住,可能有多个服务器向客户端发送要约。

帧 2 中,服务器为客户端提供一个 IP 地址,如下所示:

Figure 14.15 – DHCP Offer packet

图 14.15–DHCP 提供数据包

Offer消息中,您将看到以下关键值:

  • Message type: Boot Reply (2)
  • Transaction ID: 0x00003d1d
  • Your (client) IP address: 0.0.0.0
  • Client MAC address: 00:0b:82:01:fc:42

此时,客户端 IP 地址仍然是0.0.0.0,并且Transaction ID : 0x00003d1dDiscover消息相同。

在 DORA 过程中,DHCP 客户端可能会收到多个报价。如果发生这种情况,客户将检查每一项,接受、放弃或拒绝报价。如果客户机选择接受提议,下一步就是向服务器发送正式请求。

请求 IP 地址

一旦报价被接受,客户端就通过广播在网络上发送 DHCP 请求。

帧 3 所示,该请求将包括由 DHCP 服务器提供的Option: (54) DHCP Server Identifier (192.168.0.1)Option: (50) Requested IP Address (192.168.0.10):

Figure 14.16 – DHCP Request packet

图 14.16–DHCP 请求数据包

Request消息中,您将看到以下关键值:

  • Message type: Boot Request (1)
  • Transaction ID: 0x00003d1e
  • Your (client) IP address: 0.0.0.0
  • Client MAC address: 00:0b:82:01:fc:42

客户端的 IP 地址仍然是0.0.0.0,因为它没有 IP 地址。不过,Transaction ID现在是0x00003d1e.

最后一步是服务器用一个 IP 地址或一个 DHCP NAK 来响应客户机,我们将在下面看到。

确认要约

帧 4 中,服务器发送一个指示 IP 地址的最终确认,以及租用时间的参数,如下所示:

Figure 14.17 – DHCP acknowledgment packet

图 14.17–DHCP 确认数据包

在 ACK 消息中,您将看到以下关键值:

  • Message type: Boot Reply (2)
  • Transaction ID: 0x00003d1e
  • Your (client) IP address: 192.168.0.10
  • Client MAC address: 00:0b:82:01:fc:42

客户端的 IP 地址现在是192.168.0.10并且Transaction ID0x00003d1e

在这些选项中,我们可以看到租赁时间和其他参数的详细信息,如下:

Figure 14.18 – DHCP acknowledgment options

图 14.18–DHCP 确认选项

此时,客户端有了一个 IP 地址,租约计时器开始倒计时。客户端现在可以开始与网络上的其他主机进行交易。

总结

DHCP 是几乎所有局域网都使用的基本协议。如果配置得当,DHCP 是一种无缝分配 IP 地址的方式,几乎不需要干预。在本章中,我们讲述了 DHCP 的用途,并了解了它在为主机提供 IP 地址和配置细节方面的重要作用。我们发现了中继代理的作用,概述了 IPv6 获取 IP 地址的各种方式,并简要讨论了使用 DHCP 时的安全问题。

然后,我们查看了 DORA 流程—discoverofferrequestacknowledge——并研究了 DHCP 租借时间的机制。现在,您应该对 DHCP 报头字段值以及消息类型有了更好的理解。此外,您应该能够识别各种 DHCP 选项。我们总结了这一点,把所有的东西放在一起,并逐步通过一个 DHCP 示例。我们从最初的网络广播发展到提供和正式请求,再到主机获得 IP 地址以便在网络上通信。

在下一章,我们将研究超文本传输协议 ( HTTP ),一种用于浏览网页的应用层协议。我们将学习 HTTP,包括可用的版本和连接方法,并剖析客户机和服务器的头和字段。之后,我们将比较请求和响应消息,看看当我们跟踪一个 HTTP 流时能学到什么。

问题

现在,你该检查一下你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. DHCP 过程从一个(n) ___ 数据包开始,该数据包在网络上发出广播请求 IP 地址。
    1. 提供
    2. 请求
    3. 发现
    4. 呼吁
  2. DHCP _____ 数据包由客户端发送,并正式向服务器请求 IP 地址。
    1. 提供
    2. 请求
    3. 请愿
    4. 呼吁
  3. 获取 IPv6 地址的一种方法是使用 _ _ _ _ _ 自动分配 IP 地址。
    1. 自动请求
    2. 就绪选项
    3. 松木期权
    4. 打起精神来
  4. DHCPv6 客户端使用 UDP 端口546。服务器和中继代理使用端口 _____。
    1. 546
    2. 547
    3. 68
    4. 67
  5. 在 DHCP 报头中,____ 以字节为单位定义了硬件地址的长度。
    1. htype
    2. XID
    3. ciaddr
    4. 选吧
  6. DHCP 有几个选项。选项 50 代表 _____。
    1. DNS 服务器地址
    2. 请求的 IP 地址
    3. 此 IP 地址的租用时间
    4. 消息的类型
  7. 当您发送 DHCP Release 消息时,服务器识别客户端的方式是同时使用 chaddr 和 _____。
    1. ciaddr
    2. 旗帜
    3. 贾克德
    4. htype

延伸阅读

请参考以下链接,了解有关本章所涵盖主题的更多信息:

十五、解码 HTTP

在某种程度上,我们大多数人都访问过网页来下载信息。但是当检索一个网页的时候会涉及到什么呢?在这一章中,我们将仔细研究一下超文本传输协议 ( HTTP )。我们将从概述开始,回顾我们在请求内容时可以获得的一些对象和元素。然后我们将比较可用的 HTTP 版本,1.0、1.1 和 2.0,以及使用的方法,比如GETPOSTHEAD。HTTP 有三个版本,每个版本都有一个默认的建立和维护连接的方法。为了让您理解不同方法的机制,我们将比较非持久连接和持久连接之间的差异。

HTTP 是一种无状态协议。您将了解 HTTP 如何通过跟踪每个事务的细节来使用 cookies 维护状态。为了帮助您对 web 连接进行故障诊断,我们将回顾在事务期间发生了什么,并检查请求和响应消息的一般格式。我们将剖析客户机和服务器的 HTTP 头和字段。然后,我们将通过一个 HTTP 流对此进行总结,然后在检查事务 时分解每个元素。

本章将通过涵盖以下主题来解决所有这些问题:

  • 描述 HTTP
  • 跟踪连接
  • 比较请求和响应消息
  • 跟随 HTTP 流

描述 HTTP

HTTP 是一个应用层协议,负责在客户端浏览器和 web 服务器之间交换数据。HTTP 允许我们收集、分发、协作和传播广泛的数据。虽然是一个无状态协议,但 HTTP 有几个请求方法、错误代码和头,允许我们从许多不同类型的应用访问资源。

注意

HTTP 用于通过网络传输数据。另外两个传输数据的协议包括文件传输协议 ( FTP )和简单邮件传输协议 ( SMTP )。所有的都是提供有效的数据交换方式的关键。

在这一节中,我们将从概述网页的定义开始,并描述 HTTP 在从网站检索对象中的功能。我们将比较客户机和服务器的角色,概述目前使用的版本,然后总结不同类型的 HTTP 方法。

让我们从回顾网页的元素开始。

剖析网页

使用一个浏览器,比如 Firefox 或者 Chrome,客户通过点击一个超链接来请求一个页面。该链接将客户端定向到一个网站,该网站是一组链接的网页,服务器将所请求的数据发送给客户端。

我们点击的第一页被称为索引默认,这是我们大多数人在搜索内容时的起点。一旦进入网站,每个页面都包含对象,如超文本标记语言 ( HTML )文件、联合图像专家组 ( JPEG )图像、文本、应用和/或 JavaScript。大多数网站都有许多链接页面,这些页面超链接到网站内的其他内容,以及各种可以提取的信息和对象。

在较高层次上,HTTP 将检索包含元素的网页,如下图所示:

Figure 15.1 – A standard web page

图 15.1-标准网页

在下载任何对象之前,客户端必须首先访问网页。接下来,让我们回顾一下从网站请求数据时资源是如何定位的。

寻找目标

当一个客户端请求一个网页时,用户将点击一个链接,使用一个统一资源标识符 ( URI )请求一个对象,该标识符用于在互联网上标识一个对象(或资源)。一个 URI 的两个子集是一个统一资源定位符 ( URL )和一个统一资源名称 ( URN )。

在某些情况下,客户端会向服务器请求特定的页面。例如,如果请求 https://www.nist.gov/blogs/cybersecurity-insights,,URL 将以下列方式分解:

  • 主机名:主机的名为www.nist.gov
  • 路径:具体资源的路径为/blogs/cybersecurity-insights

一旦请求到达目标,下一步就是使用标准或加密连接与服务器交互。

建立联系

当客户端发起与 web 服务器的连接时,它们将根据连接类型使用或者传输控制协议 ( TCP )端口80或者端口443,如下所述:

  • TCP 端口80用于标准的未加密连接。

  • TCP port 443 is used for a secure, encrypted connection.

    注意

    在某些情况下,可以使用备用端口(如http-alt 8080http-alt 8008)访问服务器。

如今,使用安全连接很常见,因为大多数网站都使用加密来保护数据交易。当访问一个安全网站时,URL 将使用 HTTP Secure ( HTTPS )前言进行识别。HTTPS 使用传输层安全性 ( TLS )来保护客户端和服务器之间的所有事务。即使有人能够获得数据流,如果没有适当的密钥来解密数据,他们也不能读取内容。

一旦定位到目标,客户端将向服务器发出请求。每一方在 web 事务中都有一个特定的角色,这将在下面讨论。

比较客户端和服务器角色

HTTP 是一种客户端-服务器模型,客户端向服务器发出请求,服务器响应客户端,如下图所示:

Figure 15.2 – HTTP request and response

图 15.2–HTTP 请求和响应

一个客户端是一个主机,它使用浏览器启动每个会话,与服务器接口并检索对象。

服务器是一台永远在线的主机,具有固定互联网协议 ( IP )地址,使用专用的网络服务器软件。虽然有几种 web 服务器应用,但下面列出了前三种:

  • Apache 是当今最流行的开源 web 服务器应用之一。Apache 有一个完整的模块库,支持一组丰富的特性,甚至可以支持最大的站点。
  • nginx(或引擎 X)是第二大流行的开源 web 服务器应用,健壮、可伸缩且易于配置。
  • Cloudflare 是一个流行的选项,用于托管网站并帮助防止恶意攻击,如分布式拒绝服务 ( DDoS )攻击。

每当请求一个网页时,版本将是 HTTP 版本 1.0、1.1 或 2.0,如下所述。

了解 HTTP 版本

HTTP 目前有三个版本在使用。每个都有一个相关的意见征询 ( RFC ),如下所示:

  • RFC 1945 中概述的 HTTP 1.0 ,写于 1996 年。这是最初的版本,是在我们刚刚开始看到互联网可能带来的好处时由开发的。这个精简版提供了有限的功能,只有 16 个响应代码,并且没有一个安全的方法来验证用户与网站的交互。
  • RFC 2068 中概述的 HTTP 1.1 写于 1996 年,在 1.0 版本之后不久。这个版本有许多改进,包括身份验证、改进的性能、重用会话的能力、扩展的状态代码以及细粒度的错误报告。
  • HTTP 2.0 ,在 RFC 7540 中概述,写于 2015 年,由谷歌开发的实验性协议 d 演变而来,称为 SPeeDY ( SPDY )。v2 通过压缩 HTTP 报头来减少开销,多路传输请求和响应,并主动将内容推送到客户端,从而减少延迟并提高效率。

三个版本都在使用中;然而,你很可能会看到今天的大多数网络流量的 1.1 和 2.0 版本,因为这些版本提供了改进的性能。

在进行分析时,您会看到在 HTTP 头中列出了一个方法,该方法将指示所请求的操作类型。

识别 HTTP 方法

HTTP 主要用于获取对象,并使用各种方法与 web 服务器交互以交换信息。下表描述了一些最常用的方法:

Table 15.1 – Common HTTP methods

表 15.1–常见的 HTTP 方法

虽然有几种 HTTP 请求方法,但最常用的两种是GETPOST

在下一节中,我们将比较连接方法,并介绍如何使用 cookies 来跟踪事务。

保持对连接的跟踪

HTTP 的每一个版本都在传输和处理数据的方法上有所发展,使用了一些技术,比如使用具有流水线目标的持久连接来优化连接。此外,因为 HTTP 是一种无状态协议,所以 cookies 用于维护有关连接的客户端信息,例如购物车元素和客户端访问过的页面。

在这一部分,我们将比较建立和维护连接的不同方法,以及如何使用 cookies 来保存状态信息。让我们从比较连接类型开始。

评估连接类型

当 HTTP 版本被开发出来时,它只有最少的功能,并且使用非持久连接。随着 1.1 版的推出,增加了一些增强功能。其中一项改进是通过使用持久连接保持数据移动的能力。

让我们从理解非持久连接的机制开始。

使用非持久连接

非持久连接是从网页中获取内容的原始方式之一。该方法以下列方式工作:

  1. 客户端从 web 服务器请求内容。
  2. 服务器将内容返回给客户端。
  3. 连接已关闭。

如果客户机想要从 web 服务器获得更多的内容,必须建立一个新的连接,导致每个请求和响应都有一次往返。可以想象,所有的往返和连接都会增加延迟。

非持久连接有两种方法,如下所述:

  • 非并行(或串行)连接一次使用一个连接。
  • 并行连接使用多个并发连接。

如果可能,使用并行连接,因为这将提高获取对象的整体效率。

使用 HTTP 版时,默认情况下使用非持久连接。HTTP 版本 1.1 通过提供持久连接改进了连接方法,如下所述。

提供持久的连接

为了优化连接,HTTP 版引入了使用持久连接来保持会话活动,直到检索到所有对象。这种类型的连接也称为 HTTP 保持活动,因为它避免了每次发出请求时都必须重新建立新的连接。

注意

尽管在 1.1 版中保持活动的想法是正式的,但 1.0 版采用了一种非正式的方法来保持会话活动。这就是为什么您可能会在事务期间看到使用 keep-alive 的 HTTP 1.0 流量。

使用时,HTTP 头可以设置超时,并定义客户端可以发出的最大请求数。

保持活动数据包在客户端和服务器之间发送,以保持会话活动,并验证两端是否仍在响应。保活数据包没有任何数据;它设置了确认 ( 确认)标志,并且序列号被设置为比当前序列号少 1。

HTTP 版改进了这一选项,允许多个并发事务合并到一个连接中。

HTTP 1.1 将持久连接作为默认模式。接下来,让我们看看持久连接如何受益于一个叫做流水线的概念。

流水线数据传输

为了优化使用持久连接的数据传输,HTTP 可以使用管道技术,它保持与服务器的连接,直到获得所有对象。管道提高了数据事务的效率,因为客户端可以立即继续请求对象,而无需等待服务器发送之前的请求。

服务器不是在请求-响应事务后关闭每个连接,而是保持连接打开并等待进一步的请求。使用管道的持久连接是 HTTP 1.1 中的默认连接方法。就建立连接而言,这种类型的连接需要更多的开销。此外,由于服务器正在等待多个请求,它可能会在短时间内处于空闲状态。但是,这种类型的连接是首选,因为它提高了从 web 服务器获取对象时的整体效率。

因为 HTTP 是一种无状态协议,所以 cookies 用于跟踪每个事务的细节。

用 cookies 维护状态

当使用 HTTP 时,服务器和客户机本身都不维护关于事务状态的信息。为了克服这个问题,HTTP 使用了 cookie 的概念。

cookie 是服务器创建的字符串,可以放在用户的系统上,然后由用户的浏览器管理,与服务器交互。一旦用户接受了 cookie,cookie 中包含的信息就可以用于以下原因:

  • 认证:在用户提供登录信息后,该数据可以作为单点登录 ( SSO )的形式与网站进行交互。
  • 个性化用户体验(UX):cookie 可以收集购物模式的数据。这个将通过保留以前访问过的对象并定期向客户端呈现信息来改善购物体验。

要进一步了解在 HTTP 对话中使用的 cookie,请访问HTTP://tcpreplay . app neta . com/wiki/captures . html # big flows-pcap。一旦到了那里,下载bigFlows.pcap以便你可以跟随。

转到帧 912 ,然后展开 HTTP 头。在那里,您将看到 cookie 和 cookie 对,如下面的屏幕截图所示:

Figure 15.3 – Viewing cookies in an HTTP header

图 15.3–查看 HTTP 报头中的 cookies

在大多数情况下,cookies 被设计成有帮助的;但是,它们可能会带来隐私风险,因为它们可以收集营销统计数据和个人信息。这就是为什么在大多数情况下,用户能够选择不允许 cookies 出现在他们的系统上。

在某些情况下,会将 cookie 发送到服务器进行维护和检索,以供客户端将来访问。然而,如果一个 cookie 没有被发送到服务器,它就被认为是非持久的,并且会发生以下情况之一:

  • cookie 将过期。
  • 当用户关闭浏览器时,cookie 将被删除。
  • 用户将移除(或删除)cookie。

在 HTTP 事务中,客户端和服务器之间有一系列的请求和响应。在下一节中,我们将研究请求和响应消息的一般格式。

比较请求和响应消息

当与网页交互时,客户端会向服务器请求对象。在大多数情况下,标准事务包括来自客户端的请求和来自服务器的响应。因为客户端和服务器都传递不同的消息,所以消息头略有不同。在这一部分中,我们将从较高的层次上了解客户机和服务器的 HTTP 头和字段。

让我们从检查 HTTP 请求的元素开始。

查看 HTTP 请求

当查看客户端请求时,您很可能会看到一个请求行,后跟标题行,如下图所示:

Figure 15.4 – HTTP request format

图 15.4–HTTP 请求格式

每个请求消息都将指示方法(如GETPOST)和 URL,以及附加参数。以下情况也很常见:

  • \r符号,用于表示回车
  • \n符号,用于表示换行符

标题中的两个符号都提供了格式指南,表示该特定行内容的结尾。要查看示例,返回bigFlows.pcap并选择帧 183 。然后,展开 HTTP 标头,如下所示:

Figure 15.5 – HTTP GET request

图 15.5–HTTP GET 请求

HTTP 请求用于检索对象。大多数 web 服务器提供丰富的交互式内容。因此,标头必须指示客户端可以支持的内容类型。在一个 HTTP 请求中,您将会看到一个对多用途互联网邮件扩展 T2 标题的引用。接下来我们来探讨一下。

查看 MIME 标题

MIME 被设计成以各种格式呈现数据,包括文本、图像、音频、应用和视频。最初开发 MIME 头是为了支持电子邮件,后来成为 HTTP 发展的一部分。

当服务器接收到 HTTP 请求时,请求行将列出客户机想要的内容,以及浏览器支持的 HTTP 版本。之后,MIME 头包含与客户端可以支持的内容类型相关的字段。这里显示了一个示例:

Figure 15.6 – HTTP request with a MIME header

图 15.6–带有 MIME 头的 HTTP 请求

MIME 头包含浏览器版本等值,以及客户端将接受的字符编码和对象。

一旦服务器收到请求,它将向客户端发送响应。报头格式与 HTTP 请求非常相似;但是,这包含特定于服务器响应的详细信息。

回应客户

来自服务器的 HTTP 响应以状态行开始,表示版本、状态代码和原因。在状态行之后,结构类似于 HTTP 请求,因为我们发现标题行,如下图所示:

Figure 15.7 – HTTP response format

图 15.7–HTTP 响应格式

在状态代码和标题行之后,您将看到消息体,它可以包含客户请求的项目,以及交易的细节。

HTTP 响应的主要元素之一是消息的状态。HTTP 通过使用特定的代码来指示状态,如下所述。

了解状态代码

状态码显示在 web 服务器对客户端响应消息的第一行。状态代码按类别分组,如下所示:

  • 1xx 信息:提供关于交易的一般注释,例如请求已经收到和/或流程正在进行
  • 2xx 成功:表示服务器能够肯定地接收和处理请求
  • 3xx 重定向:表示客户端必须被重定向到另一个资源才能完成请求
  • 4xx 客户端错误:表示请求包含无效语法或由于某种原因无法满足
  • 5xx 服务器错误:当服务器一方无法完成动作或请求时,出现

虽然有许多状态代码可用,但一些最常见的代码包括:

  • 200 OK :这是最常见的状态码,代表服务器能够成功返回请求的对象。
  • 301 永久移动:这个表示请求的对象在 URL 上不再可用,已经永久移动到新的位置。
  • 400 错误请求:这个状态意味着 HTTP 客户端请求无效,无法被服务器处理。
  • 404 未找到:如果在服务器上未找到请求的对象,则返回此状态。

在状态行之后,您将看到 MIME 头中与响应相关的各种元素,如下所述。

描述 MIME 标头

每当你从一个网页中检索数据时,你的浏览器会正确地格式化请求。反过来,服务器将响应请求并传送数据。然后,浏览器会将结果呈现给客户端。

当服务器向客户端返回对象时,MIME 头中有各种元素,如下所示:

Figure 15.8 – MIME fields in an HTTP response

图 15.8–HTTP 响应中的 MIME 字段

字段值定义了诸如内容类型、来源和长度等细节。

在下一节中,让我们探索从发出请求到显示对象再到关闭连接的过程。

跟随 HTTP 流

为了更好地理解请求和接收网页时会发生什么,我们将通过一个 HTTP 流来逐步完成这个过程。在检查 HTTP 事务时,我们将进一步分解每个元素。

注意

请记住,每个 HTTP 会话都是不同的。这个示例将提供一个示例,说明在查看 HTTP 对话时您会看到什么。在真正的分析练习中,您很可能需要研究一些不同字段值的含义。

对于这个例子,我们将使用HTTP.pcap,因为它是一个完整的对话。要获取副本,请前往 https://www.cloudshark.org/captures/0012f52602a3,然后下载文件并在 Wireshark 中打开。打开后,展开 TCP 标题下的帧 1 ,您将看到以下内容:

[Conversation completeness: Complete, WITH_DATA (31)]

这是一个只有 40 个数据包的小捕获,因此不难看到完整对话的所有元素。但是,查看主机之间活动的一种方法是运行流程图。要查看整个对话,进入统计菜单选项,然后选择流程图。Wireshark 将运行该图,如下面的屏幕截图所示:

Figure 15.9 – Viewing the HTTP flow

图 15.9–查看 HTTP 流

一旦进入流量图设置,您可以选择限制以显示过滤器,如图表左侧所示。但是,因为这个捕获只包含一个对话,所以这是不必要的。

查看流程图后,退出窗口,以便我们可以专注于捕获。要查看客户端和服务器之间的对话,将光标放在帧 4 上,单击右键,选择跟随 | TCP 流,如以下截图所示:

Figure 15.10 – Following the TCP stream

图 15.10–跟随 TCP 流

选中后,Wireshark 将出现一个窗口,显示以下对话:

Figure 15.11 – Viewing Follow TCP Stream

图 15.11–查看跟随 TCP 流

在窗口中,您将看到以下内容:

  • 客户端请求在窗口的上方,如图所示,图 15.11 使用红色字体
  • 服务器响应,从窗口中间开始,如图图 15.11 所示,使用蓝色字体

现在我们已经看到了整个对话,让我们来看一下整个过程。第一步是客户端使用三次握手与服务器建立联系。

开始对话

在交换任何数据之前,该过程从三方握手开始,我们在HTTP.pcap帧 1帧 2帧 3 中可以看到,如下图所示:

Figure 15.12 – Viewing a three-way handshake

图 15.12–查看三次握手

三次握手是客户端(192.168.1.140)和服务器(174-143.213.184)之间的同步 ( SYN )和 ACK 数据包的交换,在这里有更详细的描述:

  • 客户端通过向服务器发送一个 SYN 数据包来开始这个过程。
  • 服务器通过向客户端发送 SYN-ACK 来响应。
  • 客户端通过向服务器发送 ACK 进行响应。

没有数据交换,因为握手只是建立连接。建立之后,下一步是客户端向服务器发出请求。

请求数据

第 4 帧开始了对话,客户端向服务器请求图像。HTTP 头如下面的截图所示:

Figure 15.13 – Client-side HTTP request

图 15.13–客户端 HTTP 请求

当检查客户机请求时,我们看到 HTTP 头中有几个值。第一行是从服务器请求数据的GET方法。以下是该请求的参数:

  • Request Method : GET,客户端用来从服务器获取信息。
  • Request URI:客户端正在使用img/layout/logo.png路径请求logo.png图像。
  • Request Version:客户端正在使用HTTP/1.0

按照GET方法,您将看到这些值:

  • User-Agent:列出的用户代理是Wget/1.12: (linux-gnu),是一个简单的非交互浏览器,用于使用 HTTP、FTP 等方法获取文件。
  • Accept:列出*/*,这是一个通配符值,表示客户端将接受任何 MIME 类型的对象。
  • Host:请求的主机是packetlife.net
  • Connection : Keep-Alive列为连接方式,告知服务器继续发送数据,无需打开新的连接请求。

在字段值之后,我们可以看到 Wireshark 生成的三个详细信息,如下所述:

  • [Full request URI: http://packetlife.nimg/layout/logo.png]:这是一个超链接,指向所请求对象的确切位置。
  • [HTTP request 1/1]:这表示该请求是一(1)个 HTTP 请求中的第一个。
  • [Response in frame: 36]:这是一个超链接,指向包含 HTTP 响应的框架。

在客户机请求被发送到服务器之后,数据被发送到客户机。从第 5 帧第 35 帧,您将看到一系列来自客户端和服务器的 ACK 数据包,它们确认数据正在被传输和接收。

一旦完成,服务器将响应客户端,并指示所有数据都已发送。

回应客户

帧 36 中,我们看到服务器返回了一个Status Code: 200 OK响应,意味着数据已经被成功传送。

与请求数据包不同,我们看到 HTTP 响应中包含更多信息,如下面的屏幕截图所示:

Figure 15.14 – Server-side HTTP response

图 15.14–服务器端 HTTP 响应

当检查服务器响应时,我们看到 HTTP 头中有几个值。数据传输的第一行是 Wireshark 生成的值,表示响应的状态,如下所示:

[专家信息(聊天/序列):HTTP/1.1 200 OK\r\n]

该行定义HTTP/1.1 200 (PNG)属于专家信息控制台中的Chat严重性。要查看这个,选择 Wireshark 界面左下角的青色Expert Info图标。打开后,展开第二个Chat条目,将显示以下信息:

Figure 15.15 – Viewing Expert Information entries

图 15.15–查看专家信息条目

在 Wireshark 生成的值之后,您将看到以下内容:

  • Response Version:该值表示服务器使用的是 HTTP 版本 1.1。
  • Status Code:在这种情况下,数据传输成功,所以服务器返回一个Status Code 200响应。
  • [Status Code Description: OK]:这一行是 Wireshark 生成的值,表示响应没有问题。
  • Response Phrase:该字段值为OK,表示数据传输成功。

在交易的详细信息之后,您将看到以下值:

  • Server:该字段将网络服务器列为nginx/0.8.53。nginx 是一种流行的开源 web 服务器,是 Apache 的替代产品。
  • Date:该字段标记对象被访问的日期和时间,并用于监控用于缓存计算的资源的年龄。第 35 帧Tue, 01 Mar 2011 20:45:16 GMT列为日期。
  • Content-Type:这个字段提供了一个关于什么类型的对象被返回给客户端的参考。第 35 帧Content-Type列为image/png,是便携图形格式 ( PNG )格式的图像。
  • Content-Length:该字段列出了图像的长度,为21684字节。在字段值下面,您将看到 Wireshark 生成的一个[Content length: 21684]值。这个值将与 HTTP 头底部的Portable Network Graphics头匹配。如果将光标放在标题上,您将看到状态栏中反映的值,如下面的屏幕截图所示:

Figure 15.16 – Content length of the image

图 15.16–图像的内容长度

  • Last-Modified:该字段值将指示页面上次修改的时间,列为Fri, 21 Jan 2011 03:41:14 GMT
  • Connection:该值被列为keep-alive(或持久)连接。
  • Keep-Alive:这个字段值列出了timeout=20,它是一个由服务器设置的值(以秒为单位),表示在关闭连接之前保持对话的时间。

在网络上,缓存的概念很重要,因为在大多数情况下,发出请求的主机希望收到尽可能最新的副本。缓存值用于标识页面的年龄。

控制缓存

网络上的大多数对象通常都有超时值。接下来的几个值提供了一种监控页面年龄的方法。条目包括以下内容:

  • Expires:该值指定对象何时到期。在第 35 帧中,到期日期列为Wed, 29 Feb 2012 20:45:16 GMT

  • Cache-Control: This value is listed as max-age=31536000.

    注意

    在很少变化的资产上,习惯上把Cache-Control值设为max-age=31536000,代表 1 年的秒数。

  • Cache-Control:该字段值被列为public,这意味着这些值可以存储在共享缓存中。其他值可以包括privateno-cache

  • Vary:该字段表示缓存服务器支持的内容类型。在这种情况下,值为Accept-Encoding。如果该指示器不存在,则格式可能存储不正确,并且当客户端检索页面时,它可能会以不可读的格式呈现页面。

  • Accept-Ranges:该字段值指示当响应客户端的数据请求时,服务器将使用哪个单元。字段值列为bytes,很常见。

在 HTTP 字段值的末尾,我们看到了Portable Graphics Format头,这表明该对象是一个 PNG 文件。接下来,我们来考察一下图像。

导出对象

如果捕获中有未加密的对象,您可以在 Wireshark 中导出它们。要查看HTTP.pcap文件中的内容,进入文件菜单选项,然后选择导出对象 | HTTP… ,将会出现以下窗口:

Figure 15.17 – Viewing Export HTTP object list

图 15.17–查看导出 HTTP 对象列表

如果您想让查看内容,点击图像并选择保存,这将弹出一个对话框,让您选择保存文件的位置。保存后,您可以打开图像,如下所示:

Figure 15.18 – The extracted image

图 15.18–提取的图像

一旦数据传输完毕,客户端不再请求对象,下一步就是结束对话。

结束对话

在交易的结束时,客户端和服务器交换一系列的完成 ( FIN )和 ACK 包,如下图所示:

Figure 15.19 – Exchange of FIN-ACK packets

图 15.19–FIN-ACK 数据包的交换

虽然这是一个简单的数据事务示例,但它提供了一种理解客户机与 web 服务器交互的机制的可靠方法。

总结

HTTP 是一个丰富的协议,在一个事务中,数据将跨越几个网络,同时会遇到不同的客户端和服务器。因此,存在大量的规则和变量。在这次讨论中,我们主要关注客户机和服务器之间的 HTTP 请求-响应会话的关键元素。

我们首先逐步介绍了网页的关键元素,以及检索数据和对象时客户端和服务器的角色。我们回顾了不同的 HTTP 版本,并简要介绍了可用的 HTTP 方法。然后,我们继续学习不同类型的连接,以及 cookies 如何帮助维护事务期间的状态。最后,我们用一个完整 HTTP 对话的简单示例进行了总结。

在下一章中,我们将回顾地址解析协议 ( ARP ),并从概述这一基本协议的作用和目的开始。为了让您了解 ARP 是如何工作的,我们将介绍一个 ARP 事务,并仔细看看报头和字段值。我们将看到无偿 ARP 的重要性,并简要提及您可能会遇到的一些其他类型的 ARP 流量。最后,我们将了解 ARP 攻击以及如何识别和防御这些类型的威胁。

问题

现在,是时候检查你的知识了。选择以下问题的最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 两个主要的 HTTP 请求方法是GET和 _____。
    1. PUT
    2. DELETE
    3. POST
    4. STATE
  2. _____ 是当今最流行的开源 web 服务器应用之一,因为它拥有完整的模块库,甚至可以支持最大的网站。
    1. 云耀斑
    2. Microsoft IIS
    3. 升速
    4. 街头流氓
  3. HTTP 版本 _____ 通过压缩报头来减少开销,多路传输请求和响应,并主动将内容推送到客户端,从而减少延迟并提高效率。
    1. One
    2. One point one
    3. One point two
    4. Two
  4. 从 web 服务器传输数据时,持久连接会保持会话活动,直到检索到所有对象。这种类型的连接也称为 HTTP _____。
    1. 耀斑状态
    2. 并联接法
    3. 保持活力
    4. Cookie 状态
  5. 在 HTTP 头中,您可以看到在Cache-Control字段中列出的值3600。这意味着内容可以在缓存中保存 _____。
    1. 1 天
    2. 1 小时
    3. 1 年
    4. 1 个月
  6. _____ 最初是为支持电子邮件而开发的,旨在以各种格式呈现数据,包括文本、图像、音频、应用和视频。
    1. 升速
    2. 哑剧
    3. 饼干艺术
    4. nginx
  7. 网络上的大多数对象通常都有超时值。_____ 值提供了一种监控页面年龄的方法。
    1. 隐藏物
    2. 哑剧
    3. 饼干
    4. 状态

延伸阅读

请参考以下链接了解更多信息:

十六、了解 ARP

当数据在网络间传输时,数据包使用逻辑 or 互联网协议 ( IP )地址来识别目的主机。然而,在局域网 ( LAN )上,数据包使用物理或媒体访问控制 ( MAC )地址向主机传送数据。当数据包从网站通过互联网传输到局域网上的主机时,交换机只有一个 IP 地址来标识主机。设备如何定位目的主机?这是地址解析协议 ( ARP )的职责,它将 IP 地址解析为 MAC 地址,以便将数据传送到正确的主机。

在本章中,我们将了解 ARP 的工作原理,以及为什么它是确保数据及时传输的重要协议。然后,我们将进一步了解 Wireshark 中的 ARP 报头和字段。我们还将研究您在进行分析时可能遇到的不同类型的 ARP,包括无偿、反向、逆向和代理。最后,为了让您意识到 ARP 可能被恶意使用,我们将讨论 ARP 攻击以及防御这些类型威胁的可能方法。

本章将涵盖以下内容:

  • 理解 ARP 的作用和目的
  • 探索 ARP 报头和字段
  • 研究不同类型的 ARP
  • ARP 攻击与防御方法的比较

了解 ARP 的作用和目的

ARP 是三个主要网络层协议(ARP、IPv4 和互联网控制消息协议 ( ICMP )之一,所有这些都是传递数据的关键。

在下图中,我们看到 ARP 实际上位于开放系统互连 ( OSI )模型的第 3 层和第 2 层之间,因为 ARP 将 IP 地址(网络层)解析为 MAC 地址(数据链路层):

Figure 16.1 – The OSI model network layer protocols

图 16.1–OSI 模型网络层协议

注意

虽然 ARP 位于 OSI 模型的第 2 层和第 3 层之间,但许多人认为 ARP 是第 3 层协议。

在这个部分,我们将看看 ARP 如何解析 MAC 地址。然后我们将了解 ARP 缓存如何帮助提供更快的响应。此外,我们将发现 IPv6 网络如何使用邻居发现协议 ( NDP )将 IPv6 地址解析为 MAC 地址。

在使用 IPv4 的 LAN 中,帧头必须使用 MAC 地址来标识接收主机。为了获得正确的 MAC 地址,发送设备将在网络上发出 ARP 广播。在下一节中,让我们讨论一下为什么这很重要。

解析 MAC 地址

当数据通过不同的网络传输时,数据包使用一个 IP(或逻辑)地址。但是,要将数据传送到最终目的地,需要在帧头中放置 MAC(或物理)地址。设备将首先检查其本地 ARP 缓存。如果没有条目,设备会以广播的形式发出 ARP 请求,并等待回复。

注意

广播消息从一台主机发送到网络中的所有设备。虽然每台主机都会收到该帧,但只有一台主机会做出响应。

如下图所示,主机 A 需要网关的 MAC 地址,网关是局域网的路由器接口:

Figure 16.2 – ARP broadcast on a network

图 16.2–网络上的 ARP 广播

为了获得网关的 MAC 地址,主机 A 发出一个 ARP 请求。ARP 请求会问这样一个问题,“谁有 IP 地址10.40.10.101?告诉10.40.10.109,”并等待回复。然后网关发送一个 ARP 回复,让主机知道10.40.10.101在 MAC 地址BB:20:62:C4:57:23

现在我们已经了解了 ARP 请求和回复的基本知识,让我们在 Wireshark 中查看这个过程时,一步一步地看一下我们将会看到的。

查看 ARP 请求和回复

要查看 ARP 请求和回复的示例,以便您能够跟进,请访问https://crnet packets . files . WordPress . com/2015/08/ARP trace . zip,下载文件,将其解压缩,并在 Wireshark 中打开,如下所示:

Figure 16.3 – ARP request/reply

图 16.3–ARP 请求/回复

在 ARP 跟踪文件中,前两个数据包是 ARP 请求/回复。

帧 1 中,设备发送一个 ARP 请求。源地址和目的地址如下:

  • 源 MAC 地址是00:15:5d:0f:49:18,是请求解析的设备的 MAC 地址。
  • 目的 MAC 地址是ff:ff:ff:ff:ff:ff,是一个广播地址。

帧 2 中,设备通过 ARP 回复来识别自己。源地址和目的地址如下:

  • 源 MAC 地址是d4:be:d9:af:3e:4d,也就是 IP 地址为172.16.2.27的设备。
  • 目的 MAC 地址为00:15:5d:0f:49:18,是请求解析的设备的 MAC 地址。

请记住,在 Wireshark 中执行捕获时,在看到 ARP 回复之前看到几个 ARP 广播是正常的。

我们现在知道 ARP 将 IP 地址解析为 MAC 地址。这是因为设备有一个 MAC 地址,可以放在帧头中,以便在 LAN 上传送数据。为了使设备能够快速检索网络上设备的 MAC 地址,它将 IP 地址到 MAC 地址的配对保存在一个临时保存区中,称为 ARP 缓存。下一节将解释 ARP 缓存,它是如何使用的,以及表条目保留多长时间。

调查 ARP 缓存

网络设备,如路由器、交换机和 PC,持有一种形式的 ARP 缓存表,这是一个存储 IP 到 MAC 地址对的存储区域。要在 Windows 机器上查看自己的 ARP 缓存,请打开命令提示符并输入arp -a来查看 ARP 表中的条目,如下所示:

Figure 16.4 – Using the arp -a command

图 16.4–使用 arp -a 命令

在上图中,ARP 缓存表列出了以下内容:

  • 互联网地址:显示 IP 地址
  • 物理地址:显示对应的 MAC 地址
  • Type :显示条目是静态的(保持不变)还是动态的(定期刷新)

动态 ARP 缓存值将在一段时间后超时。一旦达到超时限制,条目将消失。如果操作系统 ( OS )需要 MAC 地址,而 ARP 表中没有条目,就需要发出新的 ARP 请求。

注意

ARP 表超时值是特定于系统的。例如,Cisco 交换机的默认超时计时器为 4 小时。

在 Windows 操作系统中,你可以通过进入命令行界面 ( CLI )并运行netsh interface ipv4 show interface NNN命令来确定超时值。

注意

使用该命令时,将NNN替换为您想要检查的接口的名称。

如屏幕截图所示,我们看到运行netsh interface ipv4 show interface Wi-Fi的输出,它提供了关于该界面的信息:

Figure 16.5 – Issuing the netsh show interface command

图 16.5–发出 netsh show interface 命令

在输出中,您将看到基本可达时间30000 ms 或 30 秒,这是 ARP 在离开之前可以在缓存中存在的时间。30 秒后,如果一个特定的 IP 地址需要一个 MAC 地址,系统必须在网络上发出一个 ARP 请求。

我们现在已经了解了 ARP 在 IPv4 网络中的工作原理,但是在 IPv6 网络中会发生什么呢?以下部分概述了 NDP 如何在 IPv6 网络中取代 ARP。

在 IPv6 中用 NDP 取代 ARP

ARP 在 IPv4 网络中是必不可少的,然而,IPv6 不使用 ARP。取而代之的是 NDP,它将 IP 地址解析为 MAC 地址。

要查看 NDP 的示例,请前往 http://packetlife.net/captures/protocol/icmpv6/的和 T2,并在 Wireshark 中打开IPv6_NDP.pcap文件。如下面的截图所示,trac e 文件中的第一个数据包是一个邻居请求 ( NS ),后面是一个邻居通告:

Figure 16.6 – Example of NDP

图 16.6-NDP 的例子

NS 与 ARP 广播的目的相同。然而,IPv6 不使用广播。它使用因特网控制消息协议版本 6 ( ICMPv6 )和被定向到特定主机的请求节点多播地址消息。因此,如果您正在分析一个仅使用 IPv6 的网络,您可能只会看到一些 ARP 广播(如果有的话)。

正如我们现在所了解的,ARP 是一种常见的协议,你很可能会在进行分析时看到,因为 IPv4 仍然被广泛地使用。为了让您更好地理解标准 ARP 请求和回复,以下部分提供了 ARP 报头和相应字段值的概述。

探索 ARP 报头和字段

而在一个跟踪文件中,如果你在显示过滤器中输入arp,你很可能会看到一系列的 ARP 请求和回复。在每个 ARP 报头中,有几个字段值,例如操作码 ( 操作码)、发送者和目标 IP 地址,它们有助于确保接收到 ARP 请求/回复。我们先来看一个典型的 ARP 交易。

识别标准 ARP 请求/回复

打开ARPTrace.pcapng,拿看一下前两个包,是 ARP 请求/回复。展开每个 ARP 请求/回复,您会看到 ARP 被包装在一个以太网帧中。但是,没有网络层或传输层报头。

首先,让我们研究一下 ARP 请求的组成部分。

检查 ARP 请求

要查看一个标准 ARP 请求,展开帧 1 。展开后,您可以看到有几个字段值,它们提供了有关事务的信息,如下所示:

Figure 16.7 – Frame 1 ARP request

图 16.7–帧 1 ARP 请求

我们在这个 ARP 请求中看到,172.16.2.3处的主机正在请求 IP 地址为172.16.2.27的主机的 MAC 地址。关键字段值包括Opcode,这表明这是一个请求,以及发送方和目标的 IP 地址。

ARP 回复类似于请求;但是,目标 MAC 地址将会出现。

评估 ARP 回复

帧 2 是 ARP 回复,在172.16.2.27的主机用其 MAC 地址d4:be:d9:af:3e:4f回复,如下图:

Figure 16.8 – Frame 2 ARP reply

图 16.8–帧 2 ARP 回复

关键字段值包括操作码(表明这是一个回复),以及发送方和目标的 MAC 和 IP 地址。一旦收到 ARP 回复,MAC 地址就被解析。

如图所示,ARP 报头有几个字段值,我们接下来将回顾这些值。

分解 ARP 报头字段

在这一部分,我们将回顾 ARP 字段值。为了让你理解每个领域的作用和目的,我将列举如下:

  • 字段的名称
  • 字节数
  • 字段的目的

要跟随,打开ARPTrace.pcapng并选择帧 22 。展开 ARP 报头,如下所示:

Figure 16.9 – Frame 22 ARP request

图 16.9–第 22 帧 ARP 请求

在 ARP 报头中,提供 ARP 交易信息的字段值在下表的中列出:

Table 16.1 – APR field values

表 16.1-APR 字段值

一些参数,比如操作码和硬件类型由一个数字表示。数值由iana.org定义,可以在这里找到:https://www . iana . org/assignments/ARP-parameters/ARP-parameters . XHTML

一些定义的值包括以下内容:

  • 硬件类型 31–IPsec 隧道
  • 硬件类型 18–光纤通道

现在我们可以看到标准 ARP 报头中的报头和字段,让我们看看在分析过程中可能遇到的其他类型的 ARP。

检查不同类型的地址解析协议

在 IPv4 网络中,最常见的 ARP 消息类型是请求和回复:

  • 标准 ARP 请求是在网络上发出的广播消息,请求将 IP 地址解析为 MAC 地址。
  • 标准 ARP 回复是发送给提供地址解析的请求主机的单播消息。

然而,正如我们将在本节中概述的,还有一些其他类型的 ARP 消息。我们先从反向地址解析协议 ( RARP )开始,它是 ARP 的反向。

逆向 ARP

与 ARP 相反的是 RARP,在 RARP 中,客户端通过使用其 MAC 地址向计算机网络请求其 IPv4 地址。

使用在https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do = view&target = rarp _ request . cap找到的示例rarp_request.cap,我们可以看到主机请求其 IP 地址,如以下截图所示:

Figure 16.10 – Viewing a RARP request

图 16.10–查看 RARP 请求

发送者的 MAC 地址是00:00:a1:12:dd:88。IP 地址未知,所以列为0.0.0.0。操作码是reverse request (3)

注意

RARP 是一个过时的协议,已经被更高效的协议取代,比如动态主机配置协议(DHCP);因此,你不会在局域网上看到任何 RARP 流量。然而,在虚拟化环境中使用 RARP 来保持 MAC 表的更新。

接下来,让我们看看一种不太为人所知的 ARP,叫做逆向地址解析协议 ( InARP )。

评估 InARP

InARP 是 ARP 协议的一个扩展。通过在 https://www.cloudshark.org/captures/87be3b4b6625访问 CloudShark,并在 Wireshark 中打开FrameRelay-101.pcap,我们可以看到这样一个例子,如下所示:

Figure 16.11 – An InARP example

图 16.11-InARP 示例

广域网 ( )Frame Relay是一种广泛使用的数据包交换方法在局域网之间传输数据。当彼此通信时,每个路由器的接口使用期望站的数据链路连接标识符 ( DLCI ),这是设备的硬件地址。

在解析 IP 地址时,InARP 的使用方式与标准 ARP 相同。但是,它不使用广播,因为它已经知道所需电台的 DLCI。如下图所示,发送路由器99.0.0.2试图使用 InARP 解析 DLCI 3091 的 IP 地址:

Figure 16.12 – InARP over Frame Relay

图 16.12–帧中继上的 InARP

帧中继的使用正在被淘汰,取而代之的是一种更有效的在广域网上传输数据的方法、 ( ATM )。因此,您很少会在捕获中看到 InARP。

虽然您在进行分析时可能看不到 InARP,但您很可能会看到一种更常见的 ARP,称为无偿 ARP,如下所述。

发布一个免费的 ARP

在局域网上,重复的 IP 地址会导致冲突。为了防止这种情况,主机发出一个无偿 ARP ,这是一个未经请求的 ARP,用于防止重复的 IP 地址。要查看示例,请访问https://www.cloudshark.org/captures/54af88021aa8,然后下载并在 Wireshark 中打开该文件。打开后,展开 ARP 头,如下所示:

Figure 16.13 – Gratuitous ARP

图 16.13-免费 ARP

在这个画面中,我们看到了Opcode: request (1)。然而,我们也看到Sender IP address: 192.168.130.128Target IP address: 192.168.130.128是一样的,它将帧识别为一个免费的 ARP。

注意

Wireshark 会将免费 ARP 识别为ARP Announcement

免费 ARP 请求作为广播发送;然而,预计不会有任何答复。除了检查重复的 IP 地址之外,这种类型的 ARP 还可以为主机提供一种共享 IP 和 MAC 地址对的方式。例如,如果网络设备的接口出现故障,然后又恢复正常,就会发送一个免费的 ARP,以便所有主机都可以更新它们的 ARP 表。

接下来,我们将看到一个实际上不是 ARP 类型的例子,而是网络上使用的一种叫做代理 ARP 的技术。

致力于成为 ARP 的一半

一个代理是代表另一个实体工作的东西。代理 ARP 是另一个实体解析 MAC 地址的技术。在网络中,有一些情况下可以使用代理 ARP。

使用代理 ARP 的一种方法是将主机隐藏在防火墙后面。

遮蔽宿主

当一台拥有公共 IP 地址的机器在防火墙后的私有网络中时,最好隐藏它的存在。

如果您的主机在防火墙后面,解析 MAC 地址的一种方法是让防火墙使用代理 ARP 与隐藏的设备往来。这将保持机器在防火墙前的公共端的假象。

当一个子网中的主机被代理路由器分开时,代理 ARP 也可以用在 LAN 中。

充当代理人

在局域网上,有时有必要使用代理 ARP。例如,当 ARP 广播发送到另一个子网中的主机时,代理 ARP 是必要的。因为 ARP 请求是一种广播,它会在路由器的接口处停止。

在这种情况下,路由器使用自己的 MAC 地址进行响应,并充当另一个子网中主机的代理。路由器会将自己的 MAC 地址作为源地址来封装 ARP 请求数据包,然后在适当的网络上发出广播,如下所示:

Figure 16.14 – Proxy ARP

图 16.14-代理 ARP

您现在可以理解,在局域网上可以使用许多不同类型的 ARP 报文和技术。ARP 是一个重要的协议,但也可能是一个易受攻击的目标。在下一节中,让我们来看看一些 ARP 攻击以及防御方法。

ARP 攻击与防御方法比较

ARP 是一种广泛使用的协议,它将 IP 地址解析为 MAC 地址。在大多数情况下,ARP 可以很好地确保设备能够找到彼此。但是协议是很多年前标准化的,一直没有办法保证 ARP 报文的真实性。

因此,我们将概述一些 ARP 攻击,它们会误导流量并干扰正常的网络行为。作为回应,我们还将看看防御这些类型攻击的一些方法。

让我们从介绍一些针对 ARP 的攻击开始。

比较 ARP 攻击和工具

ARP 在 LAN 上使用,这可能是一个易受攻击的目标。一些用于穿透 ARP 框架的攻击和技术包括欺骗和风暴,这可能会误导流量或导致网络问题。在本节中,我们将比较您或您的同事可能遇到的一些攻击。

让我们从使用 ARP 欺骗网络主机开始。

发现 ARP 欺骗

在 IPv4 网络上,ARP 是向正确的主机传送数据时使用的关键协议。恶意参与者可以通过在局域网上使用 ARP 缓存病毒(或 ARP 欺骗)攻击将流量重定向到他们的机器。这种中间人攻击是通过欺骗网络上的主机,使其相信恶意参与者的 MAC 地址是某个其他主机,目的是拦截流量。

注意

要更深入地了解 ARP 欺骗攻击,请参阅第一章**用信息武装黑客小节中的

*除了 ARP 欺骗之外,攻击者还可以发起 ARP 风暴,如下所述。

ARP 风暴回顾

在局域网上,看到 ARP 请求/回复消息是很正常的。但是,当有大量的 ARP 请求时,如下面的截图所示,这是一个 ARP 风暴的指示,是一种拒绝服务 ( DoS )攻击的形式:

Figure 16.15 – An ARP storm

图 16.15–一场 ARP 风暴

让我们一步步了解 ARP 风暴是如何工作的:

  1. 为了高效地传送数据,交换机使用一个内容可寻址存储器 ( CAM )表,该表包含成对的 MAC 地址及其关联的物理交换机端口。
  2. ARP 风暴淹没了 CAM 表,数以千计的虚假条目淹没了交换机。
  3. 此时,交换机只是充当一个集线器,从所有端口发送数据,这可能导致以下结果:
    • 允许可能暴露敏感数据的流量嗅探
    • 导致网络无法正常运行

如你所见,ARP 风暴是可能的。在 Wireshark 中,您可以监控 ARP 风暴。要对此进行修改,选择一个 ARP 头,单击右键,选择协议首选项 | 开放地址解析协议首选项… ,将显示如下截图:

Figure 16.16 – ARP/RARP preferences

图 16.16–ARP/RARP 首选项

一旦进入首选项菜单,您可以修改以下内容:

  • 期间检测的请求数:输入适当的值,例如30个请求。
  • 检测周期(毫秒):输入合适的值,例如100毫秒

虽然 Wireshark 不能阻止 ARP 风暴,但它可以帮助您识别潜在的攻击。

我们现在知道有欺骗和强攻等攻击。这些攻击是如何发动的?以下部分概述了一些可用于在局域网上发起 ARP 攻击的工具。

了解 ARP 攻击工具

ARP 攻击可能发生在局域网上。许多可用的工具都内置在 Kali Linux 中。Kali Linux 是一组软件工具,旨在帮助网络管理员在网络上进行道德黑客活动。如需完整列表,请访问 https://tools.kali.org/tools-listing。

Kali Linux 中用于发起 ARP 攻击的一些工具包括:

  • dsniff 是一套工具,包括 arpspoof ,它允许黑客广告一个欺骗的 MAC 地址,作为误导流量的一种方式。
  • Ettercap 是一款易于使用的 ARP 攻击工具,与其他工具一起可以拦截网络流量。
  • Arpoison 是一个免费的命令行工具,允许黑客定制一个 ARP 数据包,并定义发送者和目标地址。

如图所示,发起 ARP 攻击有多种方式,黑客有许多工具可供使用。以下部分概述了我们可以抵御 ARP 攻击的一些方法。

防御 ARP 攻击

如前所述,ARP 可能是一个易受攻击的目标。除了列出的攻击之外,还有其他攻击。网络管理员应该知道检测和防御这类攻击的方法。

一些防止 ARP 攻击的工具和技术包括:

  • 入侵检测系统/入侵防御系统 ( IDSs/IPSs ):调优设备监控异常 ARP 活动,如 ARP 风暴,通常有特定的特征。如果检测到未经请求的回复,设备应发送警报。
  • 静态 ARP 条目:硬编码地址映射,防止欺骗。虽然静态 ARP 条目可以防止 ARP 欺骗,但这不是最好的防御方法,因为它不能很好地适应大型网络。
  • 防火墙:使用带有包过滤的访问控制列表,确保只有授权的流量才允许通过网段。
  • 反 ARP 软件:这个软件监控欺骗,欺骗可以表现为两个 IP 地址有相同的 MAC 地址。很多时候,软件还会包含检测其他恶意 ARP 行为的方法。
  • 安全邻居发现 ( 发送):在 IPv6 网络上,可以使用发送协议。这是 NDP 的扩展,通过使用加密技术提供认证,并降低在局域网上成功发起 ARP 欺骗攻击的能力。

虽然网络有可能成为恶意 ARP 活动的受害者,但最好激活可能的防御策略,以防止严重的攻击。

总结

到目前为止,您已经对 ARP 有了更好的理解,它是如何工作的,以及为什么它对传送数据很重要。为了让您了解 ARP 请求和回复过程中发生了什么,我们逐步完成了这个过程,然后查看了 ARP 报头和字段值。我们还讨论了这样一个事实,即除了标准 ARP,您在 Wireshark 中分析流量时可能会遇到不同类型的 ARP,例如免费 ARP 或 InARP。最后,为了让您意识到 ARP 可能被恶意使用,我们讲述了一些攻击,以及一些用于发起 ARP 攻击的工具。然后,我们总结了一些您应该采用的方法来抵御各种类型的攻击。

下一章将介绍 Wireshark 如何帮助识别和排除网络延迟问题。您将能够体会到时间值在网络中的重要性,并发现几种显示时间的方法。此外,您将看到 Wireshark 中颜色规则的价值,以及帮助突出显示有趣流量的智能滚动条。最后,您将学习如何使用专家信息,以便您可以在分析过程中专注于问题点。

问题

现在,是时候检查你的知识了。选择最佳答案,然后将您的答案与评估附录中的答案进行核对:

  1. 在局域网中,____ 层使用目的机器的 MAC 地址,而不是 IP 地址:
    1. 网络
    2. 介绍会;展示会
    3. 数据传输器
    4. 运输
  2. ARP 操作码列出了发送方正在执行的操作。虽然有很多,但最常见的操作码是 _____:
    1. 10 和 12
    2. 0 和 8
    3. 7 amd 8
    4. 1 和 2
  3. 对于(n)_ _ _ _ _ _ _,客户端使用其 MAC 地址向计算机网络请求其 IPv4 地址:
    1. 吸进去
    2. 反向地址解析协议(Reverse Address Resolution Protocol)
    3. 无偿 ARP
    4. 代理 ARP
  4. ____ 是一种未经请求的 ARP,用于防止网络上出现重复的 IP 地址。不期待任何答复:
    1. 吸进去
    2. 反向地址解析协议(Reverse Address Resolution Protocol)
    3. 无偿 ARP
    4. 代理 ARP
  5. ARP_____ 是大量的 ARP 请求,会造成 DoS 攻击并阻止网络正常运行:
    1. 暴风雨
    2. 愚弄
    3. 免费的
    4. 相反的
  6. ____ 定义了发送者正在执行的操作:
    1. 暴风雨
    2. 愚弄
    3. 操作码
    4. 协议类型
  7. 防范 ARP 攻击的一种可能的防御策略是使用(n)_ _ _ _ _ _ _,并调整设备以监控异常 ARP 活动,如 ARP 风暴:
    1. 水獭箱
    2. IDS/IPS
    3. 免费代码
    4. 凸轮警报

延伸阅读

请参考以下链接了解更多信息:

第五部分:处理数据包捕获

在本节中,我们将通过使用 Wireshark 的内置工具来解决网络延迟问题,从而发现增强您的分析技能的方法。我们还将学习如何对流量进行分组,以及保存和导出数据。此外,我们将探索统计菜单,并创建 I/O 和流图。最后,我们将研究 CloudShark,这是一个基于浏览器的应用,用于在线研究和共享捕获。

本节将涵盖以下章节:

十七、确定网络延迟问题

在企业网络中,管理保持网络 99.999%时间运行的日常需求是一项挑战。网络管理员不断监控可能导致中断的问题。这种情况很不稳定,因为一个错误就可能导致网络瘫痪。有没有解决方案可以帮助我们缓解这一挑战?幸运的是,确实有,因为 Wireshark 有几个内置工具可以帮助您排除网络故障。

在本章中,我们将讨论网络延迟,并了解数据包丢失和响应时间缓慢的一些原因。排除故障时,您将更好地理解时间价值的重要性。我们将介绍有助于识别问题并在智能滚动条中使用的着色规则,这样您可以快速识别并移动到捕获中的问题点。最后,您还将了解如何导航 Wireshark 生成的专家信息,该信息将警报细分为不同类别,并指导分析器进行更有针对性的评估。

本章将通过涵盖以下内容来解决所有这些问题:

  • 分析延迟问题
  • 理解着色规则
  • 探索智能滚动条
  • 发现专家信息

分析延迟问题

今天,有许多不同类型的设备通过网络进行通信和交换信息,其中包括中间设备、物联网 ( 物联网)和移动设备。所有这些,再加上每天添加到网络中的许多其他类型的流量,会给网络管理带来挑战。

由于这些因素,导致数据包丢失和响应时间缓慢的原因有很多。一旦确定存在问题,故障排除过程就开始了。

排除连通性故障时,有许多方法。所有这些都有相同的目标:识别故障点并缩小范围以确定问题的根本原因。根本原因可能包括配置错误、恶意软件甚至硬件故障。在接下来的部分中,我们将分析网络延迟背后的一些根本原因,并讨论三个主要概念:延迟、吞吐量和丢包。

掌握延迟、吞吐量和数据包丢失

当用户抱怨响应时间慢时,网络管理员可以快速捕获数据包并观察故障的证据。在本节中,我们将通过一些示例来演示如何识别网络中的问题。如果你想跟随,去 https://www.cloudshark.org/captures/9a5385b43846 的,下载client-fast-retrans.pcap截图,并在 Wireshark 中打开。

文件打开后,我们可以滚动浏览截图。在数据包20 - 21周围,我们可以看到潜在的问题,正如在 captur e:

Figure 17.1 – Viewing client-fast-retrans.pcap

图 17.1–查看客户端-fast-retrans.pcap

如图所示,重复的确认 ( 确认)和快速重传错误在数据包20 - 2123 - 24中都很明显。两者都可以在网络上周期性地发生。然而,当它们的数量过多时,这通常是拥塞的指示。

注意

我们将在本章的后面了解不同类型的传输错误。

通常,衡量绩效时有三个指标:

  • 潜伏
  • 数据包丢失
  • 吞吐量

让我们从延迟开始,逐一了解一下。

计算延迟

延迟是衡量将数据包从一点传输到另一点所需时间的指标。网络延迟会使网络瘫痪,并造成延迟。此外,它会导致网页在检索内容时速度变慢,还会对语音和视频应用产生负面影响。

可以使用往返时间 ( RTT )来测量延迟,往返时间是从 A 到 B,然后从 B 到 A 完成一次完整的往返所需的时间

最佳 RTT 保持稳定,如下图所示:

Figure 17.2 – Steady RTT

图 17.2–稳定的 RTT

然而,您不会总是看到稳定的 RTT,因为该值会在传输过程中增加和变化。当存在延迟时,您将会看到 RTT 的增加。

要在 Wireshark 中查看特定流的 RTT,请进入菜单并选择统计数据 | TCP 流图表 | 往返时间,如下所示:

Figure 17.3 – TCP Stream Graphs menu

图 17.3–TCP 流图菜单

当您选择往返时间时,Wireshark 将打开图表。一旦进入,确保你看到的是正确的水流方向,你可以通过使用右下角的开关方向按钮来修改。

要查看 RTT 缓慢增加的示例,请按照下列步骤操作:

  1. 在 Wireshark 中打开client-fast-retrans.pcap文件。
  2. 通过 TCP 流图 | 往返时间生成流图。选中后,Wireshark 将打开图表,如下所示:

Figure 17.4 – RTT graph for stream 0

图 17.4–流 0 的 RTT 图

当从client-fast-retrans.pcap看图时,我们看到230.211.187.172:8074.203.22.229:49683(或流 0)之间的 RTT 随时间增加。这很可能是由于网络延迟造成的。

注意

我们将在第 19 章 、发现 I/O 和流图中更详细地介绍不同类型的 TCP 流图。

延迟是指传输一个数据包需要多长时间,以 RTT 为单位。当存在高延迟时,发送方很难发送数据,因此,较少的数据能够到达接收方。接下来,我们来看看吞吐量。

测量吞吐量

吞吐量是指在任何给定时间发送和接收的数据量(通常以每秒位数表示)。在 Wireshark 中,我们可以测量这一点以及有效吞吐量,这是传输的有用信息。

网络介质会影响吞吐量。例如,光纤的吞吐量比铜缆高。拥塞和延迟也会影响通过的数据量。当吞吐量降低时,可能会发生丢包,如下所述。

经历丢包

当存在延迟时,数据可能无法通过,从而导致数据包丢失。网络上丢失或丢弃数据包的原因多种多样。数据包丢失由每发送 100 个数据包丢失的数据包数决定。

端点和应用负责管理传输延迟和网络拥塞。但是,有时会出现过多的数据包丢失,网络会进入恢复模式。在 Wireshark 中,我们可以看到数据包丢失的迹象,如保持活动、重复 ack 和重新传输。

Wireshark 能够识别许多常见的传输错误,并通过使用时间值来计算数据流中的延迟和中断。以下部分提供了在进行分析时对时间重要性的理解。

学习时间价值的重要性

在对数据包捕获进行分析时,时间值可以提供对传输延迟的洞察。在 Wireshark 中,您可以选择如何显示时间值,包括:

  • 从捕获开始后的秒数
  • 自上次捕获数据包后的秒数
  • 自上次显示数据包后的秒数

使用正确的时间格式很重要。在大多数情况下,最好选择自上次显示数据包后的秒,这将显示您是否使用了显示过滤器的延迟。

网络延迟和传输错误发生在网络上。幸运的是,Wireshark 有办法以着色规则的形式帮助识别常见问题。以下部分概述了 Wireshark 的着色规则以及如何在分析中使用它们。

理解着色规则

Wireshark 内置了着色规则或过滤器,用于识别或突出显示特定流量。进入菜单,选择视图 | 着色规则,找到默认着色规则,如下图所示:

Figure 17.5 – Default coloring rules

图 17.5–默认着色规则

进入着色规则菜单后,您可以根据需要编辑、删除或添加自己的着色规则。除了使用默认的颜色规则,您还可以创建和共享规则。在 https://wiki.wireshark.org/Jay's_Coloring_Rules可以找到一个例子。

根据控制台中显示的顺序,Wireshark 会处理每个规则,直到找到匹配的规则。要修改特定规则的顺序,选择该规则,然后将其拖至所需位置。

左侧的复选标记表示活动规则。要停用它,请取消选择您不希望 Wireshark 考虑的规则。

要编辑规则,请执行以下操作:

  1. 选择并双击要修改的着色规则。
  2. 然后,您可以编辑名称或使用的过滤器,以及背景和前景色。

虽然 Wireshark 可以给数据包着色,但在某些情况下,这种着色会分散注意力。您可以通过选择图标来禁用着色规则,该图标通常位于 Telephony 菜单项的下方,如下图所示。但是,在不同的版本、平台或布局中,图标的位置会有所不同:

Figure 17.6 – Viewing the coloring rules icon

图 17.6–查看着色规则图标

Wireshark 总结了帧元数据中使用的着色规则。除了列出与时间、帧和协议相关的信息之外,您还会看到使用的着色规则。要查看着色规则摘要的示例,请按照下列步骤操作:

  1. 打开client-fast-retrans.pcap文件。
  2. 转到帧 20 ,点击Frame 20标签右侧的箭头展开帧元数据。
  3. 在元数据列表的底部,您会看到着色规则,如下图所示:

Figure 17.7 – Coloring rules in the frame metadata

图 17.7–帧元数据中的着色规则

当网络出现问题时,您很可能会在数据包列表中看到明显的颜色。规则提供了在分析过程中哪些流量应该归属的指导方针。

注意

要使着色规则生效,必须启用它们。然而,在大多数情况下,着色规则是有效的。

除了数据包列表中使用的颜色之外,右侧还有一个基于活动颜色规则的独特图案。此模式代表智能滚动条。接下来,让我们看看 Wireshark 如何在智能滚动条中使用颜色规则来轻松发现问题。

探索智能滚动条

除了查看捕获中的问题迹象,您还可以使用智能滚动条轻松发现问题。要查看主动智能滚动条的示例,请访问http://tcpreplay . app neta . com/wiki/captures . html # big flows-pcap。在那里,下载bigFlows.pcap并在 Wireshark 中打开它,这样你就可以跟着做了。打开捕获,然后通过执行以下操作转到帧 586 :

  1. 选择转到指定数据包图标。
  2. 在表单框中,键入586,然后选择转到数据包
  3. 智能滚动条将在数据包列表中显示网络拥塞的指示,如以下屏幕截图所示:

Figure 17.8 – Visualizing network congestion

图 17.8–可视化网络拥塞

右侧的信息栏标题列出了几个需要进一步调查的故障迹象。其中包括以下内容:

  • [TCP Out-Of-Order]
  • [TCP Retransmission]
  • [TCP Dup ACK 587#1]

管理员可以点击一个色带并直接进入指定的数据包,以便将注意力集中在可能的问题上。单击某个频段后,Wireshark 会调整数据包列表以显示相关区域。

我们可以看到着色规则和智能滚动条如何帮助识别传输错误和捕获中的问题点。在下一节中,我们将探讨网络中常见的传输错误。

常见传输错误

路由器和交换机等中间设备的长时间延迟会导致延迟、数据包丢失和/或其他负面影响。在 Wireshark 中排除拥塞问题时,您可能会看到传输错误的迹象。

一些常见的指示包括重复 ack、保活段和快速重传。

由于此信息可能表明数据传输中的延迟和间隙,因此理解数据包试图告诉您的含义非常重要。让我们从重复 ack 的概述开始。

看到重复的 ack

在正常的 TCP 对话中,客户端通过发送 ACK 来识别接收到的每个字节,并将 ACK 字段值设置为作为下一个预期字节。当客户端发送多个 ACK(具有相同的 ACK 字段值)时,这被称为重复 ACK。

为了理解什么是重复 ACK,让我们来看一个标准的 TCP 事务:

  1. 在正常的 TCP 数据处理过程中,TCP 对接收到的每个字节的数据进行排序和确认。
  2. 客户端通过设置 TCP 报头中的 ACK 标志来确认收到的数据,如下所示:

Figure 17.9 – The TCP ACK flag set

图 17.9–TCP ACK 标志集

  1. 客户端将下一个预期字节的值放入确认号字段。
  2. 当客户端发送一个ACK 180(确认号:180)时,客户端正在对服务器说,到目前为止,我已经收到了 179 字节的数据,我准备好了更多(字节),从(字节号)180 开始,如下图所示:

Figure 17.10 – Normal TCP ACK

图 17.10-正常 TCP 确认

  1. The server doesn't wait for confirmation of delivery to send more data. Instead, the data is sent concurrently with the ACKs.

    注意

    对于 TCP,ACK 是预期的,因为 ACK 与服务器发送的下一个预期字节一起发送。

  2. 如果客户端发送另一个ACK 180标志,客户端(再次)对服务器说:到目前为止,我已经接收了 179 字节的数据,我准备好接收更多(字节),从(字节数)180 开始。

  3. Wireshark 将此识别为客户端发送的第二个ACK 180标志,并将此数据包识别为重复的 ACK。这意味着客户端没有收到下一个预期的字节,而是礼貌地请求服务器发送数据。

图 17.8 中,如探索智能滚动条部分所示,您可以在帧 589 中看到一个重复的 ACK。这表明客户端正在耐心地重新请求丢失的数据。另外,在信息列标题中,可以看到[TCP Dup ACK 587#1]。这意味着这是在帧 587 中发送的原始 ACK 之后发送的第二个(或重复的)ACK 标志。

传输中的等待时间和延迟可能是由许多事情引起的,例如处理和排队延迟以及一般的网络拥塞。因此,客户端可能会反复发送重复的 ack,直到收到预期的数据。

网络拥塞是当今世界的一部分,并且具有许多负面影响,例如缓慢的网页检索。传输错误和拥塞的另一个标志是保活数据包,我们接下来将探讨这一点。

观察保活段

当与 web 服务器通信时,客户端和服务器都使用超文本传输协议 ( HTTP )相互通信。如果在会话期间网络变得缓慢,双方都开始经历缓慢的响应时间,HTTP 使用一种叫做保持活动的方法。保活数据包没有任何数据;它设置了 ACK 标志,并且序列号被设置为比当前序列号小 1。

在客户端和服务器之间发送保活数据包,以验证双方仍在响应。使用这种方法可以保持会话活动,而不是断开连接,并且必须经历重新建立连接的昂贵协商。

如果你想让看一个保活包的例子,去https://www.cloudshark.org/captures/5618ff446df8。一旦打开,选择导出,找到界面右侧的 
on,然后选择下载原始文件,如下图所示:

Figure 17.11 – Export file from CloudShark

图 17.11–从 CloudShark 导出文件

在 Wireshark 中打开cloushark_tcp-keep alive.pcapng文件。打开后,选择数据包 158 ,点击右键,然后选择跟随 | TCP 流。您也可以使用tcp.stream eq 17显示过滤器。过滤流量后,您应该会看到以下内容:

Figure 17.12 – HTTP keep-alive packets

图 17.12–HTTP 保持活动数据包

我已经去掉了颜色,这样你就可以看到帧 153 和帧 158 中保活数据包的交换。在此捕获中,很可能是网络拥塞,延迟阻止了数据交换。因此,HTTP 在两个端点之间使用保活数据包来保持会话活动。

因此,在中,当出现网络拥塞时,除了看到重复的 ack 之外,您还可能会看到多个保活数据包。

接下来,让我们看看网速慢和拥塞的另一个标志:重新传输的存在。

发布重新传输

在拥塞的网络中,常见的是重传、快速重传和虚假重传。三者都有关联。但是,各有细微的差别。

首先说一下网络上的重传和快速重传。

识别重新传输

在 TCP 连接中,会话的每一方都主动监视数据事务。当拥塞明显且数据无法通过时,当满足某些条件时,就会触发恢复工作。根据算法的不同,您会看到服务器主动尝试重新发送丢失数据的重新传输或快速重新传输。

有时,数据确实通过了,而服务器并不知道客户机已经收到了数据。在这种情况下,服务器发送不必要的或虚假的重新传输。

发送虚假的重新传输

在数据交易过程中,服务器可能会重新发送不需要的数据。客户端之前已经确认收到了数据,但是服务器重新发送了数据,很可能是因为它没有收到 ACK。这被称为虚假重传。尽管不需要这些数据,但这仍然是一个值得关注的问题,因为不知何故,与服务器的通信被中断了。

当刚开始学习如何进行数据包分析时,可能会感到力不从心。虽然您可能无法识别所有可能的问题,但 Wireshark 以精选专家信息的形式提供了捕获指南。该工具将常见问题组合在一起,以便您可以快速调查网络延迟,我们将在接下来进行探讨。

发现专家信息

在分析数据包捕获时,您可能会在界面的左下角看到一个彩色圆圈。这就是专家信息指南,这是 Wireshark 内置的一项功能,一旦捕获成功,它可以帮助提醒网络管理员可能出现的问题。

探索智能滚动条部分的图 17.8 所示,专家信息图标为红色圆圈,表示有错误;这是最高的专家信息级别。

返回到bigFlows.pcap数据包捕获。双击左下角的专家信息图标,将打开一个控制台,如下图所示:

Figure 17.13 – Expert Information grouped by severity

图 17.13-按严重性分组的专家信息

这可能需要几分钟的加载时间,具体取决于捕获的大小。另外,可能还有很多信息。

专家信息控制台是一个 GUI,允许您查看 Wireshark 在捕获中识别的内容的详细信息,以便您可以进一步调查。界面很直观,有列标题、选择复选框和下拉列表,所以你可以定制你的观看。

现在,让我们看一看下一节中的每个列标题。

查看列标题

在的专家信息界面,我选择备注,然后展开重复确认(#1) 旁边的插入符号,如图所示:

Figure 17.14 – Note: Duplicate ACK (#1)

图 17.14–注意:重复确认(#1)

在界面顶部,您会看到列标题。以下要点概括了每个标题所表示的内容:

  • 严重性:表示所识别错误的严重性。在前面的截图中,严重性被列为注释
  • Summary :提供错误的摘要,并将所有相同的错误合并在一个下拉摘要下。例如,在前面的截图中,摘要是重复确认(#1) 。展开该行后,您可以深入到各个数据包,查看列出的每个错误的更多详细信息。
  • Group :在每个摘要中,有几个常见的分组。例如,在重复确认(#1) 下列出的项目被分组在序列下。下面列出了您可能会看到的一些组:
    • 校验和:表示校验和无效
    • 协议:违反 
particular 协议征求意见 ( RFC )
    • 序列:可疑协议行为
  • Protocol :列出引起警报的正在使用的主要协议,如 TCP,如前面的屏幕截图所示。
  • Count :统计特定事件分组的引用数量。以为例,在图 17.14 的右上角,我们看到有一个 36104 重复确认(#1) 的计数。

如图所示,列标题突出显示了数据包内容的详细信息。此外,专家信息通过使用颜色概述了严重程度,如下一节所述。

评估严重性

在查看专家信息控制台时,有五个可能的类别来指示问题的严重性,如下所示:

Table 17.1 – Expert Information severity levels

表 17.1-专家信息严重性级别

了解数据包捕获中的问题是有帮助的,但是还有更好的方式来呈现信息。在下一节中,我们将学习排序、搜索和显示数据的方法。

整理信息

当你打开专家信息控制台时,你需要理解这些数据。接口提供了排序和搜索的方法,以及只显示某种数据的方法。

我们将从概述在界面中排序数据的方法开始。

整理数据

启动专家信息控制台后,所有信息可能不会被分类。你会发现,你可以很容易地排序任何列标题。我通常按照严重程度对结果进行排序。

要查看特定摘要的所有数据包,选择摘要左侧的插入符号,如图图 17.14 所示。

如果您应用了显示过滤器,您可以选择左下角的限制显示过滤器,仅显示您的过滤结果。如果您正在对特定对话进行故障诊断,并且只想显示过滤后的对话,这可能会很方便。

默认视图列出了所有错误、警告、注释和聊天。然而,您可能只对错误感兴趣。在这种情况下,您可以使用右下角的下拉菜单来限制您的结果。在那里,您可以选择或取消选择您想要显示的内容,如下所示:

Figure 17.15 – Expert Information | Show categories

图 17.15-专家信息|显示类别

此外,如果有任何评论,您也可以显示它们。

如图所示,您可以在专家信息对话框中轻松排序数据。在下一节中,我们将看到搜索数据如何帮助提高您关注特定问题的能力。

搜索值

当您需要在专家信息中定位一个特定值时,在搜索框中输入该值,按进入。以下截图显示了ssdp搜索的结果:

Figure 17.16 – Expert Information search results

图 17.16-专家信息搜索结果

专家信息控制台具有高级菜单功能。如下面的截图所示,当你右击一个值时,你可以选择列出的任何菜单选项:

Figure 17.17 – Expert Information menu choices

图 17.17-专家信息菜单选项

类似于在数据包详细信息中右键单击字段值时提供的菜单选项,您可以选择以下任一选项:

  • Apply as Filter 将选择高亮显示的对话,并在主界面中运行过滤器。
  • 准备过滤器在主界面中选择高亮显示的对话并准备过滤器。要运行过滤器,必须按下回车
  • 查找,选中后会将变量放在主界面的显示过滤器中,如以下截图所示:

Figure 17.18 – Results of the Find menu choice

图 17.18–查找菜单选项的结果

  • 着色将打开着色规则对话框,允许您创建自定义着色规则。

  • 查找将打开一个浏览器,进行谷歌搜索,并显示结果。

  • Copy will copy the selected line onto the clipboard. For example, if I right-click on packet 10915 and select Copy, Wireshark will copy the results to the clipboard. I can then paste the results, as follows:

    10915 SSDP: M-SEARCH * HTTP/1.1

  • 折叠全部将结果折叠成一行摘要。

  • 全部展开将展开结果以显示所有的数据包。

专家信息控制台可以提供大量关于数据包捕获中可能出现的问题的信息。Wireshark 在控制台中以易于阅读的格式显示结果,您可以在控制台中查看和分析任何错误、警告、注释和聊天。

总结

网络需要几乎 100%的时间可用。单个设备故障、恶意软件或配置错误都会严重影响网络性能。在本章中,我们回顾了如何使用三个主要指标来衡量性能:延迟、吞吐量和丢包。然后,我们查看了 Wireshark 中用于识别网络故障的众多工具中的一些。我们发现了时间值的重要性以及它们在发现延迟问题中的作用。此外,我们还了解了着色规则如何突出显示特定类型的流量。我们还发现了如何编辑、删除或上下移动任何规则的优先级。

然后,我们查看了智能滚动条,它提供了一种视觉效果,使我们可以轻松地发现并进一步调查捕获中的问题。我们讨论了一旦捕获,专家信息有助于提醒网络管理员可能出现的问题。我们通过查看专家信息控制台进行了总结,我们可以使用该控制台深入查看特定问题和子集错误、警告、注释和聊天。

在下一章中,我们将介绍处理大型数据包捕获的方法,并将它们分解成较小的文件进行分析。我们将查看过滤数据包以缩小结果范围,以及向单个数据包或整个捕获添加注释的原因和方法。然后,我们将总结允许我们保存和导出数据包捕获的许多方法和格式。

问题

现在是时候检查你的知识了。选择最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. ____ 是一种度量单位,用于测量将数据包从一点传输到另一点所需的时间,可以使用 RTT 来测量。
    1. 潜伏
    2. 数据包丢失
    3. 有效产出
    4. 吞吐量
  2. ____ 是在任何给定时间发送和接收的数据量(通常以位/秒为单位)。
    1. 潜伏
    2. 数据包丢失
    3. 有效产出
    4. 吞吐量
  3. 在 Wireshark 中,____ 位于数据包列表面板的右侧,根据应用中设置的着色规则显示不同的着色模式。
    1. 组指标
    2. 时间值
    3. 智能滚动条
    4. 有效产量计量器
  4. ____ 是一种特殊类型的数据包,它不包含任何数据。它只设置了 ACK 标志,所以客户端知道在 HTTP 会话期间保持会话活动。
    1. 重复确认
    2. 保持活力
    3. 中继
    4. 快速重传
  5. 查看专家信息图标时,青色圆圈表示(n)_ _ _ _ _ _ _,这是一般信息、异常错误或协议的非标准使用。
    1. 错误
    2. 警告
    3. 注意
    4. 闲谈
  6. _____ 由每发送 100 个数据包丢失的数据包数决定。
    1. 潜伏
    2. 数据包丢失
    3. 有效产出
    4. 吞吐量
  7. 使用正确的时间格式很重要。在大多数情况下,最好选择从 _____ 开始的秒数,无论是否使用显示过滤器,都会显示延迟。
    1. 1970-01-01
    2. 捕获开始
    3. 先前捕获的数据包
    4. 先前显示的数据包

十八、子集化、保存和导出捕获

并非每个数据包捕获都是您需要分析的数据的完美大小或代表。无论是您自己捕获的流量,还是有人向您发送文件进行检查,一些数据包捕获都很大而且很麻烦。很多时候,为了进行有效的分析,大文件必须被细分成更小的文件。此外,完成后,您很可能需要保存文件,或者在某些情况下,将捕获导出为特定的格式。

在这一章中,我们将介绍几种可以用来处理数据包捕获的方法和技术。因此,您可以将一个大文件缩小到更易于管理的大小,我们将查看过滤捕获以缩小结果。您将了解 Wireshark 在导出不同的捕获组件方面是多么的灵活。最后,您将看到如何导出文件,以及指定的包、包解析和对象。此外,您将发现向单个数据包或整个捕获添加注释的原因和方法。

本章将通过涵盖以下内容来解决所有这些问题:

  • 发现子集流量的方法
  • 了解保存文件的选项
  • 识别导出组件的方法
  • 确定添加注释的原因和方式

发现子集流量的方法

数据包分析用于各种原因,包括故障排除、测试、监控和网络基线。虽然我们可以在开始分析之前通过使用捕获过滤器来减小文件大小,但很多时候我们会收集所有的流量,以便不会错过任何重要的细节。然后,一旦捕获,该文件就可以与团队的其他成员共享,以便进一步分析或指出具体问题。

在捕获流量时,最好是捕获大小合适的数据包,并且只包含有问题的数据包。然而,情况并非总是如此。有时,您可能会发现您必须处理一个大文件,原因有很多,包括:

  • 您已经从具有大量通信量的网络设备获取了捕获。接入网络,即使时间很短,也会产生大量的数据包。即使您在获取文件时使用了捕获过滤器,您最终仍可能会获得大量数据。
  • 你收到了一份来自好心人的文件,他认为大量的捕获将有助于你的分析。例如,您从一位同事那里收到了一个很大的文件,该文件捕获了服务器的流量,他们需要您帮助分析一个特定的问题。

无论您使用什么方法来获取捕获,您都需要在 Wireshark 中使用它。请记住,虽然 Wireshark 可以加载一个大文件,但它可能非常耗费资源并且响应缓慢。这是因为 Wireshark 会在显示捕获之前尝试分析所有协议。此外,当您对大型捕获应用显示过滤器时,需要一段时间来过滤流量。因此,最好的选择是对捕获进行子集划分,并关注问题区域。

当我们对流量进行子集划分时,我们会将其分解为较小的文件进行分析。有许多方法可以对流量进行细分或子集化,包括按 IP 地址、端口号、协议或特定流进行子集化。

我们可以一起研究使用bigFlows.pcap拆分一个大文件的方法,位于这里:http://tcpreplay . app neta . com/wiki/captures . html # big flows-pcap。在那里,下载文件并在 Wireshark 中打开它,这样您就可以跟着做了。

当您打开bigFlows.pcap时,您可以很容易地看到处理一个大文件是多么麻烦,因为这个捕获有 791,615 个包。例如,即使进入一个简单的过滤器,仅显示传输控制协议 ( TCP )流量,Wireshark 也需要时间来重新扫描捕获并显示数据。Wireshark 有一个状态栏,指示重新扫描捕获时的过程,如以下屏幕截图的左下角所示:

Figure 18.1 – Rescanning the capture

图 18.1–重新扫描捕获

根据用于分析捕获的系统,它可能运行得非常慢,冻结,甚至关闭 Wireshark。

打开文件后,您需要计划要添加哪些数据。实现的方法有很多,真的要看你想分析什么了。在这一节中,我们将看看几种分解大型捕获的方法。首先,我们将研究如何使用一个互联网协议 ( IP )地址来子集化流量。

通过 IP 地址剖析

分解大型捕获的一种方法是过滤特定的 IPv4 或 IPv6 地址,然后使用子集进行分析。例如,您怀疑某台特定主机导致了过多的突发流量。通过追踪特定 IP 地址的活动,您可以更好地解决问题。

让我们回顾一下如何缩小搜索范围。在任何大型捕获中,您很可能已经收集了许多 IP 地址。转到统计菜单的底部,在这里您会看到 IPv4 统计IPv6 统计的菜单选项,如以下截图所示:

Figure 18.2 – IPv4 and IPv6 statistics

图 18.2–IP v4 和 IPv6 统计数据

对于 IPv4 或 IPv6,IP 统计有四种选择,包括:

  • 所有地址:提供一个可排序的 IP 地址列表,如图所示:

Figure 18.3 – Statistics: All Addresses

图 18.3–统计数据:所有地址

  • 目的地和端口:这个报告显示了一个详细的列表,该列表分解了每个 IP 地址以及关于 TCP 和用户数据报协议 ( UDP )的附加统计信息,如该屏幕截图所示:

Figure 18.4 – Statistics: Destinations and Ports

图 18.4–统计数据:目的地和端口

  • IP 协议类型:该报表按照 IP 头后面的协议进行细分,可以是TCPUDPNONE,如图所示:

Figure 18.5 – Statistics: IP Protocol Types

图 18.5–统计数据:IP 协议类型

  • 源和目的地地址:根据源和目的地 IP 地址分解所有地址。【T2Figure 18.6 – Statistics: IP Protocol Types

图 18.6–统计数据:IP 协议类型

所有过滤器都有附加信息,如计数突发率,以及过滤和排序的能力。此外,您可以选择另存为...以多种文件类型保存任何统计数据,如下所示:

Figure 18.7 – Statistics: Save as

图 18.7–统计数据:另存为

虽然按 IP 地址划分流量子集可能有助于锁定有问题的主机,但另一种分解大规模捕获的方法是使用会话。

通过对话缩小范围

对话是两个相互通信的端点。在大型捕获中,您很可能会有许多对话。要查看列表,进入统计菜单,选择对话,如图所示:

Figure 18.8 – Displaying all conversations

图 18.8–显示所有对话

进入对话对话框后,我们可以按列进行排序,以确定最大流量者,这是交换最多数据的两个端点。我们还可以选择两个已知端点之间的对话,比如一个IP 语音 ( VoIP )客户端和服务器交换数据。一旦确定,我们就可以使用这些数据来创建图表和流程图进行分析。

在窗口中,您会看到顶部的选项卡,允许您查看特定类型的对话,如以太网IPv4TCPUDP 。选择一个对话,如172.16.133.95157.56.240.102之间的对话。选择后,您可以过滤结果,以便只看到您希望用作子集的流量,如以下屏幕截图所示:

Figure 18.9 – Conversations: Filter options

图 18.9–对话:过滤器选项

在一次捕获中,可能会有多次对话。虽然您可能会发现通过对话设置大型捕获的子集很有帮助,但有时您可能会希望专注于特定的端口并将其用作您的子集。下一节说明了如何通过端口号进行过滤,以便处理生成的较小文件。

按端口号最小化

虽然按 IP 地址或会话划分子集可能会有所帮助,但有时您可能想研究一个特定的端口。您可能会在 TCPUDP 标签下浏览对话,并识别可疑的端口使用。或者您可能希望在检查突发流量时进一步调查多播流中使用的特定端口。

按端口号划分子集有很多原因。在 Wireshark 中,您可以在几个区域找到 UDP/TCP 端口列表,包括以下内容:

  • 对话
  • 终点
  • IPv4 或 IPv6 目的地和端口
  • UDP 组播流

例如,返回bigFlows.pcap,然后进入统计,然后进入 UDP 组播流,如图所示:

Figure 18.10 – UDP Multicast Streams

图 18.10–UDP 多播流

运行报告后,您可以隔离想要分析的端口,应用过滤器,并只选择想要用作子集的流量。

剖析大型捕获的另一种方法是根据特定协议进行过滤。让我们来看看。

按协议分解

Wireshark 能够解析数百个协议。要查看列表,请转到统计,然后转到协议层次,这将提供在捕获中出现的协议列表。与许多其他选项一样,在协议层次统计中,您可以应用过滤器并创建您的子集,如以下截图所示:

Figure 18.11 – Protocol Hierarchy: Apply as Filter

图 18.11–协议层次结构:作为过滤器应用

此外,如果您知道要查看的协议,您可以使用显示过滤器,输入特定的协议,并将其用作子集。

分析流量的一种常见方法是检查特定的流量。在最后一部分,我们将看到通过使用“跟随流”功能可以查看哪些捕获元素。

按流子集化

有时,您可能只想查看单个流量流的详细信息。在 Wireshark 中,一种简单的方法是使用 follow the stream 选项。

您必须首先选择 TCP 或 UDP 对话,右键单击并选择跟随,然后选择适当的流,如 TCP、UDP、TLS 或 HTTP。

对于我们的例子,我们将使用bigFlows.pcap。在显示过滤器中,输入tcp.stream eq 946。过滤需要一段时间。完成后,您将看到通信流的内容,这是一个网页,如下面的屏幕截图所示:

Figure 18.12 – Follow TCP Stream 946

图 18.12–跟随 TCP 流 946

现在,我们已经通过使用前面的任何方法对流量进行子集化,将文件减小到更易于管理的大小,下一步是以某种方式保存文件。您可以将文件保存为默认的.pcapng格式,或者保存为近年来增加和增强的许多其他格式中的一种。

使用 Wireshark,有许多方法可以将文件子集化到更实用的大小。在您子集化了捕获之后,您很可能想要保存文件以保存您的工作。以下部分提供了在 Wireshark 中保存文件的各种方法。

了解保存文件的选项

每当您运行并停止捕获时,Wireshark 会将捕获保存在一个临时文件中。Wireshark 将在界面左下方的状态栏中显示临时文件名。此外,在顶部,您将看到捕获中使用的接口名称和一个星号,如下面的屏幕截图所示:

Figure 18.13 – Temporary file in Wireshark

图 18.13–Wireshark 中的临时文件

在某些时候,您很可能想要保存文件。要保存文件,进入文件菜单选择,然后点击保存。保存文件后,文件名将出现在 Wireshark 界面的顶部,如以下屏幕截图所示:

Figure 18.14 – File saved in Wireshark

图 18.14–保存在 Wireshark 中的文件

当你进入文件,然后保存时,你会发现 Wireshark 允许你以多种不同的格式保存捕获文件,如下所述。

使用另存为

文件菜单选择有很多处理文件的常用选项,比如打开导入保存打印导出。当您需要将文件保存为除默认扩展名.pcapng之外的其他文件时,一个选项是使用另存为

当你准备好保存文件时,进入文件菜单选择另存为,会打开一个对话框,如下图所示:

Figure 18.15 – The Save Capture File As dialog box

图 18.15–将捕获文件另存为对话框

多年来,开发人员已经向 Wireshark 添加了许多不同的文件格式。因此,当您点击另存为类型下拉菜单时,您将看到所有支持的文件格式列表。以下屏幕截图显示了可用格式的部分列表:

Figure 18.16 – Partial list of Save as selections

图 18.16–另存为选择的部分列表

一些可用的格式包括微软 NetMon ( .cap)、Novell LANalyzer ( .tr1)、Sniffer (Windows: .caz)和 K12 文本文件(.txt)。虽然有些格式是遗留的,可能永远不会被使用,但知道您有多种选择还是很好的。

另存为菜单选项的一个常见用途是以一种格式打开文件,然后以另一种格式保存。一个例子是获得一个扩展名为.pcap的文件。虽然您可以用一个.pcap文件做很多事情,但是这种格式是有限制的。例如,当分析一个.pcap格式的文件时,您不能保存任何注释。如果您添加了任何注释,当您关闭文件时,Wireshark 会提示您另存为.pcapng,如果您想保留您的注释。

因此,在大多数情况下,另存为.pcapng是一个更好的选择,因为这种格式有几个增强,能够更好地剖析和显示有效载荷。

虽然存储整个文件很常见,但您可能只想导出文件的一部分。下一节将介绍导出特定包的各种方法,以及捕获文件中的各种对象,比如图像或网页。

识别导出组件的方式

我们讨论了许多方法,您可以对捕获进行子集化,以将文件减小到更实际的大小,例如通过 IP 地址、端口号或流。另一种选择是将子集导出为指定的数据包或数据包解析,甚至导出捕获中存在的各种对象。

让我们看看 Wireshark 提供的许多导出选项,从指定的数据包开始。

选择指定的数据包

过滤捕获后,您可能希望导出捕获的一部分。使用 Wireshark,您可以非常具体地选择要导出的内容。让我们看一个例子。

返回到bigFlows.pcap捕获,并在显示过滤器中输入tcp.stream eq 946。一旦运行了过滤器,就可以保留这个子集了。在这种情况下,我们将进入文件菜单选择然后选择导出指定数据包。打开后,您会看到有几种导出文件组件的方法,如下面的屏幕截图所示:

Figure 18.17 – Export Specified Packets

图 18.17–导出指定的数据包

在对话框底部附近,您会看到一个名为数据包范围的标题,您可以在其中进行选择。如果您已经过滤了捕获,Wireshark 将假设您想要仅导出显示的数据包,并且显示的的单选按钮将被激活。然而,如果你想导出所有的数据包,选择捕获的

在此之下,您将看到您想要的数据包范围的其他选项。这些选项包括以下内容:

  • 所有数据包:这将导出所有数据包。Wireshark 将显示有多少被抓获被显示
  • 仅选定的数据包:仅导出选定的数据包。在大多数情况下,您会将光标放在其中一个数据包上,因此 Wireshark 会认为您已经选择了该数据包。这也是为什么在图 18.17 中,Wireshark 只在选择包选项中显示一个( 1 )包的原因。
  • 仅标记数据包:标记数据包允许您右击并标记感兴趣的一个或多个指定数据包,使数据包变黑。选择此选项时,Wireshark 将只处理标记的数据包。
  • 第一个到最后一个标记:如果您在捕获中标记了几个数据包,Wireshark 将导出所有标记的数据包,从第一个到最后一个。
  • 范围:这将允许您指定数据包范围。例如,如果您输入233-799,Wireshark 将只导出该范围。
  • 删除忽略的数据包:如果在捕获中您忽略了某些数据包(参见 第 4 章探索 Wireshark 接口,在标记或忽略数据包部分下)并且您选择了此选项,Wireshark 将不会在导出中包含忽略的数据包。

TCP 流946是从一个旅游网站获取的网页,因此我们将该文件命名为Web Page。当导出时,您将需要强制文件格式为.pcapng,因为 Wireshark 将默认为原始文件格式,对于bigFlows.pcap.pcap。要仅导出 TCP 流946,请遵循以下步骤:

  1. 进入文件选择菜单然后点击导出指定数据包
  2. 保持默认值不变,如图图 18.17 所示。
  3. 选择保存文件的位置。
  4. 文件名中,输入Web Page
  5. 另存为类型的下拉菜单下,选择Wireshark/…–PCA png

一旦导出完成,关闭bigFlows.pcap,然后打开新创建的文件:Web Page.pcapng

文件的菜单选项中,我们还会发现的导出,其中包括几个选项。选项包括导出特定包或字节、TLS 会话密钥和其他对象的能力,如下所述。

导出各种对象

使用捕获时,文件中可能有各种对象。Wireshark 重新组装对象,只要对象是未加密的,就可以收集和分析这些对象。

您可能需要在捕获文件中收集对象有几个原因。例如,在主动恶意软件调查期间,您可能需要查看正在传输的文件类型。或者可能有人担心某个人可能会将敏感信息发送到组织之外。Wireshark 使导出对象变得容易,这样您就可以更仔细地查看通过网络发送的流量类型。

可以导出的一些可能对象包括以下协议中确定的对象:

  • 医学数字成像与通信 ( DICOM )
  • 超文本传输协议 ( HTTP )
  • 互联网报文格式 ( IMF )
  • 服务器消息块 ( 中小企业)
  • 琐碎的文件传输协议 ( TFTP )

如果您怀疑前面的任何协议包含对象,您可以通过进入文件菜单选项,然后选择导出对象来导出它们进行检查,如下面的屏幕截图所示:

Figure 18.18 – Export Objects

图 18.18-导出对象

例如,打开bigFlows.pcap文件。打开后,选择导出对象,然后选择 HTTP...。Wireshark 将定位所有对象,如文本/css应用/javascript 、图像和文本/html 。这将需要几秒钟的时间,取决于文件的大小。Wireshark 将显示一个列表,如下所示:

Figure 18.19 – HTTP object list

图 18.19–HTTP 对象列表

在对话框中,您可以搜索文本字符串。在左下角,你会看到一个文本过滤器标签。输入footstesp-to-the-summit.jpg【原文如此】,完全如以下截图所示:

Figure 18.20 – Searching footstesp-to-the-summit.jpg

图 18.20-搜索 footstesp-to-the-summit.jpg

选择保存,当对话框打开时,输入文件名和适当的扩展名。在这种情况下,我使用了footstesp-to-the-summit.jpg。保存对象后,您可以定位、打开和查看图像。

如果还有其他感兴趣的对象,您也可以单独保存它们。或者,您可以选择保存所有,Wireshark 将保存文件中找到的所有对象。

显然,Wireshark 提供了许多保存和导出组件和对象的方法。但是当你处理完一个文件后会发生什么呢?

在进行分析时,您可能知道为什么要进行特定的捕获。然而,当您返回到文件时,您可能不记得是什么导致您首先查看该捕获。此外,如果您与同事共享该文件,他们可能无法识别该文件为何如此重要。在这两种情况下,最好通过添加注释来确定关键元素和关注点。

为了保留文件重要的原因,Wireshark 提供了添加注释的方法,如下一节所述。

确定添加评论的原因和方式

当使用跟踪文件时,您可能需要对单个数据包或整个捕获做一个记录,以供将来参考。

Wireshark 在处理注释时有选项。您可以添加注释来保存整个捕获或单个数据包的详细信息,如下所述。

提供文件和数据包注释

在 Wireshark 中,您可以对整个捕获进行注释,以记录您在文件中发现的内容。你可以保存这些信息,或者是为你自己保存,或者是在团队工作时与他人分享。让我们看一个使用Web Page.pcapng子集添加注释的例子。

要向文件添加注释,您可以执行以下操作之一:

  • 选择左下角的注释图标,它看起来像一个便笺簿和铅笔。
  • 进入统计 | 采集文件属性,在采集文件评论下方的空白处填写您的评论。

比如在我的Web Page.pcapng文件里,我去统计 | 抓取文件属性,输入评论HTTP traffic with interesting images。然后我点击了保存评论,如下图所示:

Figure 18.21 – Capture file comments

图 18.21–捕获文件注释

请记住,添加注释时,Wireshark 不会突出显示拼写错误。因此,如果您希望文件中的注释看起来更专业,请花时间检查您的拼写。

向整个文件添加注释非常方便。然而,有时您可能希望在文件中保存您感兴趣的一个或多个包的细节。向单个数据包添加注释类似于向整个文件添加注释。但是,在单个数据包中,进入编辑菜单选项,选择数据包注释,如以下截图所示:

Figure 18.22 – Packet Comments selection

图 18.22–数据包注释选择

Wireshark 将打开一个表单,您可以在其中添加评论。如果您想在以后添加更多评论,只需选择同一个数据包,然后重复添加原始评论的步骤。

此外,您可以通过进入编辑菜单选择删除所有数据包评论来删除所有数据包评论,如图图 18.22 所示。

添加或编辑注释后,您需要保存它们,以便以后查看,如下所述。

保存和查看评论

一旦您完成了对整个文件或单个数据包的添加注释,您会看到文件名在名称的前面有一个星号,如 Wireshark 界面顶部所示:

Figure 18.23 – Filename with an asterisk

图 18.23–带星号的文件名

星号提醒您已经修改了捕获。当您关闭捕获时,Wireshark 会提示您保存修改后的文件。需要注意的是,使用注释时必须保存为.pcapng格式。

一旦保存,有几种方法可以查看评论:

  • 要查看对文件的评论,请进入统计 | 捕获文件属性。这将打开一个对话框,如图图 18.21 所示。
  • 要查看单个数据包的评论,请转到专家信息并选择控制台右下方的显示评论。然后,您将看到列出的注释,如下所示:

Figure 18.24 – Expert Information: show comments

图 18.24-专家信息:显示注释

显然,向整个捕获或单个数据包添加评论是很容易的,这样您或您的团队可以在以后查看评论。

总结

在这一章中,我们发现了如何把一个大的、难以管理的文件变成一个更小的、更易于管理的文件。一旦缩小,我们就可以与同事分享文件或保存捕获供将来参考。您了解了对流量进行子集划分的许多方法,包括按 IP 地址、会话、端口号或流进行过滤。我们发现,在处理数据包捕获后,Wireshark 中有许多选项和格式可用于保存捕获。此外,您现在知道了导出文件、对象、会话密钥和包字节的许多方法。最后,为了保留文件重要的原因,我们发现了如何向单个数据包或整个捕获添加注释。

在下一章中,我们将首先发现 Statistics 菜单在分析捕获文件时可以帮助我们的许多方式。我们还将学习如何创建基本的 I/O 图来帮助可视化网络问题,例如掉线、丢帧和重复确认。然后,我们将看看在使用 I/O 图时,可以修改设置和其他选项的方法。我们将通过比较不同的 TCP 流图如何提供流的可视化表示来进行总结。

问题

现在,是时候检查你的知识了。选择最佳答案,然后将您的答案与评估附录中的答案进行核对:

  1. Wireshark 中的 _____ 表示相互通信的两个端点。
    1. 赛末点
    2. 元组
    3. 会话
    4. 过滤器
  2. Wireshark 能够解析数百个协议。要查看给定捕获中出现的所有协议的列表,请转到 Statistics ,然后转到 _____。
    1. 协议层级
    2. 对话
    3. IPv4 统计数据
    4. 赛点
  3. 目前,当您保存文件时,Wireshark 中的默认文件格式是 _____。
    1. snoop.gz
    2. .pcapng
    3. .pcap
    4. erf.gz
  4. 处理数据包时,右键单击指定的数据包或感兴趣的数据包,并选择 _____,这将使选定的数据包变黑。
    1. 忽略
    2. 探听
    3. 飞溅
    4. 标记
  5. 当您选择导出对象 _____,Wireshark 将定位并包含所有包含应用/javascript 、图像和文本/html 的对象,然后显示找到的对象列表。
    1. DNS
    2. DICOM
    3. HTTP
    4. 中小企业
  6. 在保存已运行的捕获之前,您会在界面顶部看到捕获中使用的界面名称和一个(n)_ _ _ _ _ _ _。
    1. .temp扩展
    2. 铅笔图标
    3. 长破折号
    4. 星号
  7. 要为整个捕获文件添加注释,您可以进入 _____ 菜单选项,然后选择捕获文件属性,并在捕获文件注释下方的空白处添加您的注释。
    1. 统计数据
    2. 视图
    3. 编辑
    4. 文件

十九、探索 I/O 和流图

在 Wireshark 中,有许多工具可以帮助分析人员了解网络上发生了什么。在本章中,我们将首先回顾在统计菜单中发现的一些关键元素。为了让您了解内置报告的多种选择,我们将介绍一些一般信息和评估捕获中发现的数据的方法。我们还将发现几份帮助评估协议有效性的报告,以及在统计菜单中找到的基本图表调查。

然后,我们将关注两种可视化流量的主要方式,通过使用输入/输出 ( I/O )和传输控制协议 ( TCP )流图。我们将探索如何创建基本的 I/O 图来帮助可视化网络问题,例如掉线、丢帧和重复的确认 ( 确认)。然后,我们将比较四种类型的 TCP 流图,并了解每种图如何有助于了解网络的健康状况。T13

本章将涵盖以下主题:

  • 发现统计数据菜单
  • 创建 I/O 图
  • 比较 TCP 流图

发现统计菜单

在 Wireshark 中,有几种方法可以查看数据。有些数据可以用数字的方式查看,有些可以以图形的形式提供视觉。统计数据菜单有几种方法可以评估您的设备和网络的健康状况。

要查看所有选项,请下拉统计菜单,如下所示:

Figure 19.1 – The Statistics menu

图 19.1–统计菜单

在本节中,我们将重点介绍统计菜单的一些关键功能。我们将首先看一下一般的统计数据,然后转向我们可以评估协议有效性的方法。然后,我们将通过涵盖不同的方式来总结我们可以在捕获中绘制和可视化的问题。

为了跟随以及一些例子,我们将使用bigFlows.pcap。要获得该文件的副本,请访问http://tcpreplay . app neta . com/wiki/captures . html # big flows-pcap。在那里,下载并打开 Wireshark 中的bigFlows.pcap

查看一般信息

Statistics 菜单中,有几个菜单选项提供关于文件中包含的捕获、协议和对话的一般信息。

一些示例包括以下选项:

  • 捕获文件属性:这提供了一般的文件信息,比如包的长度、大小和经过的时间,以及一个添加注释的部分。
  • 解析的地址:这个提供了解析的主机名和互联网协议 ( IP )地址的汇总。
  • 协议层次:这提供了文件中包含的协议分层列表的可视化。
  • 会话:这提供了两个端点之间的会话列表。
  • 端点:这列出了在捕获中发现的所有端点。
  • 数据包长度:概述了数据包长度和相关信息的列表。

有些信息可以提供网络流量的快照。例如,如果我们转到bigFlows.pcap并选择统计数据 | 数据包长度,Wireshark 将生成此报告:

Figure 19.2 – Viewing packet lengths

图 19.2–查看数据包长度

除了能够查看网络流量的一般统计数据之外,Wireshark 还有几种方法来评估特定协议的行为。

评估方案有效性

Wireshark 可以解析数百个协议。此外,统计菜单提供了多种方法来分析几种协议的有效性。

评估网络健康状况的一种方法是查看在网络上交互的不同协议的服务响应时间。该菜单选项提供了多个协议的子菜单,如以下屏幕截图所示:

Figure 19.3 – Service Response Time menu

图 19.3–服务响应时间菜单

使用此选项时,Wireshark 将评估某个特定协议的请求和响应之间的时间。以为例,要生成服务器消息块 ( SMB )的统计数据,返回到bigFlows.pcap并选择统计数据 | 服务响应时间 | SMB ,这将导致以下报告:

Figure 19.4 – Service response time for SMB

图 19.4–中小企业的服务响应时间

统计菜单有许多其他选项来评估协议,包括以下选项:

  • DHCP (BOOTP) :这个提供了关于动态主机配置协议 ( DHCP )有效性的度量。
  • BACnet :此提供评估楼宇自动化与控制网络 ( BACnet )流量时使用的细节。
  • DNS :这提供了关于域名系统 ( DNS )事务有效性的指标。
  • HTTP :可以查看超文本传输协议 ( HTTP )统计的详细信息。该菜单选项包括子菜单选项,如以下截图所示:

Figure 19.5 – Viewing HTTP submenu choices

图 19.5–查看 HTTP 子菜单选项

统计菜单还有一个 UDP 组播流报告,该报告提供了监控组播用户数据报协议 ( UDP )度量的能力。这是一个有价值的工具,因为组播流有时会产生突发流量,干扰设备的有效性。

此外,还可以查看 IP 版本 4 ( IPv4 )和 IP 版本 6 ( IPv6 )的统计数据,如 第 18 章子集化、保存和导出捕获中概述的。

Wireshark 中最令人印象深刻的选项之一是创建图表的能力。在 Statistics 菜单中,您会发现几个生成图表来展示数据流的机会。

绘制捕获问题

使用图表来说明你的观点是强有力的,因为视觉效果可以直接切入问题的核心。此外,用图表代替简单的数据会更容易吸引你的观众。

您可以使用的一种图形是流图,它显示了主机之间交换的数据。要查看您可能会看到的示例,请转至bigFlows.pcap。在显示过滤器中,输入udp.stream eq 22并运行过滤器。一旦完成,进入统计 | 流程图。Wireshark 随后会显示图表。在图形的左下角,选择限制以显示过滤器,过滤器将显示以下输出:

Figure 19.6 – Displaying a flow graph

图 19.6–显示流程图

一旦运行,流程图设置有几个选项来显示数据或以各种不同的格式导出数据,如图像或可移植文档格式 ( PDF )文件。

此外,您还可以运行统计菜单中的其他图形,如下所示:

  • 输入/输出图将显示两个方向的流量。
  • TCP 流图将显示单向流量。

这两个图都有助于直观了解常见问题,如丢帧、重复 ack 和数据流中断。

在下一节中,我们将评估如何创建一些基本的 I/O 图,以便我们在排除网络故障时可以直观地看到特定类型的流量。

创建输入/输出图形

I/O 图为提供了一种分析双向流量的方法,可以使用实时捕获或现有的跟踪文件来创建。

要生成特定流的图形,请返回到bigFlows.pcap。在显示过滤器中,输入tcp.stream eq 198并运行过滤器。一旦 Wireshark 显示了信息,我们将转到文件 | 导出指定的数据包……来缩小文件,这将显示以下窗口:

Figure 19.7 – Export Specified Packets window

图 19.7–导出指定的数据包窗口

确保选择了所有数据包 | 显示,如图图 19.7 所示。然后,将文件保存为Flow198.pcap

关闭bigFlows.pcap,然后打开Flow198.pcap,我们将看到网络拥塞的迹象。

检查错误

Flow198.pcap中,您将看到几个需要关注的区域,因为智能滚动条布满了黑线,这通常表明存在延迟的迹象。通过点击滚动条上的一个黑色条纹区域,我们可以看到TCP DUP ACK(重复确认)和TCP Fast Retransmissions,如下图所示:

Figure 19.8 – Indications of a congested network

图 19.8–网络拥塞的迹象

接下来,选择位于界面左下方的专家信息图标。在那里,通过仅显示注释部分来缩小焦点,如下面的屏幕截图所示:

Figure 19.9 – Viewing the Expert Information Note section

图 19.9–查看专家信息注释部分

注释部分,我们看到 Wireshark 怀疑以下内容包含在捕获的中:

  • 快速重新传输
  • 虚假重传
  • 中继
  • 重复确认

所有这些都表明流量没有如预期的那样移动。接下来,让我们创建一个包含重复 ack 的简单流量 I/O 图。

绘制重复的 ack

Flow198.pcap文件中,在显示过滤器中输入tcp.analysis.duplicate_ack,按然后按进入。接下来,进入统计并选择输入/输出图。一旦运行,Wireshark 将自动假定您想要查看过滤捕获的图形,并显示如下结果:

Figure 19.10 – I/O graph showing duplicate ACKs

图 19.10–显示重复 ack 的 I/O 图

在 I/O 图中,您会看到几个可以修改设置的区域。

修改设置

在屏幕的顶部,您将看到生成的图表。在下面的面板中,您会发现一个图表列表和列标题,允许您操作 Wireshark 显示数据的方式。在下面,您会发现一个可以进一步配置图表的区域,并提供添加或删除现有图表的功能。

让我们从查看 I/O 图中所示的列标题开始。

了解基本列标题

对于每个图形,您可以修改和/或查看字段值,如下所述:

  • Enabled :此复选框可选择是否显示图形。
  • 图形名称:默认情况下,Wireshark 生成一个名称;但是,您可以通过双击名称来修改和个性化字段值。
  • 显示过滤器:这是一个过滤器,您可以使用它将结果缩小到特定类型的流量。如果不输入显示过滤器,默认情况下将显示所有数据包。
  • 颜色:表示图形的颜色,可以修改。
  • Style :提供修改和呈现数据的方式。要查看所有选项,请下拉字段右侧的插入符号,这将显示选项列表,如下面的屏幕截图所示:

Figure 19.11 – I/O graph style options

图 19.11–输入/输出图形样式选项

  • Y 轴:提供将 Y 轴修改为字节或高级选择的能力,如总和(Y 域)计数(Y 域)。如果您下拉插入符号,您将看到以下选项:

Figure 19.12 – I/O graph y-axis options

图 19.12–输入/输出图 y 轴选项

  • Y 字段:这提供了在使用 Y 轴中的高级选择时指定字段值的能力。
  • SMA 周期:这为提供了指定一个简单移动平均线 ( SMA )时间段的间隔的能力。
  • Y 轴因子:默认为 1 ,因为将其更改为另一个整数会修改 Wireshark 显示数据的方式。

除了每个图表的字段值之外,还有一个部分可以添加或删除图表,以及完成其他任务。

添加、移除和复制图表

在图表列表下方,我们可以看到几个选项,包括:

  • 添加新图形:选择 + 符号,图形区域会出现一条新线条。此将默认为所有数据包;但是,创建后,您可以修改新创建的图表。
  • 删除图形:如果您想要删除图形,点击图形名称选择图形,然后选择符号。
  • 复制图形:如果要复制图形,点击图形名称选择图形,选择复制符号,从右边数第三个符号。
  • 删除所有图形:要删除所有图形,选择清除所有图形符号,即左起第四个符号。

除了能够修改设置之外,还可以探索其他选项。选项包括添加新图形、更改图形外观或放大特定数据点。

探索其他选择

一旦进入图表,您可以操作外观,添加更多的图表,和/或移动到以更好地可视化数据。为了探索其中的一些选项,返回到您为Flow198.pcap创建的复制 ack 图,如图图 19.10 所示,并完成以下动作:

  1. 选择添加新图图标,默认情况下会创建一个所有数据包图。
  2. 通过点击图形名称选项右侧的方块启用图形。

一旦图形处于活动状态,您可以通过更改样式来修改外观。例如,使用下拉菜单将所有数据包图形的样式更改为圆点,如下所示:

Figure 19.13 – Visualizing two I/O graphs

图 19.13–可视化两个 I/O 图

对外观感到满意后,您可以完成以下操作:

  • 选择拖动生成一个手形符号并在屏幕上移动。
  • 套索一个部分并选择缩放到图中的特定区域。
  • 间隔选项从 1 毫秒 ( 毫秒)更改为 10 分钟。
  • 显示一天中的时间数据被捕获。
  • 通过选择对数刻度切换到对数 y 轴,而不是(默认)线性 y 轴。
  • 选择自动更新,在实时捕获过程中持续更新数据,如界面右下角所示。

与 Wireshark 中的大多数选项一样,您可以将图形保存为各种格式,例如图像或 PDF 文件。此外,一旦您创建了图表,Wireshark 会将结果保存在您的配置文件设置中,您可以将其导出,以便与同事共享图表。

显而易见,我们可以通过多种方式用 I/O 图查看数据。在下一节中,让我们看看如何创建 TCP 流图。

比较 TCP 流图

虽然 I/O 图提供了可视化两个方向的流量的能力,但有时你会希望专注于单向的流量。这就是 TCP 流图发挥作用的地方。这些图表将有助于提供可视化捕获中不同流的方法。

要查看可用内容,请转到统计数据 | TCP 流图,如下所示:

Figure 19.14 – TCP Stream Graphs menu

图 19.14–TCP 流图菜单

一旦进入 TCP 流图子菜单,你可以看到有多种选择。您可以选择任何图形,这将打开一个窗口。进入窗口后,您可以选择五个选项中的任何一个。

让我们从查看时序图开始。

使用时序图

时序图将在时间内绘制序列数字。当你第一次启动图表时,你需要确保你选择了正确的方向,因为只有一个方向是有价值的。

TCP 流图子菜单中,您会看到以下两个选项:

  • 时间/顺序(史蒂文斯)
  • 时间/顺序(tcptrace)

虽然它们的功能相似,但还是有细微的区别。这两种方法都有助于发现数据传输中的延迟或中断。

当查看一段时间内序列号的图表时,我们应该看到稳定的数据流。在这一节中,我们将使用 Stevens 图逐步演示一个稳定的数据流示例。然后我们将使用 tcptrace 图,这是一个更复杂的选项,可以在图中显示选择性确认 ( 确认)。

为了让你明白其中的区别,让我们从史蒂文斯图开始,比较一下这两种类型。

理解史蒂文斯图表

Stevens graph 允许我们查看单个流的序列号,使用简单的格式,没有额外的选项。

要查看示例,请返回到Flow198.pcap文件。转到统计 | TCP 流图 | 时序(Stevens) ,将会产生以下输出:

Figure 19.15 – A steady transfer of data

图 19.15–稳定的数据传输

一旦进入图,您将看到以下元素,它们对应于图 19.15 中所示的数字:

  1. 这一行指出了河流的细节和方向。
  2. 这一行标识了文件的名称。
  3. 这里我们找到了 y 轴,它代表了字节 ( B )中的序号。
  4. 这里我们找到了 x 轴,它代表了以 ( s )显示的时间。
  5. 鼠标拖动缩放选项,其工作方式如下:
    • 拖动允许你移动图形。此外,当您单击特定数据包时,Wireshark 会调整数据包列表,直接转到该数据包。
    • 缩放可用于套索感兴趣的区域,放大特定数据包。
  6. 此选项将允许您完成以下操作:
    • 标识流编号。
    • 切换方向允许您切换方向,查看来自客户端或服务器的流量。
  7. 另存为… 可用于将图表保存为 PDF 或图像格式,用于报告,或与同事分享。

除了 Stevens 图之外,您还可以运行一个类似的 tcptrace 图,但是在使用该图时会显示不同的选项。

概述 tcptrace 图

tcptrace 图是基于 TCP trace 实用工具的,它收集端口上的流量并输出结果。

返回到bigFlows.pcap。打开后,在显示过滤器中输入tcp.stream eq 634。从菜单中选择统计 | TCP 流图 | 时间/顺序(tcptrace) 。将出现一个图表,如下面的屏幕截图所示:

Figure 19.16 – Viewing a tcptrace graph for stream 634

图 19.16–查看流 634 的 tcptrace 图

进入图表后,您会注意到 Wireshark 是如何跟踪以下信息的:

  • 接收窗口,在图 19.16 中显示为数字 1 ,是客户端可以接受的。
  • TCP 段,在图 19.16 中显示为编号 2 ,是正在传输的数据。

此外,在窗口底部,您会看到一个标记为选择 SACKs 的复选框。让我们逐步完成启用该选项的过程。

观察袋

在三方握手期间,客户端和服务器就对话的参数达成一致。在大多数情况下,每一方都会包含 TCP 选项,以进一步定义数据传输过程中使用的变量。其中一个选项是在数据交换期间请求使用选择 SACKs 。当使用时,服务器将继续发送数据,即使它不是在正确的顺序。如果有丢失的数据包,客户端将只通知发送方,这有助于避免重新传输的需要。

*要深入查看一组袋子,选择屏幕左下角的缩放。选中后,在屏幕左侧套索分组,如下面的屏幕截图所示:

Figure 19.17 – Zooming in on SACKs

图 19.17-放大麻袋

缩放之间交替,用鼠标拖动,直到你聚焦在下面的视图上:

Figure 19.18 – Viewing SACKs

图 19.18–查看袋子

放大图上的后,会看到 TCP 段线下面有几条竖线。这表示捕获范围内的麻袋。

注意

如果没有得到想要的结果,可以选择复位,如图图 19.18 中屏幕右下方所示。

向下钻取后,将光标放在其中一行上。当您选择一个数据点时,Wireshark 将镜像您的选择,以便您可以深入查看单个数据包。如下图所示,我将光标放在麻袋线上。在图表下方,您可以看到文本单击以选择数据包 16479 ,如下图中突出显示的内容:

Figure 19.19 – Drilling down on a specific packet

图 19.19–深入查看特定数据包

看到几个麻袋并不少见;然而,过量可能意味着网络故障。此外,接收主机需要在内存中保存大量数据段,这可能会导致主机陷入停顿甚至崩溃。

除了能够查看一段时间内的数据传输,另一个有用的工具是吞吐量图。

确定吞吐量

吞吐量是在任何给定的时间内发送和接收了多少数据(通常以每秒比特bps 为单位)。在 Wireshark 中,我们可以测量吞吐量和实际吞吐量,这是传输的有用信息。

使用bigFlows.pcap,在显示过滤器中输入tcp.stream eq 634。然后选择统计 | TCP 流图 | 吞吐量,会生成一个图,如下截图所示:

Figure 19.20 – Viewing throughput

图 19.20–查看吞吐量

这张图告诉了我们很多关于这次捕获中发生的事情。生成后,我选择了图 19.20 中沿着屏幕底部显示的所有三个选项。在屏幕截图中,我确定了该图的几个方面,如下所示:

  1. 第一个标识符代表数据段长度,即 TCP 报头后面的数据,以及任何选项。
  2. 第二个标识符代表吞吐量,即通过的数据量。
  3. 第三个标识符代表实际吞吐量,即捕获中有用的数据量。
  4. 第四个标识符显示在0的所有行,意味着没有数据被传输。

另一个有用的 TCP 流图是往返时间 ( RTT ),也就是从 A 到 B,再从 B 到 A 做一次完整的往返需要多长时间

评估往返时间

在理想的世界中,RTT 将是稳定的,正如在 第 17 章确定网络延迟问题中的以及在掌握延迟、吞吐量和丢包部分中所概述的那样。然而,情况并非总是如此。

要查看 RTT 图形,请返回到Flow198.pcap文件。选择统计 | TCP 流图 | 往返时间,会生成如下图:

Figure 19.21 – Viewing a RTT graph

图 19.21–查看 RTT 图表

一旦进入图表,您可以使用序列号为的 RTT 或时间为RTT 来查看数据。在本例中,我使用了默认的时间RTT。在图表中,我们可以看到以下元素:

  • y 轴是以毫秒为单位的 RTT
  • x 轴为序号。

要查看此数据包捕获中的差异,请放大图表的开头,如下所示:

Figure 19.22 – Zooming in on RTT for Flow198.pcap

图 19.22-放大 Flow198.pcap 的 RTT

一旦你放大,切换到拖动并检查 RTT 的变化。此外,您还可以将图表或零点移至特定的数据包。

接下来,让我们研究如何可视化窗口缩放图。

评估窗口缩放

在数据交换期间,每个端点不断通告一个窗口大小 ( WS )值(以字节为单位),指示它们可以接受多少数据。窗口缩放是一个值,它通过提供一个更准确地反映真实 WS 的乘数来扩展规定的 WS。

返回bigFlows.pcap并在显示过滤器中输入tcp.stream eq 634。选择统计 | TCP 流图 | 窗口缩放,如图所示:

Figure 19.23 – Viewing a window scaling graph

图 19.23–查看窗口缩放图

这个图表告诉了关于这次捕获的一些事情。我选择了图表底部显示的两个选项,如下所示:

  1. 第一个标识符代表接收窗口( Rcv Win ),它代表接收数据的端点的广告 WS。
  2. 第二个标识符代表输出的字节,表示传输中的字节。

字节输出线中的峰值之后,我们看到 Rcv Win字节输出线变平。这通常意味着接收器没有调整 WS,并且能够容易地接受连续的数据流。

如果您遇到瓶颈,这个图表会很有用。例如,您可以监视服务器的接收窗口,以帮助您评估随着时间的推移,该值是缩小、增长还是保持不变。

总结

Wireshark 有许多有用的工具和图表,可以帮助网络管理员使用各种方法随时了解网络上发生的情况。在本章中,我们首先概述了 Statistics 菜单中的各种选项,例如关于数据包捕获、协议层次结构的一般信息,以及评估众多协议健康状况的能力。

然后,我们研究了 I/O 图,并了解了如何利用不同的过滤器和表达式,创建不同颜色的图,以及同时查看几个图。此外,我们评估了使用 TCP 流图的能力。通过使用示例,我们首先评估了时序图,并比较了 Stevens 图和 tcptrace 图之间的差异。然后,我们总结了确定吞吐量、评估 RTT 和监控窗口缩放的价值。

在下一章中,你将会发现 CloudShark ( CS ),这是一款在线数据包分析工具,你可以在任何有互联网接入的地方,用它在你的浏览器中查看截图。我们将介绍使用 CS 与您的团队共享和分析数据包捕获的好处。您将很好地理解 CS 中包含的过滤器、图表和分析工具。此外,我们将查看许多在线存储库,以便定位样本捕获,从而提高我们的数据包分析技能。

问题

现在,是时候检查你的知识了。选择以下问题的最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 要查看文件中包含的协议分层列表,请转到统计数据| _ _ _ _ _ _。
    1. 捕获文件属性
    2. 解析的地址
    3. 协议层级
    4. 终点
  2. Wireshark 有几个图表,您可以运行这些图表来可视化流量。您可以使用的一种图表是 _____,它显示主机之间交换的数据。
    1. BACnet 图
    2. 流向图
    3. BOOTP 图
    4. 显示图形
  3. 要查看显示两个方向流量流量的图表,请使用 a(n)_ _ _ _ _ _ _。
    1. 输入输出图
    2. TCP 流图
    3. BOOTP 图
    4. 显示图形
  4. 创建 I/O 图后,Wireshark 会将结果保存在您的 _____ 中,您可以将其导出,以便与同事共享该图。
    1. 协议链
    2. 流存储库
    3. 引导文件
    4. 配置文件
  5. 如果在查看一段时间内序列号的图表时,您需要查看流中的任何 SACKs,您应该使用 _____ 图表。
    1. 引导协议(BOOTstrapping Protocol)
    2. TCP 流(Stevens)
    3. TCP 流(tcptrace)
    4. 显示
  6. _____ 是在任何给定时间发送和接收的数据量(通常以比特/秒为单位)。
    1. 吞吐量
    2. 喉咙
    3. 解雇
    4. 协议链
  7. 在数据交换过程中,每个端点不断通告一个 _____ 值(以字节为单位),表示它们可以接受多少数据。
    1. 循环时间(Round-Trip Time)
    2. 《华盛顿明星报》(Washington Star)
    3. 解雇
    4. 引导协议(BOOTstrapping Protocol)*

二十、使用 CloudShark 进行数据包分析

尽管 Wireshark 是一款功能强大、用途广泛的工具,但有时您可能需要让您的团队参与数据包分析练习。一个能让你轻松与同事分享数据包捕获的网站是 CloudShark ( CS )。CS 没有 Wireshark 那么多功能;但是,您仍然可以在分析过程中完成许多功能任务。在本章中,我们将了解 CS,这是一个基于浏览器的解决方案,它提供了与 Wireshark 相同的一些好处。

您将了解到,除了基本任务之外,您还可以创建一个帐户,并执行更高级的功能,如上传和共享照片。为了让您获得 CS 的全部优势,我们将逐步完成基本的数据包捕获分析,例如应用过滤器来缩小范围。此外,我们还将学习如何创建图形来提供数据的可视化表示。我们还将探索一些内置的分析工具。CS 有几个工具,可以让我们剖析一个网络电话 ( VoIP )呼叫,完成一个超文本传输协议 ( HTTP )分析,并监控可能的威胁。最后,为了让您继续提高您的数据包分析技能,我们将看一看许多可以获取样本捕获的在线存储库。

本章将通过涵盖以下主题来解决所有这些问题:

  • 发现 CloudShark
  • 概述各种过滤器和图表
  • 评估不同的分析工具
  • 定位样本捕获

发现 CloudShark

我们大多数人都会同意 Wireshark 是一个很好的故障排除工具,它还能识别恶意软件和网络上的其他异常。但是,Wireshark 有一些限制,因为它必须安装在本地机器上才能收集流量,而且它可能是资源密集型的。此外,Wireshark 不是为多人同时使用而设计的,例如在团队中。

CS 是一个基于浏览器的软件即服务,它提供了一种上传数据包捕获的方式,并与同事甚至全世界分享。您还可以即时进行分析,或者简单地将其用作基于浏览器的解决方案来了解协议行为。

CS 提供了以下特性:

  • 捕获索引,您可以在其中存储和共享捕获
  • 主界面,您可以在其中应用过滤器和添加注释
  • 进行高级分析和威胁评估的能力

你可以在https://www . QA cafe . com/analysis-tools/cloudshark/QA-cloudshark-personal-SaaS/找到 CS。在主页上,您可以登录或设置免费试用。要充分利用 CS,请创建一个试用帐户。一旦您的帐户激活,您将进入欢迎页面,如下图所示:

Figure 20.1 – CS welcome page

图 20.1–CS 欢迎页面

在欢迎页面中,您可以从您的 PC 或笔记本电脑上传文件,或者从统一资源定位器 ( URL )导入文件,如图 20.1 左侧所示。

上传文件后,它们将会列在屏幕的右侧。一旦你熟悉了 CS 界面,你就可以调整你的账户的很多方面了,我们接下来会看到。

修改首选项

在 CS 中,有几个你可以定制和微调的区域,比如账户信息、管理你的上传、创建收藏和强制配额。要进入首选项菜单,请进入屏幕右上方,这里有一个下拉菜单,允许您修改以下变量:

  • 账户:在这里,您可以查看自己账户的签约信息类型。它还提供了选项,当你准备好了就可以开始订阅。
  • 捕获索引:您可以在这里自定义列标题。如下面的屏幕截图所示,您可以使用默认布局,或者删除任何可见字段。此外,您可以将附加列从可用选项中拖到您想要的位置:

Figure 20.2 – CS Capture Index Preferences

图 20.2–CS 捕获索引首选项

完成选择后,选择保存,CS 将根据您的喜好重新排列各列。

  • 上传 : CS 被设计成一个协作工具,所以它假定你将具有交互性,并且其他团队成员将可以访问你上传的文件。在上传首选项中,您可以告诉 CS 您要将上传的文件分配给哪个组,如下所示:

Figure 20.3 – CS Uploads preferences

图 20.3–CS 上传首选项

一旦文件被加载,您可以通过选择只读读/写来进一步限制群组成员可以对文件做什么。此外,CS 可以让访客访问您上传的文件。

  • API 令牌:你可能有自己想要与 CS 交互的工具。在这里你可以找到应用编程接口 ( API )令牌,这样 CS 就可以和你的软件交互了。
  • 使用配额:数据包捕获会消耗大量存储空间。该首选项菜单选项将列出您已经使用了多少分配的存储空间(试用版提供 2GB(GB)的存储空间),以及您已经完成了多少分配的上传(试用版最多提供 500 个文件)。如果你有超限的危险,有升级的链接。
  • 收藏:为了组织你的捕获,你可以创建收藏,将相似的捕获放在一起。创建后,收藏将出现在单独的登录页面上,如以下屏幕截图所示:

Figure 20.4 – CS capture collections

图 20.4–CS 捕获集合

修改你的偏好后,你就可以上传你的照片,与你的团队或全世界分享,如下所述。

上传捕获

要上传和分享您的截图,请转到 CS 欢迎页面的左侧,如图 20.1 所示。你可以将它们从你的文件管理器中拖放到上传文件区域,或者你可以点击并浏览到一个文件位置。文件上传后,CS 将显示摘要,如下所示:

Figure 20.5 – File upload summary

图 20.5–文件上传摘要

上传文件后,点击 Done 返回捕获索引主菜单,该菜单将向显示您存储库中的文件列表。在那里,选择文件左侧的复选标记,顶部的菜单选项将被激活,如下面的屏幕截图所示:

Figure 20.6 – File selected

图 20.6–选定的文件

菜单选项将允许您对每个文件完成多项任务。接下来我们来探讨一下这个概念。

使用捕获文件

CS 有几个菜单选项。例如,您可以进行深度搜索捕获,这将允许您在捕获中搜索特定字段。此外,您还可以使用位于捕获索引功能左下方的索引过滤器进行搜索,如下所示:

Figure 20.7 – Index Filters

图 20.7–索引过滤器

要启动搜索,请单击下拉菜单并选择一个选项,如以下屏幕截图所示:

Figure 20.8 – Using an index filter

图 20.8–使用索引过滤器

一旦您选择了一个选项,CS 将生成一个表格,您可以在下面填写请求的变量。

您可以通过对文件使用添加标签功能来帮助识别内容,从而改进搜索过程。例如,如果你有一个从4 号楼:东厅获得的抓图,你可以添加一个标签,如下所示:

Figure 20.9 – Adding a tag to a file

图 20.9–向文件添加标签

随着时间的推移,您的存储库中可能会有许多文件。添加标签有助于缩小搜索范围。

当您完成对文件的操作后,您可以选择删除菜单选项,这将永久删除文件。

接下来,我们将探索您可以对您的捕获执行的其他任务,包括设置共享权限和添加到您的收藏。

在 CS 中共享捕获

CS 提供了一种方式来安全地共享您的捕获,并允许从各种设备进行数据包分析。当您想要共享文件时,选择共享,将会打开一个窗口,如下图所示:

Figure 20.10 – Updating sharing settings

图 20.10-更新共享设置

您可以与您的一个小组共享,并使用或仅查看修改&删除来定义他们访问文件后可以做什么。您还可以将与客人分享设置为以下选项之一:不改变不分享公开

除了共享之外,您还可以创建采集集合来将相似的采集分组和组织在一起。

添加到收藏

收藏就像一个文件夹,为组织相似类型的文件提供了一种便捷的方式。要向收藏中添加文件,选择收藏按钮。如果您没有任何集合,可以从下拉菜单中创建新集合,如下所示:

Figure 20.11 – Adding a file to a collection

图 20.11–向集合添加文件

首先,下拉菜单选择,选择创建新收藏… ,然后选择保存。这将打开一个表单,您可以在其中输入收藏的名称。在我的例子中,我使用了名字基本分析。在名称之后,您可以提供一个简短的描述,如下图所示:

Figure 20.12 – New collection

图 20.12–新系列

在表格下方,您可以将访问权限设置为私人公共。此外,您可以选择单个文件权限,如下面的屏幕截图所示:

Figure 20.13 – Collection access

图 20.13–集合访问

完成后,选择保存返回抓取索引。一旦进入捕获索引,您可以选择一个文件,双击或者选择打开标签菜单选项,在分析窗口中打开该文件。

创建帐户后,CS 提供了一种为您和您的团队定制界面的方法。在下一节中,我们将了解如何创建自定义配置文件来个性化您的工作流程。

创建配置文件

一旦进入 CS,你会发现一个接口,看起来类似于 Wireshark 接口。CS 是灵活的,你可以做一些修改。为了向您展示一些特性,我们将使用位于https://www.cloudshark.org/captures/0012f52602a3的的HTTP.cap文件。

打开文件后,您可以调整界面。例如,为了给您更多的空间,您可以将数据包字节窗口向右移动,以便您可以展开协议树,如该屏幕截图所示:

Figure 20.14 – Modified interface

图 20.14–修改后的界面

此外,您可以通过创建唯一的配置文件来进行修改,以自定义您的工作流。选择配置文件下拉菜单选项,然后选择新建配置文件,其中将会启动如下窗口:

Figure 20.15 – Creating a new profile

图 20.15–创建新的概要文件

在该界面中,您可以选择包含过滤器协议首选项的选项卡之一来创建您的自定义配置文件。

现在您的捕获已经打开,并且您已经修改和定制了界面,您已经准备好进行您的分析了。在下一节中,我们将评估过滤和绘制流量的选择。

概述各种过滤器和图表

在 CS 中,有几种方法可以查看您的捕获。过滤器缩小捕获范围,仅显示您想要查看的流量,图形提供数据的可视化表示。

一个常见的任务是应用显示过滤器。CS 易于使用的界面提供了一种缩小你的范围的方法。让我们在下一节中了解更多这方面的内容。

使用过滤器显示数据

CS 中的显示过滤器类似于 Wireshark 过滤数据的方式。通过在界面的左上角输入过滤器,可以应用过滤器来识别具有特定端口、IP 地址或协议的数据包。进入过滤器后,选择应用运行过滤器。

在下面的截图中,我使用了http过滤器,它缩小了捕获范围,只显示 HTTP 流量:

Figure 20.16 – HTTP traffic

图 20.16–HTTP 流量

使用显示过滤器时,语法必须正确,否则会出现错误。例如,TCP过滤器(使用大写字母)没有使用正确的语法,会产生错误,如下所示:

Figure 20.17 – Syntax error

图 20.17-语法错误

为了有效地运行这个过滤器,您必须输入tcp(使用小写字母),这类似于 Wireshark 使用过滤器的方式。

除了标准过滤器之外,你还可以通过字符串或十六进制 ( 十六进制)值创建一个搜索,如下面的示例所示:

  • 要查找特定的图像,请输入frame contains "adc_pet_dog_336x280"并用引号将字符串值括起来。
  • 要搜索特定的媒体访问控制 ( MAC )地址,使用frame contains 28:e3:47:8c:02:60

然后,CS 将搜索并显示结果(如果有)。

过滤器有助于缩小范围。现在,让我们来看看在 CS 中可以快速应用的各种图表,以帮助直观地表示数据。

使用图表查看数据

在您的捕获中,您可能想要创建一个所有流量或过滤捕获的的图表。右上角有一个下拉菜单,如下图所示:

Figure 20.18 – CS Graphs menu

图 20.18–CS 图表菜单

选择您想要的图形类型后,CS 将显示该图形。如果您想要更多的交互性,选择在新窗口中打开,然后选择右上角的在编辑器中打开,如下图所示:

Figure 20.19 – Open In Editor option

图 20.19–在编辑器中打开选项

这将打开一个显示图形的窗口,如下所示:

Figure 20.20 – Viewing a CS graph

图 20.20–查看 CS 图表

沿着图形的右下方,选择编辑该图形,这将打开一个新窗口,如下所示:

Figure 20.21 – Editing options in a CS graph

图 20.21–编辑 CS 图中的选项

在那里,您可以添加或修改以下选项:

  • 图表标题:添加一个反映图表内容的标题。
  • 时间间隔:以毫秒、秒或最小值设定。
  • Y 轴单位:按包、字节、值或包、字节、位/秒设置。
  • 选项:为了进一步定制图表,您可以添加包括以下内容的附加变量:
    • 使用一天中的时间
    • 包含数据包注释
    • 同类型堆叠系列
  • 显示过滤器:您可以在这里输入显示过滤器。您还可以选择想要的数据表示样式,如线条、柱形图或样条线。

一旦完成图表,您可以打印图表或将其导出为以下格式之一的图像:

  • 便携式网络显卡 ( PNG )
  • 联合图像专家组 ( JPEG )
  • 可缩放矢量图形 ( SVG )

除了图表和过滤器,有时您需要执行更高级的分析。下一节概述了用于快速检查数据的各种工具。

评估不同的分析工具

CS 提供了一个解决方案来与您的团队分享数据包捕获。一些分析工具可通过网络界面获得。除了 CS 中的图形之外,还有许多其他内置的分析工具。分析工具的下拉菜单位于屏幕的右上方,在这里您可以找到各种菜单选项,如下所示:

Figure 20.22 – Viewing analysis tools

图 20.22–查看分析工具

图 20.22 所示跟随 SSL跟随 HTTP ,则表示该工具不适用于当前捕获。

从列表的顶部,您会发现许多工具可用于您的分析。让我们从查看对话、梯形图和过滤流开始。

关注视频流并查看对话

在 Wireshark 中,我们在统计菜单下有许多工具,帮助我们理解数据包捕获。虽然 CS 没有那么多功能,但您会看到,您可以使用内置的分析工具进行初步评估。

以下列表概述了分析工具菜单选项中的前几个选项:

  • Follow StreamFollow SSLFollow HTTP :类似于 Wireshark 中的Follow Stream函数,这些函数提供了一种查看两个端点之间单个对话细节的方法。
  • 梯形图:类似于 Wireshark 中的流程图,显示端点来回通信,如下图所示:

Figure 20.23 – Ladder diagram

图 20.23–梯形图

  • 网络端点:这将提供一个端点列表。在窗口中,您可以根据您想要查看的端点类型进行过滤,如 ethipv4ipv6tcpudp ,如下图所示:

Figure 20.24 – Endpoints

图 20.24–端点

  • GeoIP 世界地图:选择后,会显示数据包的来源,如下图所示:

Figure 20.25 – GeoIP World Map

图 20.25-GeoIP 世界地图

  • 协议对话:这将提供一个对话列表,类似于 Wireshark。在窗口中,您可以根据您希望看到的对话类型进行过滤,如 ethipv4ipv6tcpudp

CS 提供了许多可以用来分析数据的工具。下一节将展示我们如何查看 VoIP 呼叫、图表数据包长度和域名系统 ( DNS )活动的细节。

查看数据包长度和 VoIP 活动

有些分析工具在时可能没有意义;但是,它们在故障排除时确实提供了价值,因此值得运行一些图表来查看结果。

下一组分析工具包括以下选项:

  • 数据包长度:提供数据包长度和其他信息的交互图形,如平均值最小值最大值速率,如以下截图所示:

Figure 20.26 – Packet Lengths

图 20.26–数据包长度

  • DNS 活动:这提供了 DNS 查询、响应和资源记录 ( RR )类型的计数。
  • VoIP 呼叫:这提供了在文件中找到的任何 VoIP 呼叫的列表。此外,还有以下元素的可排序汇总:呼叫开始时间停止时间初始发言人协议数据包,如下图所示:

Figure 20.27 – CS VoIP calls

图 20.27–CS VoIP 呼叫

  • RTP Streams :列出在文件中找到的实时传输协议 ( RTP )流。

另一组工具可以分析 HTTP 流量,帮助识别无线网络问题。

探索 HTTP 分析和无线流量

当对 HTTP 或无线网络进行故障排除时,CS 分析工具包括以下选项:

  • HTTP Analysis :这将列出捕获文件中请求的所有 URL,以及请求的数量。
  • 无线网络:这提供了在文件中找到的任何无线网络的列表,以及以下内容的可排序摘要:基本服务集标识符 ( BSSID )、SSID、供应商、Signal_dBm、通道和安全性。

CS 有许多类似于 Wireshark 的工具。但是,最后一个分组提供了快速评估潜在恶意活动的数据包捕获的独特能力。

监控可能的威胁

CS 有两个工具可以让您确定捕获中是否有任何可疑活动,如下所示:

  • 威胁评估:这是一个更高级的选项,将扫描捕获文件中潜在的恶意流量。如果没有发现,报告将返回通知:全部清除!
  • Zeek 日志 : Zeek 是一款开源网络分析器,用于监控流量中的异常或可疑活动。

这些工具将帮助分析人员评估网络威胁。要查看包含恶意活动的捕获示例,请访问https://www.cloudshark.org/captures/f35aa6fcd160。选择分析工具 | 威胁评估,CS 将显示如下输出:

Figure 20.28 – Viewing a threat assessment report

图 20.28–查看威胁评估报告

通过运行快速报告,您可以立即看到有一个高严重性威胁评估级别。选择屏幕中间的查看高级威胁分析,这将打开另一个窗口,如下所示:

Figure 20.29 – Examining the advanced threat analysis

图 20.29–检查高级威胁分析

此外,您可以运行在捕获中发现的 Zeek 日志的报告。选择分析工具 | Zeek Logs ,CS 会调出文件中的日志信息汇总,如下图所示:

Figure 20.30 – Zeek Logs

图 20.30–Zeek 日志

一旦进入摘要,您可以选择浏览所有日志,如图 20.30 右下角所示,以发现更多细节。

既然您已经看到了使用 CS 分析数据的许多方法,那么让我们来看看在哪里可以获得数据包捕获来增强您的分析技能。

定位样本捕获

在学习数据包分析的时候,学习各种各样的捕获是很重要的,直到你精通在一个文件中寻找什么。这可能需要一段时间,但这是值得努力的。

首先,让我们看看PacketLife.net如何在 CS 中提供一种便捷的方式来打开和检查数据包捕获。

检查捕获

当使用数据包捕获时,您可能希望与您的团队一起了解一个不熟悉的协议。今天有许多地方可以获得数据包捕获;我经常去的一个地方是 https://packetlife.net/的 T2。

到达PacketLife.net后,导航到 http://packetlife.net/captures/的,在那里你可以搜索捕获物。比如我找到了snmp-ipv4.pcap,如下截图所示:

Figure 20.31 – Packet capture found at PacketLife.net

图 20.31–在 PacketLife.net 发现的数据包捕获

找到一个数据包捕获后,可以直接在 CS 中打开,如下图:

Figure 20.32 – Packet capture opened in CS

图 20.32–在 CS 中打开的数据包捕获

在 CS 中,您可以使用各种内置工具来研究捕获,或者您可以下载文件并在 Wireshark 中打开它,以获得更好的可视化效果或更高级的数据分析。

为了继续培养您在数据包分析方面的技能,我列出了几个网站,您可以在这些网站上找到各种捕获。

寻找更多捕获

这里有几个网站可以给你各种真实的网络流量:

这只是您可以从哪里获得样本来磨练您的技能的部分列表。随着您越来越多地参与流量分析,您很可能会发现更多带有样本捕获的在线存储库。访问他们,下载捕获,并继续提高您的数据包分析技能。

总结

在本章中,我们了解了 CS,一种允许您在浏览器中查看和分析数据包捕获的工具。我们学习了 CS 提供检查捕获的能力的一些方法,其中许多类似于 Wireshark。我们从发现 CS 开始,学习了修改首选项、处理捕获和创建定制配置文件的方法。然后,我们评估了过滤捕获以仅显示特定类型流量的方法,并创建了各种图表。

此外,我们了解到 CS 拥有丰富多样的分析工具。工具包括跟随流网络端点GeoIP 世界地图数据包长度DNS 活动VoIP 呼叫无线网络,以及评估威胁的方法。我们发现,一般来说,有许多信息包捕获资源,您可以访问并下载一个捕获文件来研究和提高您的信息包分析技能。然后我们看了一下PacketLife.net,它有一个在线的捕获文件库供下载,或者可以选择在 CS 中打开并分析它们。最后,我们回顾了一些您可以搜索数据包捕获的位置,以进一步提高您使用 Wireshark 进行数据包分析的技能。

问题

现在,是时候检查你的知识了。选择以下问题的最佳答案,然后检查您的答案,这些答案可在评估附录中找到:

  1. 首选项中,_____ 是您可以自定义列标题的地方。您可以使用默认布局,删除所示的任何可见字段,或者将附加列拖到您想要的位置。
    1. 账户
    2. 上传
    3. 解码窗口
    4. 捕获指数
  2. 除了标准过滤器,您还可以使用 _____ 值来搜索特定图像。
    1. 线
    2. 十六进制
    3. 手艺
  3. _____ 类似于 Wireshark 中的流程图,显示 endpoint 来回通信。
    1. 梯形图
    2. 步骤图表
    3. VoIP 阶梯
    4. 时间间隔
  4. 网络端点报告的右下角,您会看到一个选择 _____ 的按钮,它会直观地显示数据包的来源。
    1. 步骤图
    2. 飞船
    3. 时间间隔
    4. GeoIP 世界地图
  5. 在 CS 中,____ 是一个更高级的选项,它会扫描捕获中潜在的恶意流量。
    1. 恶意的谈话
    2. 恶意端点
    3. 威胁评估
    4. 威胁地图
  6. CS 分析工具内置 _____,这是一款开源网络分析器,用于监控流量中的异常或可疑活动。
    1. HTTP 分析
    2. 步骤图
    3. 【T0 声】T1
    4. Decode.io
  7. 在 CS 中,您可以通过创建唯一的 _____,对工作流进行定制。
    1. 轮廓
    2. 阶梯图
    3. 威胁地图
    4. 解码窗口

延伸阅读

有关更多信息,请参考以下链接:

附录 A:答案

第一章

  1. D.20 世纪 90 年代
  2. C.爱因斯坦
  3. B.闲谈
  4. C.基线
  5. A.反应的
  6. C.物联网设备
  7. B.多拉过程

第二章

  1. C.迷你图
  2. D.杂乱的
  3. B.pcap
  4. D.解剖器
  5. C.mergecap
  6. A.捕获引擎
  7. B.用于查看本机的 IP 信息

第三章

  1. C. libpcap
  2. C.802.11
  3. D.mmdbresolve
  4. B.Npcap(美国国家广播公司)
  5. A.伊迪丝卡普
  6. B.特鲁姆
  7. C.新闻

第四章

  1. A.清楚的
  2. D.先前显示的数据包
  3. D.彩色数据包列表
  4. C.视角
  5. B.编辑
  6. C.状态栏
  7. D.在新窗口中显示数据包

第五章

  1. A.局域网
  2. C.manuf.txt
  3. B.输出
  4. D.单模
  5. A..pcapng
  6. C. UTP
  7. C.会话
  8. D.统计数字

第六章

  1. D.默认
  2. B.编辑 | 出场
  3. C.红色
  4. A.编辑 | 偏好
  5. B.编辑
  6. B.轮廓
  7. C.红色

第七章

  1. B.绿色的
  2. C.价值
  3. D.udp port 53
  4. A.表示
  5. D....并且没有被选中
  6. B.BPF
  7. A.准备一个过滤器

第八章

  1. C.会议
  2. A.运输
  3. D.介绍会;展示会
  4. B.众所周知
  5. D.段
  6. C.互联网协议(Internet Protocol)
  7. A.测量与控制(Measurement and Control)

第九章

  1. B.(电源)插座
  2. B.724 和 725
  3. D. PSH
  4. C.20
  5. C.动态主机配置协议
  6. D.选择
  7. D.512

第十章

  1. C.frame.marked==1
  2. B.窗口比例
  3. C.解雇
  4. D.鳍状物
  5. C.936
  6. A.寿命终止
  7. D.时间戳

第十一章

  1. C.网络控制
  2. B.B 类私有 IPv4 地址
  3. D.128
  4. D.跳跃总数
  5. C.3
  6. C.0xfbb74
  7. A.65,535

第十二章

  1. C.不能得到的
  2. D.反对
  3. B.参数问题
  4. A.ICMP 的类型 3 和 ICMPv6 的类型 1
  5. B.砰
  6. C.数据包太大
  7. D.类型 3 和类型 9

第十三章

  1. B.根
  2. C.命令式的
  3. D. PTR
  4. D.缩短了的
  5. B.磁盘操作系统
  6. A.名字
  7. C.nslookup

第十四章

  1. C.发现
  2. B.请求
  3. D.斯拉克语
  4. B.547
  5. D.海伦
  6. B.请求的 IP 地址
  7. A.解除武装、复员和重返社会

第十五章

  1. C.POST
  2. D.街头流氓
  3. D.2.0
  4. C.保持活力
  5. B.1 小时
  6. B. MIME
  7. A.隐藏物

第十六章

  1. C.数据传输器
  2. D.1 和 2
  3. D.反向地址解析协议(Reverse Address Resolution Protocol)
  4. C.无偿 ARP
  5. A.暴风雨
  6. C.操作码
  7. B.IDS/IPS

第十七章

  1. A.潜伏
  2. D.吞吐量
  3. C.智能滚动条
  4. B.保持活力
  5. C.注意
  6. B.数据包丢失
  7. A.先前显示的数据包

第十八章

  1. C.会话
  2. A.协议层级
  3. B..pcapng
  4. D.标记
  5. C. HTTP
  6. D.星号
  7. A.统计数据

第十九章

  1. C.协议层级
  2. B.流向图
  3. A.输入输出图
  4. D.配置文件
  5. C.TCP 流(tcptrace)
  6. A.吞吐量
  7. B.《华盛顿明星报》(Washington Star)

第二十章

  1. D.捕获指数
  2. B.线
  3. A.梯形图
  4. D. GeoIP 世界地图
  5. C.威胁评估
  6. C.【T0 声】T1
  7. A.轮廓
posted @ 2025-06-19 16:04  绝不原创的飞龙  阅读(213)  评论(0)    收藏  举报