Wireshark2 网络分析秘籍(三)

十二、FTP、HTTP/1 和 HTTP/2

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

  • 分析 FTP 问题
  • 过滤 HTTP 流量
  • 配置 HTTP 首选项
  • 分析 HTTP 问题
  • 导出 HTTP 对象
  • HTTP 流量分析
  • 分析 HTTPS 流量-SSL/TLS 基础知识

介绍

FTP 是为通过 TCP/IP 在网络上传输文件而创建的协议。它是一种协议,分别在数据和控制连接的 TCP 端口2021上运行。

HTTP 和 HTTPS 都用于浏览互联网,或者连接到组织内部或云中托管的其他软件。当我们使用 SSL/TLS 保护 HTTP 时,使用 HTTPS 来保护明文数据交换免受入侵和黑客攻击。当连接到您的银行、邮件帐户(例如,Gmail)或任何其他安全应用时,会用到它。

从 1991 年开始,HTTP 经历了不同的版本,如 0.9、1.0、1.1 和 2015 年发布的最新 v2.0。

在本章中,我们将讨论这些协议,它们是如何工作的,以及如何使用 Wireshark 来查找网络中的常见错误和问题。

分析 FTP 问题

FTP 有两种操作模式:

  • 主动模式(ACTV) :在这种模式下,客户端向服务器发起控制连接,服务器向客户端发起数据连接
  • 被动模式(PASV) :在这种模式下,客户端向服务器发起控制和数据连接

这两种类型的连接都可以实现,它们将在本菜谱的*工作原理中解释…*一节。

做好准备

使用 FTP 时,如果您怀疑存在任何连接或响应缓慢的问题,请将端口镜像配置为以下选项之一:

  • FTP 服务器端口
  • 客户端端口
  • 流量穿过的链路

如果需要,配置捕获或显示过滤器。

怎么做…

要检查 FTP 性能问题,请按照下列步骤操作:

  1. 首先,如前几章所述,检查任何以太网、IP 或 TCP 问题。在许多情况下,响应缓慢是由于网络问题,而不一定是由于应用问题。在客户端和服务器之间执行简单的 ICMP ping(数据包较大,比如 1,500 字节),因为它有助于发现路径上是否有任何延迟或故障。

  2. 检查 TCP 重新传输和重复的 ack。检查它们是在整个流量上还是仅在 FTP 连接上:

    • 如果您在各种连接上收到它,这可能是由于影响整个流量的慢速网络造成的
    • 如果您只在同一个服务器或客户端的 FTP 连接上得到它,这可能是由于服务器或客户端速度太慢
  3. 当您在 FTP 文件传输中复制单个文件时,您应该在 I/O 图中得到一条直线,在 TCP 流图(时间序列)中得到一个直线梯度。

  4. 在这个截图中,我们可以看到一个坏的 FTP 在 TCP 流图中的样子(时序):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.1:失败的 FTP-TCP 流图

  1. 在下面的屏幕截图中,我们可以看到它在 I/O 图中的样子(配置了过滤器):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.2:失败的 FTP-I/O 图形

  1. 在下面截图显示的捕获文件中,我们可以看到 TCP 窗口问题。这些因素如下:
    • 服务器15.216.111.13向客户端发送 TCP 窗口已满消息,表示服务器发送窗口已满(数据包5763)。
    • 客户端10.0.0.2向服务器发送 TCP 零窗口消息,告知服务器停止发送数据(数据包5778)。
    • 服务器不断向客户端发送 TCP 零窗口探测消息,询问客户端条件是否仍然是零窗口(这告诉服务器不要再发送任何数据)。客户端用 TCP 零窗口探测 Ack 来回答这些消息,表明情况仍然如此(数据包57935931)。
    • 过了一会儿,客户端向服务器发送消息 TCP 窗口更新,告诉它开始增加 FTP 吞吐量(数据包5939)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.3:失败的 FTP 慢速客户端

  1. 在前一种情况下,它只是一个慢速客户端。我们通过修改和删除一些不必要的程序解决了这个问题。

如果您遇到连接问题,可能是由于服务器无法正常工作,防火墙阻止了连接,或者服务器或客户端上安装的软件阻止了连接。在这种情况下,请执行以下步骤:

  1. 对于SYN / SYN-ACK / ACK数据包,TCP 连接是否正确打开?如果没有,可能是由于以下原因:

    • 阻止通信的防火墙。请咨询系统管理员。
    • 没有运行的服务器。在进程表、FTP 服务器管理等服务器上检查这一点。
    • 服务器的一个软件阻塞了连接。它可以是具有阻止连接的附加防火墙的防病毒软件、VPN 客户端或任何其他安全或保护软件。
    • 还要检查客户端的连接。它可能被 VPN 客户端、客户端上的防火墙等阻止。
  2. 在主动模式下,客户端打开与服务器的连接,服务器打开另一个连接。确保途中的防火墙支持它,或者使用被动模式。

它是如何工作的…

FTP 有两种模式:主动和被动。在主动模式下,服务器打开到客户端的另一个连接,而在被动模式下,是客户端打开到服务器的第二个连接。让我们看看它是如何工作的。

在被动模式下,操作如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.4: FTP 被动模式步骤

这些内容如下所述:

  1. 客户端打开从随机端口 P (示例中为1024)到服务器端口21的控制连接
  2. 服务器从端口21应答回客户端端口1024
  3. 现在,客户端打开从端口 P + 1 (在示例中为1025)到服务器已经打开并通知客户端的数据端口(在示例中为端口2000)的数据连接
  4. 服务器从数据端口(本例中为2000)应答发起连接的客户端端口,即数据端口 P + 1 (本例中为1025)

在主动模式下,操作略有不同:

  1. 客户端打开从随机端口 P (示例中为1024)到服务器端口21的控制连接
  2. 服务器从端口21应答到客户端端口1024
  3. 服务器打开从端口20到客户端端口 P + 1 (示例中为1025)的数据连接
  4. 客户端从数据端口 P + 1 (例子中为1025)到服务器端口20外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传应答

图 12.5: FTP 主动模式步骤

还有更多…

FTP 是一个非常简单的应用,在大多数情况下,FTP 问题都有非常简单的解决方案。一些例子如下:

  • 问题 1 :我监测到一个国际连接,在网络的一端是 FTP 客户端,另一端是 FTP 服务器。客户抱怨运行缓慢,并指责国际服务提供商。当我向服务提供商询问时,他们说连接几乎没有负载(10 Mbps 线路的使用率只有 20%),当我检查线路时,我证实了这一事实。当我查看 TCP 问题(重新传输、窗口问题等等)时,没有任何问题。只是检查一下,我把 FTP 服务器拆了,装了另一个(有很多免费的),就开始工作了。这是一个低效率的 FTP 服务器的简单问题。
  • 问题 2 :一位客户抱怨说,当连接到一个 FTP 服务器时,每尝试五六次后,连接都被拒绝。当我用 Wireshark 检查时,我看到 FTP 连接拒绝消息(我已经从客户的投诉中知道了这一点),所以它看起来像一个死胡同。只是为了检查,我开始停止服务器上运行的服务,问题就出来了。是一个反病毒软件干扰了这个特定的 FTP 服务器。

底线是:即使使用 Wireshark(和其他软件),有时常识会给你更多的帮助。

过滤 HTTP 流量

可以为 HTTP 配置许多过滤器。在这个菜谱中,让我们集中讨论在这个上下文中最常用的显示过滤器。

做好准备

按照前面的方法配置端口镜像,并快速浏览一下第 3 章使用捕获过滤器

怎么做…

要配置 HTTP 过滤器,可以直接在显示窗口栏写过滤器表达式;打开表达式窗口,通过右键单击数据包窗格中所需的参数来选择 HTTP 参数(如第 4 章使用显示过滤器所述)。

可以在 HTTP 上配置各种过滤器。

基于名称的过滤器如下:

  • 对特定网站的请求 : http.host == "www.packtpub.com"
  • 对包含单词 PacktPub 的网站的请求:http.host contains "packt.pub"
  • 从 PacktPub 转发的请求:http.referer == http://www.packtpub.com/

请求方法过滤器如下:

  • 所有获取请求 : http.request.method == GET
  • 所有 HTTP 请求 : http.request
  • 所有 HTTP 响应 : http.response
  • 所有未获得的 HTTP 请求 : http.request and not http.request.method == GET

错误代码过滤器:

  • HTTP 错误响应(代码 4xx 表示客户端错误,代码 5xx 表示服务器错误) : http.response.code >= 400
  • HTTP 客户端错误响应 : http.response.code >= 400http.response.code <= 499
  • HTTP 服务器错误响应 : http.response.code >= 500http.response.code <= 599
  • HTTP 响应代码 404(未找到) : http.response.code == 404

当您配置一个简单的过滤器如http.host == packtpub时,您不需要在""字符中关闭它。如果你需要一个更复杂的字符串,比如packtpubrn或者几个单词的字符串,那么你需要在""中关闭它,比如"http.host == packtpubrn"

它是如何工作的…

我们来看看 HTTP 上的一些细节。

HTTP 方法

主要的 HTTP 请求方法发布在 RFCs 2616 中。这些年来,还有一些其他的 HTTP 方法被标准化了。后来,通过对 RFC 2616 (2817、5785、6266 和 6585)和附加标准(RFC 2518、3252、5789)的更新,增加了附加方法。

这些是 RFC 2616 中描述的基本方法:

  • OPTIONS:用于客户端请求确定 web 服务器的能力。
  • 当我们请求一个 URL 时使用。
  • HEAD:类似于GET,但是服务器不应该在响应中返回消息体。
  • POST:用于向服务器发送数据。例如,当使用 webmail 时,它将用于发送电子邮件命令。
  • DELETE:用于请求服务器删除由请求 URI 标识的资源。
  • PUT:这用于请求将包含的实体存储在附加到请求的请求 URI 下。
  • TRACE:用于请求请求消息的远程应用层回送。
  • CONNECT:用于连接代理设备。

状态代码

这些是由 HTTP 标准化的消息代码类别:

| 类别 | 名称 | 原因 |
| 1xx | 报告的 | 提供一般信息,没有任何失败或成功的迹象 |
| 2xx | 成功 | 指示客户端请求的操作已被成功接收、接受和处理 |
| 3xx | 重寄 | 指示用户代理应该采取进一步的操作来完成请求 |
| 4xx | 客户端错误 | 表示客户端有错误 |
| 5xx | 服务器错误 | 表示服务器端有错误 |

表 12.6: HTTP 状态代码

HTTP 状态代码的完整列表可以在HTTP://www . iana . org/assignments/HTTP-status-codes/HTTP-status-codes . XHTML找到。

还有更多…

在某些情况下,您会在 packet details 窗格中的 HTTP 行下看到一个名为Line-based text data: text/html的行。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.7: HTTP 错误和解释

您将在 packet details 窗格中的 HTTP 行的正下方看到基于行的文本数据(在前面的截图中标记为 1 )。在下面,你会看到一些解释(在前面的截图中标记为 23 )来解释错误的原因。

配置 HTTP 首选项

使用 HTTP 时,您可以更改一些首选项。让我们看看它们是什么。

做好准备

启动 Wireshark 并进入下一部分。

怎么做…

  1. 选择编辑|首选项。
  2. 在协议下,选择 HTTP。您将看到以下窗口:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.8: HTTP 首选项

默认情况下,所有四个选项都处于选中状态。当在较低层执行分段时,这些选项可以重组 HTTP 头和主体。在 TCP 端口字段中,您将获得 Wireshark 将解析为 HTTP 的端口号列表。在这个列表中,您可以看到默认端口80,端口80808088(通常用于代理),以及其他端口。如果您有一个使用 HTTP 的应用,其端口未列出,请在此处添加。对 HTTPS SSL/TLS 端口进行同样的操作—默认为443。如果您使用另一个端口,请在此处添加。端口80被列为流控制传输协议 ( SCTP )的端口

自定义 HTTP 头字段

自定义 HTTP 头字段使我们能够在http.header过滤器下创建新的 HTTP 显示过滤器。

让我们看看下面截图中的例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.9: HTTP 头—年龄

要在 http.header 过滤器下创建新的 HTTP 显示过滤器,请执行以下步骤:

  1. 在 HTTP preferences 窗口(在下面的截图中标记为 1 )中,单击 Edit…自定义 HTTP 头字段中的按钮。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.10: HTTP 客户标题字段

  1. 点击 New(在前面的截图中标记为 2 )。
  2. 在 Header name 中,输入用于扩展到http.header的过滤器的名称(在前面的截图中标记为 3 )。例如,如果您想在 age 参数上配置一个过滤器,在 Header name 字段中键入名称Age(区分大小写!).
  3. 在字段 desc 字段中,输入任何描述以提醒您已配置的内容。比如输入Aging time of ....(任何描述都可以,只是备注)。
  4. 点击确定。
  5. 在显示过滤器文本框中,您可以使用http.header.Age过滤器。例如,您将能够配置包含 88482 的显示过滤器http.header.Age,它将为您提供所有带有包含所请求号码的Age字段的数据包
  6. 您可以使用此选项配置许多附加过滤器。

当您在 HTTP 头中使用专有参数,并且希望进行相应的过滤时,通常会使用这种过滤器配置。

它是如何工作的…

重组功能非常重要,因为在某些情况下会使用 IP 分段,因此 TCP 消息也会被分段。标记重组选项只是告诉 Wireshark 重组被监控的数据包(接收方正在做什么,因此能够理解它)。

还有更多…

通常,只有当 Wireshark 看到有效的 HTTP 报头时,它才会将端口为80的解析数据包显示为 HTTP。如果您想将 TCP 端口80的所有数据包视为 HTTP,请执行以下步骤:

  1. 前往偏好设置并在协议中选择 TCP
  2. 取消选中/禁用允许解析器重组 TCP 流

分析 HTTP 问题

底线当然是如何分析 HTTP 问题。这就是这个食谱的全部内容。HTTP 问题的发生可能是因为服务器和/或客户端速度慢、TCP 性能问题以及我们将在本菜谱中看到的其他一些原因。

做好准备

当您在浏览互联网时遇到性能不佳的情况时,请将带有端口镜像的 Wireshark 连接到遇到问题的 PC。当整个网络性能下降时,端口镜像连接到互联网或 web 服务器基础设施。

怎么做…

浏览速度慢的问题可能有多种原因,我们将尝试一步一步地解决这个问题。

步骤如下所示:

  1. 首先,检查你没有简单地有一条到互联网的负载线路或网络中的核心连接,通信线路上的高错误率,或导致大多数问题的任何这些明显的问题(参见第 5 章使用基本统计工具章和第 6 章使用高级统计工具了解更多细节)。

  2. 要否定 TCP 问题(如第 11 章、传输层协议分析中的详细解释),请检查以下详细信息:

    • 在专家信息窗口中,您不会得到太多的重新传输和重复的 ack(小于 1%仍然是可以接受的)。
    • 确保 HTTP 连接不会被重置。这可能是由于防火墙或站点限制。
  3. 确保您不会遇到以下 DNS 问题:

    • 缓慢的响应时间
    • 名字找不到,不正确,等等
  4. 如果这些都不适用,那么!让我们深入研究一下 HTTP。

不要忘记将网络和 IT 环境视为一个整体。你不能把 TCP 和 HTTP 分开,也不能把 DNS 问题和应用浏览缓慢分开。可能是你有一个非常慢的 HTTP 服务器;由于它的反应慢,你会得到 TCP 重新传输。或者,由于缓慢的 DNS 服务器,你会得到一个网页,打开后,许多秒钟。一步一步来,隔离问题。

第一次打开网页时,可能需要几秒钟。在这种情况下,您应该检查以下情况:

  • 检查线路是否未装载。
  • 检查线路上的延迟(对网站执行 ping 操作即可)。
  • 查找错误代码。通常您会在浏览器上看到错误的原因,但并不总是如此。
  • 配置过滤器http.response >= 400并查看您得到了多少个错误。在接下来的几节中,我们会看到几个例子来说明您应该注意些什么。

| 代码 | 状态 | 解释 |
| 100 | Continue | 请求成功完成,会话可以继续。 |
| 101 | Switching protocols | 服务器正在更改为不同的 HTTP 版本。随后是一个升级报头。 |

表 12.1: HTTP 信息代码

| 代码 | 状态 | 解释 |
| 200 | OK | 标准 OK 响应 |
| 201 | Created | 请求已被满足,新的资源已被创建 |
| 202 | Accepted | 该请求已被接受,仍在处理中 |
| 203 | Non-authoritative information | 从另一台服务器接收到包含内容的请求,并被理解 |
| 204 | No content | 请求已被接收并被理解,发回的回答没有内容 |
| 205 | Reset content | 这是服务器向客户端发出的重置发送给它的数据的请求 |
| 206 | Partial content | 对部分文档请求的响应 |

表 12.2: HTTP 成功代码

| 代码 | 状态 | 解释 | 做什么 |
| 300 | Multiple choices | 请求的地址引用了多个文件。例如,当资源已被移除,并且响应提供了它的潜在位置列表时,就会发生这种情况。 | - |
| 301 | Moved permanently | 请求的资源已被永久移动。今后的请求应转交给所附的 URI。 | - |
| 302 | Moved temporarily (found) | 页面已暂时移动,新的 URL 可用。通常情况下,你会被自动转发。 | 通常,您会看到一个找到的代码,然后是另一个指向指定 URL 的GET |
| 303 | See other | 对这一请求的回应可以在另一个 URI 找到。应该使用到该资源的 HTTP GET来检索它。 | - |
| 304 | Not modified | 当请求头包含一个if modified since参数时,如果该文件自该日期以来没有改变,将返回该代码。 | - |
| 305 | Use proxy | 请求的资源必须通过代理访问。 | 检查需要什么代理 |

表 12.3: HTTP 重定向代码

| 代码 | 状态 | 解释 | 做什么 |
| 400 | Bad request | 由于语法问题,服务器无法理解该请求。在向客户端重新发送请求之前,客户端应该对请求进行修改。 | 检查网站地址。这也可能是由于站点错误造成的。 |
| 401 | Authorization required | 由于缺少身份验证代码,客户端被拒绝访问。 | 检查您的用户名和密码。 |
| 402 | Payment required | 保留供将来使用。 | |
| 403 | Forbidden | 不允许客户端查看特定文件。这可能是由于服务器访问限制。 | 检查凭证。此外,服务器加载的机会也更少。 |
| 404 | Not found | 找不到请求的资源。 | 这可能是因为该资源已被删除,或者它从未存在过。也可能是由于 URL 拼写错误。 |
| 405 | Method not allowed | 资源不支持或不允许您用来访问文件的方法。 | |
| 406 | Not acceptable | 根据客户端请求,资源生成的内容不可接受。 | 检查/更新您的浏览器。 |
| 407 | Proxy authentication required | 在执行请求身份验证之前,需要进行请求身份验证。 | 客户端必须首先向代理验证自己。 |
| 408 | Request timed out | 服务器处理请求的时间超过了允许的时间。 | 检查响应时间和网络负载。 |
| 409 | Conflict | 客户端提交的请求无法完成,因为它与一些既定规则冲突。 | 可能是因为你试图上传的文件比现有的旧,或者有类似的问题。检查客户端正在尝试做什么。 |
| 410 | Gone | 客户端请求的 URL 在该系统中不再可用。 | 通常,这是服务器问题。这可能是由于文件被删除或位置被转发到新的位置。 |
| 411 | Content length required | 请求缺少其内容长度标头。 | 网站的兼容性问题。更改/更新您的浏览器。 |
| 412 | Precondition failed | 客户端尚未设置传送文件所需的配置。 | 网站的兼容性问题。更改/更新您的浏览器。 |
| 413 | Request entity too long | 请求的文件太大,无法处理。 | 服务器限制。 |
| 414 | Request URI too long | 您输入的地址对服务器来说太长了。 | 服务器限制。 |
| 415 | Unsupported media type | 不支持请求的文件类型。 | 服务器限制。 |

表 12.4: HTTP 客户端错误代码

下面的屏幕截图显示了一个简单的客户端错误示例。要进入此窗口,请执行以下步骤:

  1. 右键单击带有错误代码的数据包。
  2. 选择跟随 TCP 流。您应该会看到以下窗口:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.11:示例客户端错误

您可以看到以下情况:

  • 我试图浏览 URI /poker-client/broadcast.htm(在前面的截图中标记为 1 和 3)
  • URI 由推荐人转发:http://www.888poker.com/poker-client/promotions.htm(在前面的截图中标记为 2
  • 状态代码为 404 Not Found(在前面的截图中标记为 4 )

澄清一下,我没有玩扑克。我正在解决一个网络问题。

| 代码 | 状态 | 解释 | 做什么 |
| 500 | Internal server error | web 服务器遇到意外情况,无法执行客户端访问所请求 URL 的请求。 | 当 CGI 程序运行时,通常由 Perl 代码中的问题引起的响应。 |
| 501 | Not implemented | 服务器无法执行该请求。 | 服务器问题。 |
| 502 | Bad gateway | 您试图访问的服务器发回错误。 | 服务器问题。 |
| 503 | Service unavailable | 请求的服务或文件当前不可用。 | 服务器问题。 |
| 504 | Gateway timeout | 网关已超时。这个消息类似于408超时错误,但是这个错误发生在服务器的网关上。 | 服务器关闭或无响应。 |
| 505 | HTTP version not supported | 它不支持您想用来与服务器通信的 HTTP 协议版本。 | 服务器不支持 HTTP 版本。 |

表 12.5: HTTP 服务器错误代码

由于各种原因,您可以获得服务不可用状态(代码503)。在下面的例子中,有一个小办公室有如下抱怨:他们可以浏览脸书,但当他们点击这个网站上的链接时,他们得到的新页面被阻止。在下面的截图中,你可以看到问题仅仅是防火墙阻止了它(很明显):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.12: HTTP 服务不可用:防火墙阻止

它是如何工作的…

在标准的 HTTP 浏览中,您应该看到一个非常简单的模式,如下所示:

  • TCP 打开连接(三次握手)
  • HTTP 发送一个GET命令
  • 数据被下载到您的浏览器

在大多数情况下,打开一个网页会打开多个连接,在许多情况下,会打开几十个连接。例如,当您打开一个新闻页面(www.cnn.comwww.foxnews.comwww.bbc.co.uk)时,它会打开主页面、滚动突发新闻、商业广告、报道当地天气的窗口、与其他网站的连接等等。如果一个页面会打开近百个连接,甚至更多,不要感到惊讶。

在网页打开多个连接的情况下(大多数网页都是这样),每个连接都需要一个 DNS 查询、响应、TCP SYN-SYN/ACK-ACK、HTTP GET 只有这样,数据才会开始出现在你的屏幕上。

还有更多…

当您在数据包详细信息窗格中看不到任何内容时,右键单击数据包并选择跟随 TCP 流。这将为您提供一个详细的窗口(如前面的屏幕截图所示),它为您提供了连接的大量数据。

另一个广泛用于 HTTP 的工具是 Fiddler。可以在http://fiddler2.com/找到。Fiddler 是一个用于 HTTP 调试的免费工具。这不在本书的讨论范围之内。

导出 HTTP 对象

导出 HTTP 对象是一个简单的功能,用于导出 HTTP 统计数据、网站和 HTTP 访问的文件。

做好准备

要导出 HTTP 对象,请选择文件|导出对象| HTTP。

怎么做…

要导出 HTTP 对象,请按照下列步骤操作:

  1. 您可以在捕获运行时使用此功能,也可以保存捕获的文件。您将看到以下窗口:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.13: HTTP 对象导出

  1. 从这里你可以得到一个被访问网站的列表,包括每个网站中被访问的文件。您可以看到网站、文件类型、大小和名称。
  2. 您可以使用“另存为”或“全部保存”按钮将数据保存在文件中。
  3. 在“内容类型”列中,您将看到以下内容:
    • 文本:文本/纯文本、文本/html、文本/javascript。如果是 JavaScript,检查它是什么;这可能会有安全风险。
    • 图像:图像/jpeg、图像/gif 和其他类型的图像。可以用查看器打开。
    • 应用:应用/json、应用/javascript 和其他类型的应用。
    • Wireshark 发现的任何其他文本文件。

要使导出 HTTP 对象功能工作,首先转到 TCP 首选项并启用 TCP 数据包重组(允许子分配器重组 TCP 流)。

您将获得一个包含捕获文件中捕获的所有对象的目录。对象可以是图片(例如前面截图中的数据包10521057)、文本(前面截图中的数据包10191022和其他)等。

它是如何工作的…

此功能扫描当前打开的捕获文件或正在运行的捕获中的 HTTP 流;接受重新组合的对象,如 HTML 文档、图像文件、可执行文件和其他可读格式;并允许您将它们保存到磁盘上。然后,保存的对象可以用适当的浏览器打开,或者在可执行文件的情况下,只需点击它们就可以执行。此功能可用于各种目的,包括窃听和保存备份对象(例如,通过电子邮件发送的文件)。

还有更多…

您有几个软件,它们以图形方式执行相同的事情,并提供统计数据的可视化;其中一些如下:

当你看到一个不知名的网站,上面有一个你不认识的应用,文件名看起来很可疑,谷歌一下;这可能是一个风险(我们将在安全性章节中回到这个问题)。

HTTP 流量分析

本书前面简要讨论过的跟随 TCP 流功能是一个非常有用的功能,可以帮助您深入理解在监控网络时捕获的 TCP 流。在这个食谱中,我们将看到它的一些优点。

做好准备

端口镜像您想要监控的设备或链路,并开始数据包捕获。

怎么做…

要打开“跟随 TCP 流”窗口,请执行以下步骤:

  1. 右键单击您想要查看的流中的一个数据包。
  2. Wireshark 会过滤您选择的数据流。您将在显示过滤栏中看到这一点,过滤栏将显示捕获中的数据流数量。您将看到以下窗口:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.14:跟随 TCP 流

  1. 您可以查看流的详细信息,例如:
    • GET方法(在前面的截图中标记为 1)
    • 被请求的HOST(在前面的截图中标记为 2
    • 客户端类型,在本例中是 Mozilla Firefox(在前面的截图中标记为 3 )
    • 推荐人,在这种情况下是思科(截图中的 4 )
    • HTTP OK 响应(截图中的 5 )
    • 服务器类型(截图中的 6 )
  2. 这些都是明显的例子。当遇到问题或只是要调查的问题时,您将能够在此处看到许多类型的参数,这些参数将指示以下情况:
    • 一个用户正在使用 Kazza 客户端(如下图所示)进行文件共享(您的组织允许吗?).

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.15:遵循 TCP 流-参数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.16:跟随 TCP 流-更多信息

  1. 您还可以检查以下内容:
    • 错误和 bug 消息
      • 病毒和蠕虫。诸如 blast、probe 和 Xprobe 等名称,尤其是当您看到它们带有.exe扩展名时,应该敲响警钟(关于这个问题的更多细节将在第 19 章 安全和网络取证中提供)

它是如何工作的…

跟随 TCP 流功能只是分析从第一次 SYN-SYN/ACK/ACK 握手到连接结束的 TCP 数据,这由 FIN 数据包的 rst 指示。它还隔离了特定的流,帮助我们跟踪其中的错误和问题。

还有更多…

使用跟随 TCP 流功能可以发现和分配许多问题,这将在接下来的章节中进一步讨论。使用此功能隔离 TCP 流。

分析 HTTPS 流量-SSL/TLS 基础知识

HTTPS 是 HTTP 的安全版本。 S 表示它由安全套接字层(SSL)/传输层安全性(TLS)保护。当您连接到您的银行帐户、网络邮件服务或任何其他通过 HTTP 运行并需要安全性的服务时,会用到它。

在这个食谱中,我们将看到它是如何工作的,以及当我们使用 HTTPS 通信时会出现什么故障。

做好准备

端口镜像到可疑设备或从几个设备转发流量的链路,并开始捕获。HTTPS 使用 TCP 端口443,这是您应该注意的,除非您有一个使用不同端口的定制应用,正如在配置 HTTP 首选项方法中所讨论的。

怎么做…

要监控 HTTPS 会话,请执行以下步骤:

  1. HTTPS 会话的建立可以分四五步完成。在*中描述了它是如何工作的…*本食谱的一节。

  2. 观察会话建立过程中数据包的顺序,确保您收到的消息符合下图所示的顺序(在括号中,您将看到数据包中应该显示的内容):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.17: HTTPS 安全连接建立

  1. 以下是 RFC 2246 中描述的常见警报(及其级别)。警报级别表示消息的严重性,具有致命级别的消息会导致会话终止。
    • close_notify (Alert level = 0):该消息通知接收方,发送方已完成在该连接上发送消息。该会话可以在以后继续。
    • unexpected_message (10):如果收到不适当的消息,则返回该警告。这是一个严重错误,可能表明其中一方的实现不好。
    • bad_record_mac (20):如果收到的记录的消息认证码 ( MAC )不正确,则返回此警报。这是一个严重错误,可能表明其中一方的实现不好。
    • decryption_failed (21):如果 TLS 密文被错误解密,则返回此警报。这是一个关键消息,可能表明其中一方的实现不好。
    • record_overflow (22):如果收到长度超过允许长度的 TLS 密文记录,将返回此警报。这是一个致命的错误,通常表明其中一方的实现不好。
    • decompression_failure (30):该信息表示解压缩功能接收到错误的输入。这是一个严重错误,可能表明其中一方的实现不好。
    • handshake_failure (40):收到此警报消息表明,在给定可用选项的情况下,当发送方无法协商安全参数集时,出现了协商错误。这是一个严重错误,可能表明其中一方的实现不好。
    • bad_certificate (42):这是一个证书错误。当证书损坏、包含未正确验证的签名或任何其他错误时,会出现这种情况。
    • unsupported_certificate (43):表示收到的证书不是支持的类型。
    • certificate_revoked (44):表示证书被签名者取消。
    • certificate_expired (45):表示证书无效或证书已过期。
    • certificate_unknown (46):表示证书因不明原因未被接受。
    • illegal_parameter (47):这表示握手过程中的某个字段超出范围或与其他字段不一致。这是一个严重错误,可能表明其中一方的实现不好。
    • unknown_ca (48):这表示收到了一个有效的证书,但没有被接受,因为它无法与一个已知的可信 CA 匹配。这是一个严重错误,应该向证书颁发者核实。
    • access_denied (49):表示收到了一个有效的证书,但是它没有得到接收方的访问控制的批准,发送方决定不继续协商。
    • 这表示消息太长,因此无法解码。这是一个严重错误,可能表明其中一方的实现不好。
    • decrypt_error (51):表示握手加密操作失败,包括由于签名验证、密钥交换或已完成消息验证而失败的操作。
    • export_restriction (60):表示检测到不符合出口限制的洽谈。
    • protocol_version (70):告知不支持客户端尝试协商的协议版本。
    • insufficient_security (71):当协商失败时返回,因为服务器需要比客户端支持的安全性更高的密码。
    • internal_error (80):这是一个内部错误,与连接的对等方无关。
    • user_canceled (90):这表示握手被取消的原因不是协议故障。
    • no_renegotiation (100):初始握手后,由客户端或服务器发送,以响应 hello 请求。

在提到的每一个故障中,都不会建立连接。

它是如何工作的…

SSL 和 TLS 是保护特定应用的协议,例如 HTTP、SMTP、Telnet 等。SSL 版本 1、2 和 3 是 Netscape 在 20 世纪 90 年代中期为他们的 Navigator 浏览器开发的,而 TLS 是 IETF 的一个标准(RFC 2246、RFC 4492、RFC 5246、RFC 6176 等)。TLS 1.0 于 1999 年 1 月在 RFC 2246 中首次推出,作为 SSL 3.0 版的升级版(第三段在http://tools.ietf.org/html/rfc2246)。

TLS 握手协议包括以下建立 TLS 连接的过程:

  1. 交换问候消息以就要使用的算法达成一致,并交换密钥生成的随机值

  2. 交换必要的加密参数,以允许客户端和服务器就预主密钥达成一致

  3. 交换证书和加密信息,以允许客户端和服务器相互验证

  4. 从预主密钥和交换的随机值中生成主密钥

  5. 允许客户端和服务器验证它们的对等方已经计算了相同的安全参数,并且握手没有被攻击者篡改

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Figure 12.18: HTTPS secure connection establish: packet flow

让我们看看它是如何工作的。在前面的屏幕截图中,我们看到了 TCP SSL/TLS 如何建立连接(数据包 157-158-159)以及数据包 160 如何启动 TLS 握手。让我们来看看细节:

  1. 选择加密算法:
    • 如数据包 160 所示,客户端发送客户端问候消息,开始协商( 1
    • 服务器用服务器问候消息( 2 )进行响应,如数据包 162 所示
  2. 如数据包 163 所示,服务器向客户端发送一个证书( 3
  3. 使用这个证书,客户端认证服务器,获取证书,并生成预主密钥( 4 ),如数据包 165 所示
  4. 服务器生成主密钥( 5 ),如在包 166 中
  5. 服务器和客户端之间的握手完成,事务开始,正如您在数据包 167 中看到的那样

这指的是一种机制(在 RFC 4507 中定义),它使 TLS 服务器能够恢复会话并避免保持每个客户端的会话状态。TLS 服务器将会话状态封装到票证中,并将其转发给客户端。客户端随后可以使用获得的票证恢复会话。例如,当您重新打开与您的网络邮件帐户(Gmail 等)的连接时,就会发生这种情况,这在这些情况下很常见。

客户端和服务器之间的通信将在步骤 4 或 5 之后开始。

让我们来看看他们中的每一个:

在步骤 1 中,分组 160 是客户端问候消息,它是 TLS 握手中的第一个分组。我们可以看到的一些参数显示在下面的截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.19: HTTPS 客户端你好

这些参数解释如下:

  • 突出显示为 1 的区域表示该数据包的内容是一次握手(ssl.record.content_type == 22)。
  • 突出显示为 2 的区域表示该数据包是从客户端发送到 web 服务器的客户端问候消息。该消息开始握手。
  • 突出显示为 3 的区域显示客户端支持的最高 SSL 和 TLS 版本。
  • 区域 4 显示了将在密钥生成过程中使用的客户端时间。
  • 突出显示为 5 的区域显示客户端生成的随机数据,用于密钥生成过程。
  • 区域 6 显示客户端支持的密码。密码按优先顺序排列。
  • 突出显示为 7 的区域显示客户端支持的数据压缩方法。

如下面的屏幕截图所示,数据包 162 是一个服务器问候消息,包括以下详细信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.20: HTTPS 服务器你好

这些细节解释如下:

  • 高亮显示为 1 的区域表示该数据包的内容是握手(ssl.record.content_type == 22)。
  • 突出显示为 2 的区域显示了将在此会话中使用的 TLS 版本。
  • 区域 3 显示数据包是从服务器发送到客户端的服务器问候消息。
  • 区域 4 显示了密钥生成过程中使用的服务器时间。
  • 突出显示为 5 的区域显示了由服务器生成的随机数据,用于密钥生成过程。
  • 突出显示为 6 的区域显示了本次对话中要使用的密码套件。它是从客户端发送的密码列表中选择的。
  • 突出显示为 7 的区域显示了将用于该会话的数据压缩方法。

下一个数据包是来自发布证书的服务器的响应:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.21: HTTPS 服务器证书

解释如下:

  • 突出显示为 1 的区域表示服务器发送证书命令,该命令包含服务器的证书。通过单击该行左侧的(+)号并深入研究详细信息,您将看到证书颁发者、有效时间、算法和其他数据。
  • 区域 2 显示服务器发送服务器密钥交换命令(通常是 Diffie-Hellman),包括需要的参数(公钥、签名等)。
  • 突出显示为 3 的区域表示服务器发送服务器 Hello Done 命令。这个命令表示服务器已经完成了 SSL 握手的这个阶段。下一步是客户端身份验证。

下一个数据包(本例中的数据包 165)是来自客户端的响应,接受证书并生成预主密钥。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.22: HTTPS 客户端预主密钥

解释如下:

  • 标记为 1 的区域表示客户端发送客户端密钥交换命令。此命令包含由客户端创建的预主密钥,然后使用服务器的公钥进行加密。对称加密密钥由客户端和服务器根据在客户端和服务器 hello 消息中交换的数据生成。
  • 标记为 2 的区域表示客户端向服务器发送更改密码规范通知。这样做是为了表明客户端将开始使用新的会话密钥进行哈希和加密。

最后一步是服务器向客户端发送一个新的会话票证,它将类似于下面的屏幕截图中的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12.23: HTTPS 服务器新会话票证

还有更多…

有人多次问我是否有可能解密用 SSL/TLS 加密的会话。嗯,如果你有私钥的话是有可能的,私钥是你连接的服务器提供给你的;得到它并不是一件容易的事。

有一些方法可以劫持这个密钥,在某些情况下它们会起作用。这不是一件显而易见的事情,无论如何这也不是本书的目标。如果您获得了私钥,您只需将它添加到首选项窗口的协议列表中,然后从那里继续。关于这个功能的更多细节可以从 http://wiki.wireshark.org/SSL 以及许多其他网站和博客上获得。

十三、DNS 协议分析

本章涵盖以下主题:

  • 分析 DNS 记录类型
  • 分析常规 DNS 操作
  • 分析 DNSSEC 常规操作
  • DNS 性能故障排除

介绍

DNS 是一种名称解析协议,用于将域名解析为 IP 地址。互联网只不过是用唯一的 IP 地址作为标识符连接在一起的网络域的集合。实际上不可能根据 IP 地址记住每个域或设备。取而代之的是,使用域名来记忆域名,并使用一些动态的方法将域名转换成 IP 地址要容易得多。

DNS 是一种基于分布式客户端/服务器的通信模型。DNS 是一种应用层协议,其中客户端将向服务器发送携带域名的 DNS 查询,服务器将依次响应与域名相关联的相应 IP 地址的 DNS 响应。DNS 运行在 UDP 端口号53上。服务器将维护一个具有唯一域名和相关 IP 地址的数据库。数据库可以维护域名或域中的主机名。将域名转换为 IP 地址的功能称为 DNS 查找。

DNS 域名空间本质上是分层的,也就是说,它被细分成不同的域,这使得它具有灵活性和可扩展性。DNS 层次结构包括以下组件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.1: DNS 层级

在本章中,我们将讨论 DNS 协议的基本原理、功能、常见问题,以及如何使用 Wireshark 对协议进行分析和故障排除。

分析 DNS 记录类型

DNS 数据库是 DNS 记录的集合,其中每个记录是数据库中的一个条目,包括标签、类别、类型和数据,以及关于如何处理对相应记录的请求的指令。虽然有许多记录类型可用于解决不同的目的,但一些常见的记录类型是记录、AAAA 记录和 CNAME。

在本菜谱中,我们将讨论各种常见的 DNS 记录类型,并了解如何使用 Wireshark 来分析相关的行为和问题。

做好准备

为了分析 DNS 记录的类型,我们需要捕获 DNS 查询和响应包。为此,请将 Wireshark 连接到客户端和 DNS 服务器之间的路径,并捕获数据包。

怎么做…

在上图中,触发从客户端到名称服务器的 DNS 查询,并捕获 DNS 查询数据包以进行记录类型分析。可以使用不同的机制从客户端触发 DNS 查询,这些机制可能因客户端的配置、软件版本、供应商平台等而异。以下是我们可以用来从客户端触发查询的几个示例:

  • 在客户端打开 web 浏览器,键入 URL,如www.packtpub.com
  • 打开终端并触发对已知域名的 ping。在 Ubuntu 和其他 Linux 发行版中,ping xyz.com将触发 DNS 查询以解析 IPv4 地址,而ping6 xyz.com将触发 DNS 查询以解析域的 IPv6 地址。
  • 使用 dig 等工具,这是一种基于 CLI 的工具,可用于触发对不同类型 DNS 记录的 DNS 查询。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.2: DNS 查询

前面的屏幕截图是针对 AAAA 记录类型触发的 DNS 查询的示例捕获。查询类型将被设置为 DNS 标准查询。任何查询都必须带有应该为其解析记录的域名以及所请求的记录类型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.3: DNS 响应

前面的屏幕截图是对图 13.2 中查询的 DNS 响应的示例捕获。为了便于分析,Wireshark 在 DNS 响应数据包中突出显示了 DNS 查询的数据包编号。前面是携带客户端请求的域名的 AAAA 记录响应的响应。

对于请求任何记录类型的每个 DNS 查询,必须有来自服务器的相应记录的响应。如果我们没有看到任何这样的响应或得到一个否定的响应,这表明一些问题需要额外的分析。例如,对于所查询的记录类型,服务器数据库中缺少记录可能会导致以错误消息响应。

它是如何工作的…

有不同的 DNS 记录类型服务于不同的目的。我们将讨论一些常见的记录类型及其用途。

SOA 记录

授权开始 ( SOA )是一种资源记录类型,包含管理信息,例如作为 DNS 服务器负责名称解析的域的一部分的每个 DNS 区域的全局参数和配置。RFC 1035 中定义了 SOA 的定义和记录格式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.4: SOA 资源记录

前面的屏幕截图是一个 SOA 资源记录的示例捕获。每个区域只有一个 SOA 记录,详细信息如下:

  • 区域名称:定义域内区域的名称。
  • 主域名服务器:域的 DNS 主服务器。这是该区域数据记录的主要来源。
  • 负责机关:该区域负责机关的邮箱信息。
  • 序列号:该值随每次区域传送而递增。它可以被认为是 DNS 数据库的当前版本。
  • 时间间隔:不同的刷新和重试间隔。

资源记录

A 资源也称为地址记录,是存储与域名关联的 IPv4 地址的资源记录。这是互联网上最常见的记录之一。出于负载平衡的目的,多个 IP 地址可以与同一个域名相关联。所以在 DNS 响应包中看到多个 A 记录是很常见的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.5:资源记录

前面的屏幕截图是一个 A 记录响应的示例捕获,其中多个 IP 地址与同一个域名相关联。在前面的截图中,192.168.2.2192.168.0.6与主机名csr2.company1.com相关联。DNS 服务器在接收到对csr2.company1.com的 DNS 查询后,将响应多个应答对象,每个对象携带一个 IP 地址和相关的详细信息。客户端如何使用或使用什么 IP 地址是本地事务,并且是特定于实现的。

AAAA 资源记录

AAAA 资源记录,也称为 IPv6 地址记录,是存储与域名相关联的 IPv6 地址的资源记录。出于负载平衡的目的,多个 IPv6 地址可以与同一个域名相关联。因此,在 DNS 响应数据包中看到多个 AAAA 记录是很常见的。

前面显示的样本捕获是一个 AAAA 记录。与 A 记录一样,如果有多个 IPv6 地址与域名相关联,DNS 响应可能会在响应中携带多个 AAAA 记录。

CNAME 资源记录

CNAME 资源记录,也称为规范名称记录,是用于指定一个域名是另一个域名的别名的资源记录。CNAME 记录将始终指向另一个域名,而不会指向任何 IP 地址。该记录有助于在不影响最终用户的情况下无缝地从一个域名更改到另一个域名。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.6: CNAME 记录

在前面的例子中,我们看到foo.example.com是为bar.example.com创建的别名。当服务器收到对foo.example.com的请求时,它会回复一个带有新域名bar.example.com的 CNAME。客户端将依次发送一个请求给bar.example.com来解析 IP 地址。这对客户来说是透明的,因此可以实现平稳的域名过渡。

还有更多…

在上一节中,我们看到了一些最常见的资源记录和相关的语义。行业中有更多这样的资源记录。关于其他资源记录的详细信息和每个记录的解释可在 IANA 获得:https://www . iana . org/assignments/DNS-parameters/DNS-parameters . XHTML # DNS-parameters-4

分析常规 DNS 操作

在这个菜谱中,我们将看到如何发现 DNS 是否正常工作。我们将看到 DNS 操作的一些场景,以及可能出错的地方。

做好准备

打开 Wireshark 并开始捕获数据。您应该镜像使用 DNS 的设备或 DNS 服务器本身。

怎么做…

将 Wireshark 连接到与受监控设备相连的 LAN 交换机,并为您怀疑问题来自的设备配置一个端口镜像。完成以下步骤:

  1. 如果用户投诉,请配置端口镜像来监控用户设备。
  2. 如果网络出现一般问题,请配置 DNS 服务器的端口镜像:
    • 当在内部服务器上配置 DNS 服务器时,请在服务器上配置端口镜像
    • 当 DNS 服务器配置在外部服务器上时,配置一个端口镜像到将您连接到互联网的链路

它是如何工作的…

DNS 是用于名称解析的主要协议,在浏览互联网时使用。它也用于在一个组织的网络中工作。DNS 标准描述了三种功能:

  • 名称空间,这是 DNS 名称的外观和分配方式
  • 名称注册流程,即我们如何注册 DNS 名称,以及它们如何通过 DNS 服务器的网络转发
  • 解析过程,即如何将名称解析为 IP 地址

在这个食谱中,我们将重点关注第三个主题,即当我们浏览互联网,发送或接收电子邮件,或访问我们组织的内部服务器时,会发生什么。

DNS 服务器分配

解决 DNS 相关问题的第一步是确保在客户端上配置正确的 DNS 服务器设置。这对于确保作为 DNS 查询的一部分解析的 IP 地址是合法的而不是伪造的是至关重要的。有两种不同类型的 DNS 客户端配置,如下所示:

  • 在客户端上手动设置 DNS 服务器
  • 动态 DNS

对于手动配置,我们需要在客户端静态定义 DNS 服务器信息。根据客户端的不同,配置可能会有所不同。例如,在 Linux 发行版中,应该在/etc/resolv.conf文件中配置 DNS 服务器。

通过动态 DNS ( DDNS ),我们利用动态配置协议来通告 DNS 服务器信息。在大型网络中,DHCP 是非常常见的地址分配协议。可以利用 DHCP 来动态通告一个或多个 DNS 服务器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13.7:DHCP 响应中的 DNS 信息

如前面的屏幕截图所示,DNS 服务器信息是分配 IP 地址时将包括的 DHCP 选项之一。

在 IPv6 环境中,可以将 DNS 服务器信息作为 IPv6 路由器广告的一部分进行广告。任何启用了 IPv6 自动配置的客户端都将使用作为 IPv6 RA 消息的一部分接收的 DNS 服务器。

DNS 操作

用户程序(web 浏览器、邮件客户端和许多其他程序)通过解析器与 DNS 服务器交互,解析器也是操作系统的一部分。解析器与为其提供所需 IP 的外部名称服务器交互(名称服务器可以是本地的或远程的;它在分解器的外部)。用户查询 DNS 服务器的方式是操作系统特定的。DNS 查询和响应在解析器和名称服务器之间发送和接收。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本地名称服务器通常位于组织网络中,并与 ISP 的 DNS 服务器交互。如果是家庭或小型办公网络,您的 DNS 服务器可以配置在将您连接到互联网的路由器上,或者直接配置到 ISP 的 DNS 服务器上:

  • 当 DNS 服务器在路由器上时,您在查询您的 ISP DNS 的路由器上查询 DNS
  • 当您的 DNS 位于 ISP 网络上时,您可以直接查询 DNS 服务器

DNS 名称空间

DNS 命名空间基于分层树结构,如下图所示。其结构如下:

  • 根服务器的网络(http://www.iana.org/domains/root/servers)。
  • 顶级域名()服务器(【http://www.iana.org/domains/root/db】)的网络。
    *** 每个顶级域名都有类似于 IANA 管理的域名服务器。顶级域名包含二级域名。TLD 是最高级别的服务器,例如国家服务器,如下图所示。* 二级域名 ( SLD )包含组织和国家的域名和名称。二级域名由指定的组织或国家管理:**

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有一些重要的定义,如下图所示:

  • :构成ndi-com.com下的所有分支,在这里是一个 SLD
  • Zone:DNS 名称空间中 DNS 域的连续部分,其数据库记录存在于一个或多个 DNS 服务器上存储的特定 DNS 数据库文件中,并在其中进行管理:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传** **# 解析过程

使用 DNS 服务器有两个原因:

  • 第一个原因是它用于组织内部的交流。在这种情况下,您的组织中有一个 DNS 服务器,它将 IP 地址解析为组织中的名称。
  • 它用于连接互联网、浏览、发送电子邮件等。

使用这两种服务时,您将向您的组织服务器发送 DNS 查询,组织服务器将向互联网发送查询。例如,当您想要访问组织中的本地服务器时,您将向本地 DNS 发送一个 DNS 查询,然后您将获得服务器 IP。当您浏览互联网上的网站时,本地 DNS 服务器会将请求转发给外部 DNS,例如 ISP DNS。

您是否配置了正确的 DNS 服务器?理论上,当你连接到互联网时,你可以配置世界上任何一台 DNS 服务器。通常,最好使用的 DNS 服务器是最近的。在您的组织中,您应该将本地 DNS 配置为第一优先,然后是 ISP 的 DNS 服务器。

有各种实用工具来检查 DNS 响应。其中一些如下:

在测试结果中,您应该为您配置的 DNS 服务器获得良好的响应时间。如果没有,就改变它们。

还有更多…

当终端设备上的某个进程正在寻找某个特定名称的 IP 地址时,它会与连接到 DNS 服务器的本地解析器进行交互。当 DNS 服务器在其数据库中没有找到您要查找的条目时,它可以通过两种方式做出响应;递归或迭代:

  • 递归模式:在这种模式下,当应用(例如网页浏览器)想要解析一个网站的名称www.packtpub.com时,它会向本地 DNS 服务器发送一个 DNS 请求(在下图中标记为 1 )。本地 DNS 服务器将请求发送到一个根服务器(下图中标记为 23 ),然后发送到 TLD(下图中标记为 34 ,最后发送到www.packtpub.com的权威服务器,权威服务器给我们所需的地址(下图中标记为 67 )。然后,本地 DNS 服务器发送给我们所需的地址(下图中标记为 8 )。在每一个响应中,解析器都获取下一步要查询的 DNS:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 迭代模式:在这种模式下,DNS 客户端可以接收来自 DNS 服务器的响应,该响应将告诉客户端在哪里寻找所请求的名称。当应用(例如,web 浏览器)想要浏览网站www.packtpub.com时,它向本地 DNS 服务器发送 DNS 请求(在下图中标记为 1 )。本地服务器将请求转发给根 DNS 服务器(在下图中标记为 2 )。如果它不知道答案,它会将请求转发给 TLD(下图中标记为 3 )和权威 DNS(下图中标记为 4 )。然后,将答案一路发送回客户端(在下图中标记为 5678 ):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分析 DNSSEC 常规操作

DNS 通过将域名解析为相应的 IP 地址,在互联网上扮演着重要的角色。虽然它执行非常重要的服务,但它不提供任何数据完整性或原始授权。这种安全性的缺乏可以被操纵来用恶意 IP 地址欺骗域名,并将所有数据转发给恶意服务器。DNS 缓存中毒就是这样一种已知的攻击,它利用这个安全漏洞来泄漏数据。

DNS 安全扩展 ( DNSSEC )是 DNS 协议的一套安全扩展,引入了区域签名的概念,从而有助于为 DNS 资源记录提供数据完整性和原始授权。

做好准备

DNSSEC 是对现有 DNS 数据包格式的扩展,因此从数据包捕获的角度来看,不需要任何加密或相关考虑。与传统的 DNS 数据包一样,Wireshark 将能够使用相同的端口镜像概念捕获 DNSSEC 数据包。

怎么做…

在捕获的数据包上,执行以下简单验证:

  1. 检查从客户端发送的 DNS 查询是否设置了 DNSSEC 选项。这将包含在 DNS 查询数据包的附加记录字段中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的屏幕截图中,可以看到附加记录字段设置了一个标志,指示客户端接受 DNSSEC 安全资源记录。

  1. 一旦接收到请求,DNS 服务器将回复一个 DNS 响应,该响应携带所请求记录的相关细节(例如,A 记录的 IP 地址),并携带一个资源记录签名 ( RRSIG )。这些是与资源记录相关联的数字签名:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的截图中,可以看到来自服务器的 DNS 响应将使用 RRSIG 进行回复。

  1. DNS 客户端现在向 DNSKEY 请求域名,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. DNS 服务器回复用于签署资源记录的公钥:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 客户端使用这些详细信息来验证从 DNS 服务器接收的资源记录的完整性。

它是如何工作的…

DNSSEC 是一种技术,通过对资源记录提供扩展的数据完整性检查来保护 DNS 资源记录。DNSSEC 通过对资源记录进行数字签名来运行,从分层 DNS 树的根开始:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DNSKEY 和 RRSIG 在 DNSSEC 运营中发挥着关键作用。以下是客户端和服务器之间操作的简化序列:

  1. DNS 客户端发送在附加记录中设置了 DNSSEC 标志的 DNS 查询。这向服务器发出信号,表明客户端支持 DNSSEC,并期望对资源记录进行数字签名。

  2. DNS 服务器收到请求后,将回复响应并包含 RRSIG。RRSIG 是由委托签名者数字签名的资源记录。

  3. DNS 客户端将向服务器发送另一个请求,请求相同的域名,但记录类型设置为 DNSKEY。这是用于签署资源记录的公钥。

  4. DNS 服务器将使用所请求域的 DNSKEY 进行回复。

  5. DNS 客户端使用 DNSKEY 来计算哈希,并将其与 RRSIG 进行比较,以确保数据完整性。

  6. 如果散列不匹配,则资源记录被破坏,客户端将不会使用它。

还有更多…

上一节简单解释了 DNSSEC 是如何工作的。有关 DNSSEC、区域签名及其如何使用签名链的更多详细信息,请参见以下 RFC:

  • RFC 4033 : DNS 安全介绍和要求
  • RFC 4034:DNSSEC 的资源记录
  • RFC 4035:DNSSEC 协议修改

DNS 性能故障排除

在这个菜谱中,我们将看到如何解决 DNS 性能相关的问题,如响应缓慢。我们将看到如何使用 Wireshark 来分析这些问题。

做好准备

通过利用 DNS 请求和响应数据包上的时间戳来测量 DNS 性能。为了测量性能,Wireshark 应尽可能靠近客户端连接并捕获 DNS 数据包。

怎么做…

你怎么知道这就是问题所在?

  • 当您浏览互联网并且得到非常慢的响应时,请执行以下步骤:
    1. 端口镜像到互联网的连接,并检查在通往互联网的路上是否有任何瓶颈。为此,您可以使用 I/O 图,如第 6 章、【使用高级统计工具的 中所述。
    2. 验证您没有大量的重新传输或重复的 ack 来指示连接问题。
    3. 验证您没有任何与窗口相关的问题,例如零窗口或窗口已满。
  • 如果前面检查的答案为否,则可能是 DNS 问题。在两种情况下,您可能会遇到 DNS 问题:
    • 在您的组织中工作时
    • 当连接到互联网时
  • 这些问题可以通过两种方式解决:
    • 当您的组织遇到问题时,端口镜像连接到 DNS 服务器的交换机端口
    • 当互联网出现问题时,端口镜像将您的组织连接到互联网的交换机端口
  • 观察您得到的 DNS 响应时间。找到问题的方法有几种,如下所示:
    • 最简单的方法是右键单击 DNS 查询流中的数据包,选择跟随 UDP 流,然后检查查询和响应之间的时间。
    • 另一种方法是使用 I/O 图来实现这一目的。在 IO 图形窗口中,选择高级…在 Y 轴配置中,用 AVG(*)在图形行中配置过滤器dns.time。参考以下截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您将获得整个捕获时间内 DNS 响应时间的图表。

在此图中,您将看到大多数响应时间都低于 100 毫秒,这是相当合理的。我们有两个峰值表示可能存在问题,一个在捕获开始时为 300 ms,另一个在捕获结束时为 450 ms。

组织内部(在本地站点)的合理时间应该不超过几十毫秒。当浏览互联网时,良好的响应时间应该小于 100 毫秒,而高达 200 毫秒仍然是可以忍受的。

它是如何工作的…

分析常规 DNS 操作部分所述,DNS 操作模式可能会影响整体解析性能。例如,递归模式可能导致 DNS 服务器递归地查询其他服务器,这引入了端对端延迟,该延迟根据与服务器和网络路径相关联的各种因素而变化。在配置了多个 DNS 服务器的情况下,如果第一个服务器在缓存中没有资源记录,迭代模式可能有助于查询其他服务器。

还有更多…

虽然使用 Wireshark 是测量和排除域名解析延迟的一种方法,但也有其他工具可以执行类似的测试。例如,dig 是一个基于 CLI 的工具,在大多数 Linux 发行版中都可以使用。它允许您触发任何记录类型的 DNS 查询,并测量解析所需的时间。

以下是如何使用它的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**

十四、分析邮件协议

在本章中,您将了解:

  • 邮件协议的正常操作
  • 分析 POP、IMAP 和 SMTP 问题
  • 过滤和分析不同的错误代码
  • 恶意和垃圾邮件分析

介绍

电子邮件是推动数字营销和商业发展的因素之一。电子邮件允许用户通过互联网以非常有效的方式交换实时消息和其他数字信息,例如文件和图像。每个用户都需要有一个可读的电子邮件地址,格式为username@domainname.com。互联网上有各种电子邮件提供商,任何用户都可以注册获得一个免费的电子邮件地址。

有不同的电子邮件应用层协议可用于发送和接收邮件,这些协议的组合有助于相同或不同邮件域中的用户之间的端到端电子邮件交换。三种最常用的应用层协议是 POP3、IMAP 和 SMTP:

  • POP3 : 邮局协议 3 ( POP3 )是邮件系统用来从邮件服务器检索邮件的应用层协议。电子邮件客户端使用 POP3 命令,如LOGINLISTRETRDELEQUIT从服务器访问和操作(检索或删除)电子邮件。POP3 使用 TCP 端口110,一旦邮件下载到本地客户端,就会从服务器清除邮件。
  • IMAP : 互联网邮件访问协议 ( IMAP )是另一种应用层协议,用于从邮件服务器检索邮件。与 POP3 不同,IMAP 允许用户从多个客户端设备同时阅读和访问邮件。从目前的趋势来看,用户使用多种设备(笔记本电脑、智能手机等)访问电子邮件是很常见的,IMAP 的使用允许用户随时从任何设备访问邮件。IMAP 的当前版本是 4,它使用 TCP 端口143
  • SMTP : 简单邮件传输协议 ( SMTP )是一种应用层协议,用于从客户端向邮件服务器发送邮件。当发件人和收件人位于不同的电子邮件域时,SMTP 有助于在不同域的服务器之间交换邮件。它使用 TCP 端口25:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如上图所示,SMTP 是用于将邮件发送到邮件服务器的电子邮件客户端,POP3 或 IMAP 用于从服务器检索电子邮件。电子邮件服务器使用 SMTP 在不同的域之间交换邮件。

为了维护最终用户的隐私,大多数电子邮件服务器在传输层使用不同的加密机制。如果在安全传输层(TLS)上使用,传输层端口号将不同于传统的电子邮件协议。比如 POP3 over TLS 使用 TCP 端口995,IMAP4 over TLS 使用 TCP 端口993,SMTP over TLS 使用端口465

在本章中,我们将了解电子邮件协议的正常运行,以及如何使用 Wireshark 进行基本分析和故障排除。

邮件协议的正常操作

正如我们在简介中看到的,邮件客户端到服务器和服务器到服务器通信的常见邮件协议是 POP3、SMTP 和 IMAP4。

另一种访问电子邮件的常见方法是通过网络访问邮件,其中有常见的邮件服务器,如 Gmail、Yahoo!,以及 Hotmail。例子包括微软的 Outlook Web 客户端的Outlook Web Access(OWA)和 RPC over HTTPS。

在这个菜谱中,我们将讨论最常见的客户机-服务器和服务器-服务器协议,POP3 和 SMTP,以及每个协议的正常操作。

做好准备

捕获数据包的端口镜像可以在电子邮件客户端或服务器端完成。

怎么做…

POP3 通常用于客户端到服务器的通信,而 SMTP 通常用于服务器到服务器的通信。

POP3 通信

POP3 通常用于邮件客户端到邮件服务器的通信。POP3 的正常操作如下:

  1. 打开电子邮件客户端,输入登录访问的用户名和密码。

  2. 使用 POP 作为显示过滤器来列出所有的 POP 数据包。应该注意,这个显示过滤器将只列出使用 TCP 端口110的数据包。如果使用 TLS,过滤器将不会列出 POP 数据包。我们可能需要使用tcp.port == 995来列出 TLS 上的 POP3 包。

  3. 检查验证是否已正确通过。在下面的截图中,您可以看到一个以doronn@开头的用户名(所有 id 都被删除)和以u6F开头的密码打开的会话。

  4. 要查看以下屏幕截图中显示的 TCP 流,请右键单击流中的一个数据包,并从下拉菜单中选择 Follow TCP Stream:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 身份验证阶段的任何错误消息都将阻止通信的建立。您可以在下面的屏幕截图中看到这样的例子,其中用户验证失败。在本例中,我们看到当客户端登录失败时,它关闭了 TCP 连接:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 使用相关的显示过滤器列出特定的数据包。例如,pop.request.command == "USER"会列出带有用户名的 POP 请求包,pop.request.command == "PASS"会列出带有密码的 POP 包。一个示例快照如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在邮件传输过程中,请注意邮件客户端很容易填满一条窄带通信线路。您可以通过简单地在 POP 上配置一个过滤器来检查 I/O 图。
  2. 始终检查常见的 TCP 指示:重新传输、零窗口、窗口满等。它们可以指示通信线路繁忙、服务器运行缓慢以及来自通信线路或终端节点和服务器的其他问题。这些问题通常会导致连接缓慢。

当 POP3 协议使用 TLS 进行加密时,有效负载的详细信息是不可见的。我们将在*中解释如何解密 SSL 捕获,还有更多内容…*一节。

IMAP 通信

IMAP 与 POP3 的相似之处在于,客户端使用 IMAP 从服务器检索邮件。IMAP 通信的正常行为如下:

  1. 打开电子邮件客户端,输入相关帐户的用户名和密码。
  2. 撰写新邮件并从任何电子邮件帐户发送。
  3. 在使用 IMAP 的客户端上检索电子邮件。不同的客户可能有不同的检索电子邮件的方式。使用相关按钮触发它。
  4. 检查您是否在本地客户端上收到了电子邮件。

SMTP 通信

SMTP 通常用于以下目的:

  • 服务器到服务器的通信,其中 SMTP 是服务器之间运行的邮件协议
  • 在某些客户端中,POP3 或 IMAP4 配置用于传入邮件(从服务器到客户端的邮件),而 SMTP 配置用于传出邮件(从客户端到服务器的邮件)

SMTP 通信的正常行为如下:

  • 本地电子邮件客户端解析配置的 SMTP 服务器地址的 IP 地址。
  • 如果 SSL/TLS 未启用,这将触发到端口号25的 TCP 连接。如果启用了 SSL/TLS,则通过端口465建立 TCP 连接。
  • 它与服务器交换 SMTP 消息以进行身份验证。客户端发送AUTH LOGIN触发登录认证。成功登录后,客户端将能够发送邮件。
  • 它发送 SMTP 消息,如携带发送者和接收者电子邮件地址的"MAIL FROM:<>", "RCPT TO:<>"
  • 成功排队后,我们从 SMTP 服务器得到一个OK响应。

以下是客户端和服务器之间的 SMTP 邮件流示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它是如何工作的…

在本节中,让我们来看看使用 Wireshark 时不同电子邮件协议的正常操作。

邮件客户端通常使用 POP3 与服务器通信。在某些情况下,他们也会使用 SMTP。IMAP4 在需要服务器操作时使用,例如,当您需要查看远程服务器上的邮件而不需要将它们下载到客户端时。服务器到服务器的通信通常由 SMTP 实现。

IMAP 和 POP 的区别在于,在 IMAP 中,邮件总是存储在服务器上。如果您删除它,它将无法在任何其他机器上使用。在 POP 中,删除下载的电子邮件可能会也可能不会删除服务器上的该电子邮件。

一般来说,SMTP 状态代码分为三类,它们的结构有助于您理解到底哪里出了问题。SMTP 状态代码的方法和细节将在下一节讨论。

POP3

POP3 是邮件客户端用来从服务器检索电子邮件的应用层协议。典型的 POP3 会话如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它具有以下步骤:

  1. 客户端打开到服务器的 TCP 连接。
  2. 服务器向客户端发送一条OK消息(OK 消息多路复用器)。
  3. 用户发送用户名和密码。
  4. 协议操作开始。NOOP(无操作)是为了保持连接打开而发送的消息,STAT(状态)是从客户端发送到服务器查询消息状态。服务器用消息的数量和它们的总大小来回答(在包1042中,OK 0 0表示没有消息,它的总大小为零)
  5. 当服务器上没有邮件消息时,客户端发送一个QUIT消息(1048,服务器确认它(数据包1136),TCP 连接关闭(数据包113711381227)。
  6. 在加密连接中,这个过程看起来几乎是一样的(见下面的截图)。连接建立后( 1 ),有几条 POP 消息( 2 ),TLS 连接建立( 3 ,然后是加密的申请数据:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因特网邮件访问协议

IMAP 的正常操作如下:

  1. 电子邮件客户端解析 IMAP 服务器的 IP 地址:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的屏幕截图所示,当 SSL/TSL 被禁用时,客户端建立到端口143的 TCP 连接。启用 SSL 时,将通过端口993建立 TCP 会话。

  1. 一旦会话建立,客户端发送 IMAP 能力消息,请求服务器发送服务器支持的能力。
  2. 接下来是访问服务器的身份验证。当认证成功时,服务器回复响应代码3,表明登录成功:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 客户端现在发送 IMAP FETCH命令从服务器获取邮件。
  2. 当客户端关闭时,它发送注销消息并清除 TCP 会话。

简单邮件传输协议

SMTP 的正常操作如下:

  1. 电子邮件客户端解析 SMTP 服务器的 IP 地址:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 当 SSL/TSL 未启用时,客户端在端口25上打开到 SMTP 服务器的 TCP 连接。如果启用了 SSL,客户端将在端口465上打开会话:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. TCP 会话建立成功后,客户端将发送一条AUTH LOGIN消息,提示输入帐户用户名/密码。

  2. 用户名和密码将被发送到 SMTP 客户端进行帐户验证。

  3. 如果认证成功,SMTP 将发送响应代码235:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 客户端现在将发送者的电子邮件地址发送到 SMTP 服务器。如果发件人的地址有效,SMTP 服务器将使用响应代码250进行响应。
  2. 在收到来自服务器的OK响应时,客户端将发送接收者的地址。如果收件人的地址有效,SMTP 服务器将使用响应代码250进行响应。
  3. 客户端现在将推送实际的电子邮件消息。SMTP 将使用响应代码250和响应参数OK: queued进行响应。
  4. 成功排队的邮件确保邮件成功发送并排队等待传递到收件人地址。

还有更多…

电子邮件有时被称为网络的无声杀手之一,尤其是在使用非对称线路连接互联网的小企业中。发短信时,他们不会消费网络上的任何东西;但是,当您通过窄带上行链路向 ISP 发送一个几兆甚至几十兆的大文件时,您办公室中的其他用户将会遭受数秒甚至数分钟的网络减速。这个问题我在很多小办公室都见过。

邮件客户端的另一个问题是,在某些情况下(可配置),邮件客户端被配置为在开始工作时从服务器下载所有新数据。如果您有一位客户抱怨说,当所有员工都在办公室开始一天的工作时,网络速度变慢了,这可能是由于数十或数百个客户端同时打开了他们的邮件客户端,而且邮件服务器位于 WAN 上。

Wireshark 中的 SSL 解密

如前所述,所有电子邮件协议(SMTP、IMAP 和 POP3)都支持 SSL/TLS,其中传输层信息是加密的,在 Wireshark 中是不可读的。为了解密它,我们需要客户端使用的 SSL 密钥。

以下是要遵循的步骤:

  1. 确定电子邮件客户端使用的 SSL 密钥。根据硬件和应用的不同,获取 SSL 的过程可能会有所不同:
    • 在 macOS 中,前往“应用”,然后前往“实用工具”,然后打开“钥匙串访问”。这将列出不同应用的所有证书和密钥。为电子邮件客户端确定正确的 SSL 密钥。
    • 在 Windows 中,转到 Microsoft 管理控制台(MMC ),然后转到证书。这将列出不同应用的所有证书。识别正确的证书并将其导出。
  2. 确定电子邮件客户端的 SSL 密钥后,在 Wireshark 中打开首选项,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 从协议中选择 SSL 。

  2. 在突出显示的字段中选择 SSL 密钥,然后单击确定。

  3. 前面的过程将让 Wireshark 使用 SSL 密钥解密消息,并显示数据包捕获的解密版本。

分析 POP、IMAP 和 SMTP 问题

在本菜谱中,我们将讨论如何使用 Wireshark 来分析电子邮件协议中的故障。

做好准备

当某个用户报告了故障,而所有其他用户都工作正常时,请尽可能靠近受影响的用户捕获数据包。如果多个用户都报告了失败,请在尽可能靠近服务器的地方捕获数据包。

怎么做…

根据故障的方向,我们可能需要确定应该对什么电子邮件协议进行故障诊断。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例如,如果用户抱怨发送电子邮件时出现故障,我们需要关注 SMTP,如果故障与接收电子邮件有关,我们需要关注 IMAP 或 POP3(取决于客户端使用的协议)。

  1. 确定故障方向后,检查相关端口的 TCP 会话是否已建立:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 前面的截图显示客户端无法在端口143上建立到服务器的 TCP 会话。在这种情况下,我们应该遵循第十章网络层协议和操作第十一章传输层协议分析中解释的传统网络故障排除行为。
  2. 如果建立了会话,下一步是检查应用层协议是否成功通过了服务器的身份验证。错误的用户名/密码或恶意用户访问服务器的尝试将被标记为以下错误消息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 检查用户名和密码,确保使用正确的用户名和密码进行身份验证。

当您怀疑服务器到服务器的通信缓慢时,请按照下列步骤解决问题:

  1. 检查服务器是否位于同一站点:
    • 如果它们位于同一个站点,您可能有缓慢的服务器或其他应用问题。在大多数情况下,局域网不会引起任何问题,尤其是当两台服务器位于同一个数据中心时。
    • 如果它们不在同一站点(当服务器通过 WAN 连接位于远程站点时),请检查 WAN 连接上的负载。当发送大型邮件时,他们可以很容易地阻塞这些线路,尤其是当它们是窄带(几 Mbps)时。
  2. 首先,查找 TCP 问题,并检查是仅在 SMTP 上,还是在所有其他应用上都存在这些问题。例如,在下面的屏幕截图中,您可以看到许多 TCP 重新传输:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 检查他们是否是因为一个缓慢的 SMTP 服务器。是邮件问题吗?当您查看下面的截图时,您会看到我已经使用了 TCP 对话统计。在选中“限制显示过滤器”复选框并单击窗口顶部的“数据包”(从更多的数据包中获取列表)后,我们可以看到只有 793 个数据包是重新传输的数据包中的 SMTP 数据包。端口445(微软 DS)的172.16.30.247172.16.30.2之间转发了 9014 个包,端口80 (HTTP)的172.16.30.180192.5.11.198之间转发了 2319 个包,以此类推:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这种情况下,SMTP 只受到不良通信的影响。这不是 SMTP 的问题。

  1. 检查 SMTP 错误。在下面的截图中,可以看到错误代码451,也称为local error in processing服务器错误。此外,还包括一个错误列表。

当出现问题时,在大多数情况下,服务器或客户端会告诉您。你只需要看看这些信息,然后用谷歌搜索一下。我们以后会看到很多这样的例子。

您还可以在 http://www.ietf.org/rfc/rfc1893.txt 的 RFC 1893 中找到 SMTP 状态代码列表:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 当您想找出双方发送了哪些错误时,请配置一个过滤器,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里您可以看到各种事件(代码):

  • 421:表示邮件服务可能不可用( 1 )。
  • 452:这表示服务器无法响应,告诉您稍后再试。发生这种情况是由于服务器上的负载或服务器问题( 2 )。
  • 451:(代码250如截图所示,见以下注释)这表示用户超限额( 3 )。
  • 452:这表示已经超过邮箱大小限制( 4 )。
  • 450:(代码250如截图所示,见以下注释)这表示没有找到主机( 5 )。

在 SMTP 中(像在许多其他协议中一样),您可以在同一个消息中获得几个错误代码。您在 Wireshark 的数据包列表中看到的可能是第一个,或者是部分列表。要查看 SMTP 消息中的完整错误列表,请转到数据包详细信息并打开特定的数据包,如下一个屏幕截图所示。

当您看到太多代码时,表示服务器不可用。在这种情况下,请咨询服务器管理员:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它是如何工作的…

每个电子邮件协议(SMTP、IMAP 和 POP3)的正常行为在邮件协议配方的正常操作中解释。将失败捕获与正常操作捕获进行比较将有助于识别导致客户端失败的问题。

过滤和分析不同的错误代码

在本菜谱中,我们将讨论如何使用 Wireshark 根据错误代码过滤某些消息以进行分析。

做好准备

根据故障情况,在客户端或服务器端捕获数据包。重申一下,当协议使用 SSL/TLS 建立会话时,在使用错误代码作为过滤器之前,我们需要 SSL 密钥来解密消息。否则,错误代码将被解密,并且可能不会在筛选后的输出中列出。

怎么做…

每种电子邮件协议都使用不同类型的错误代码来传达客户端和服务器之间的任何故障或问题。在本节中,我们将讨论如何使用 Wireshark 过滤每个电子邮件协议的错误代码。

简单邮件传输协议

在对电子邮件相关问题进行故障排除或分析时,来自服务器日志或 Wireshark 捕获的 SMTP 状态代码非常有用。不同的状态代码在服务器和客户机之间交换,以表示工作或故障情况。虽然有不同的过滤方式,但我们将看到常见且有用的过滤选项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用smtp.response将过滤所有带有响应状态代码的 SMTP 消息。如果我们知道状态代码,可以使用smtp.response.code==<code>进一步细化过滤器。

由于 SMTP 响应状态代码是用数值定义的,Wireshark 允许我们根据范围过滤状态代码。例如,smtp.response.code > 200将列出状态码高于200的所有数据包。以下是输出示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还可以根据响应参数过滤 SMTP 邮件。使用smtp.rsp.parameters==<param>将根据响应参数过滤数据包。以下是一个示例输出,列出了带有AUTH LOGIN参数的 SMTP 数据包:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于可用 SMTP 状态代码的更多细节可以在*中找到…*一节。

因特网邮件访问协议

诸如OKNOBADBYE之类的状态响应用于指示客户端和服务器之间的任何 IMAP 命令失败的原因。每个 IMAP 命令都与OKNOBAD状态响应相关联,并带有特定于该命令的附加细节。这些状态响应可能被标记或未被标记,携带额外的细节。

例如,IMAP 命令DELETE与响应代码OKNOBAD相关联。OK的状态响应表示删除命令成功。IMAP 命令LOGIN与响应代码NO相关联,该响应代码将携带额外的细节,例如无效的用户名或密码;这表明登录尝试失败:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用imap.request将过滤从客户端到服务器的所有 IMAP COMMAND消息。如果我们知道具体的命令,可以使用imap.request.command == "<>"进一步细化过滤器:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过使用imap.response,我们可以过滤从服务器到客户端的所有 IMAP 响应状态消息。Imap.response.status ==<>可用于按响应状态过滤,如OKNOBAD

POP3

与 IMAP 一样,POP3 使用响应消息来通知客户端和服务器之间的任何故障。POP3 主要使用+OK-ERR作为响应指示器,以及关于响应的附加细节:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面的截图是一个例子,其中Response indicator-ERR,描述携带了ERR的类型。在这种情况下,ERR与登录失败有关。

通过使用pop.requestpop.response,我们可以分别基于从客户端到服务器的 POP3 请求或从服务器到客户端的响应来过滤数据包。我们可以进一步使用该指标根据具体的响应指标进行筛选:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如此处所示,指示器的过滤器应为+OK-ERR

它是如何工作的…

所有电子邮件协议都使用相同的概念,即发送命令并期待命令的响应或状态代码。当来自客户端的命令或请求被成功执行时,服务器发送一个肯定的状态码(如OK)。如果在执行命令时出现任何问题或失败,它会发送一个否定的响应代码(如NOBAD)。关于错误代码的更多细节可以在*中找到…*节后文:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有更多…

响应代码和每个响应代码的相关语义记录在每个邮件协议的不同 RFC 中。在本节中,我们将讨论一些常见的响应代码,并列出 RFC,其中提供了有关响应代码的更多详细信息。

IMAP 响应代码(RFC 5530)

RFC 5530 列出了所有响应代码以及每个响应代码的相关含义。IMAP 响应代码的综合视图也可以从以下 IANA 链接中检索:https://www . iana . org/assignments/IMAP-response-codes/IMAP-response-codes . XHTML

POP3 响应代码(RFC 2449)

RFC 2449 列出了响应代码以及每个 POP3 响应代码的相关含义。POP3 响应代码的综合视图也可通过以下 IANA 链接获得:https://www . iana . org/assignments/pop 3-extension-mechanism/pop 3-extension-mechanism . XHTML

SMTP 和 SMTP 错误代码(RFC 3463)

SMTP 状态代码的结构如下:

class . subject . detail 

例如,当您看到状态代码450时,其含义如下:

  • 等级 4 表示这是一个暂时的问题
  • 主题 5 表示这是一个邮件传递状态
  • 详细信息 0 表示一个未定义的错误(RFC 3463)

下表列出了各种类别:

| 状态代码 | 意为 | 原因 |
| 2.x.xxx | 成功 | 操作成功。 |
| 4.x.xxx | 持续瞬时故障 | 一个临时条件阻止了服务器发送邮件。这可能是由于服务器负载或网络瓶颈。通常,再次发送消息会成功。 |
| 5.x.xxx | 永久失效 | 一个永久性问题阻止了服务器发送邮件。通常是服务器或兼容性错误。 |

下表列出了各种主题:

| 状态代码 | 什么事? |
| x.0.xxx | 其他或未定义的状态 |
| x.1.xxx | 寻址状态 |
| x.2.xxx | 邮箱状态 |
| x.3.xxx | 邮件系统状态 |
| x.4.xxx | 网络和路由状态 |
| x.5.xxx | 邮件传递协议状态 |
| x.6.xxx | 消息内容或媒体状态 |
| x.7.xxx | 安全或策略状态 |

下表列出了各种详细信息。状态详细信息的完整列表太长,无法在此列出,但可以在位于http://tools.ietf.org/html/rfc3463的标准页面中找到。

下表列出了一些常见的状态代码:

| 状态代码 | 什么事? | 可能是什么原因? |
| 220 | 服务准备好了 | 服务正在运行,准备执行邮件操作。 |
| 221 | 服务关闭传输通道 | 平时还行。这就是服务器在不需要服务时关闭服务的方式。 |
| 250 | 请求的邮件操作正常 | 消息已成功传递。 |
| 251 | 不是本地用户,邮件将被转发 | 一切正常。 |
| 252 | 无法验证用户 | 服务器无法验证该用户。邮件会被投递。 |
| 421 | 服务不可用 | 邮件传输服务不可用,由于临时事件,无法接收邮件。这可能是由于服务器问题(未运行的服务)或服务器限制。 |
| 422 | 邮件大小问题 | 收件人的邮箱已超过其限额或对传入邮件有限制。 |
| 431 | 内存不足或磁盘已满 | 服务器磁盘已满或内存不足。检查服务器。 |
| 432 | 传入邮件队列已停止 | 这可能是由于服务器错误(服务已停止)。 |
| 441 | 接收服务器没有响应 | 发送消息的服务器表示目的服务器没有响应。 |
| 442 | 连接不良 | 与目标服务器的连接有问题。 |
| 444 | 无法路由 | 服务器无法确定邮件的下一个跃点。 |
| 445 | 邮件系统拥塞 | 邮件服务器暂时拥塞。 |
| 447 | 交付时间已过 | 拒绝系统认为该消息太旧。这通常是由于排队或传输问题。 |
| 450 | 请求的操作未被执行 | 无法传输消息。这通常是由于远程服务器上的邮件服务有问题。 |
| 451 | 无效命令 | 这表示命令不受支持或顺序错误。接收服务器中止了该操作。这可能是由于发送或接收服务器上的负载造成的。 |
| 452 | 请求的操作未被执行 | 接收服务器上的存储空间不足。 |
| 500 | 语法错误 | 服务器发送的命令未被识别为有效的 SMTP 或 ESMTP 命令。 |
| 512 | DNS 错误 | 找不到作为邮件发送目的地的主机服务器。 |
| 530 | 认证问题 | 接收服务器需要认证,或者您的服务器已被接收服务器添加到黑名单中。 |
| 542 | 收件人地址被拒绝 | 表明您的服务器地址被接收服务器拒绝的消息。这通常是由于反垃圾邮件软件、IDS/IPS 系统、智能防火墙或其他安全系统。 |

恶意和垃圾邮件分析

在本菜谱中,我们将讨论如何使用 Wireshark 对恶意邮件和垃圾邮件进行一些基本分析,并使用它在服务器上过滤垃圾邮件。

做好准备

在大多数情况下,垃圾邮件会从域外发送,目标是企业内的客户端。因此,最好在服务器端执行数据包捕获以进行分析。

怎么做…

  1. 第一步是识别邮件消息的数据部分。我们可以使用过滤器来显示邮件的数据部分。使用电子邮件协议和数据将显示带有数据的数据包。例如,使用pop || data-text-lines过滤带有 POP3 协议数据的邮件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在前面的截图中,特定端点之间的数据交换没有那么大。根据大小,它似乎是一条文本消息,不包含任何附件,因此我们可以忽略它:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 另一方面,前面的捕获显示数据交换相当大,并且似乎带有附件。
  2. 使用“跟随流”来缩小 TCP 流的范围。这将以明文形式过滤和列出邮件交换,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的截图中,我们可以看到这封电子邮件带有一个 PDF 文件。使用发件人、收件人、主题和相关信息来识别邮件是否真实。或者,我们可以使用其他恶意软件检测软件来查找附件中的任何问题。

如果在多封电子邮件中看到类似的附件,请确定共同的发件人,并在服务器中创建垃圾邮件规则,将其标记为垃圾邮件或直接过滤此类电子邮件。

它是如何工作的…

大多数电子邮件服务器支持垃圾邮件和垃圾邮件检测,并为此类电子邮件动态创建过滤规则。服务器也支持基于发送者/接收者邮件地址,或者基于域和 IP 来定制这样的规则。

当服务器从使用 IMAP/POP3 的内部客户端或使用 SMTP 的外部服务器接收邮件时,它会检查本地过滤器,并在规则允许的情况下将其转发到相应的收件箱。如果任何规则与邮件中的某些属性或元数据匹配,服务器将过滤该邮件。

在电子邮件客户端,我们可以选择安装电子邮件扫描软件来提高安全性。这种软件会在客户端执行额外的检查,将其标记为垃圾邮件或恶意邮件,并警告用户。

十五、NetBIOS 和 SMB 协议分析

在本章中,我们将介绍以下配方:

  • NetBIOS 名称、数据报和会话服务
  • 中小企业/SMB2/SMB3 详细信息和运营
  • 不同的问题以及如何分析
  • 连接和性能问题
  • 数据库流量的常见问题和分析步骤
  • 导出 SMB 对象–如何使用

介绍

Wireshark 的一个重要用途是应用分析和故障排除。当应用变慢时,可能是由于 LAN(在有线 LAN 中很少见)、WAN 服务(由于带宽不足或高延迟而常见)或缓慢的服务器或客户端(我们将在数据库流量和常见问题部分中看到这一点)。这也可能是由于缓慢或有问题的应用。

本章的目的是深入了解应用如何工作的细节,并提供一些隔离和解决这些问题的指南和方法。在第一个食谱中,我们将学习如何找出并分类在我们的网络上工作的应用。然后,我们将浏览各种类型的应用,看看它们是如何工作的,网络如何影响它们的行为,以及什么可能出错。

在本章中,我们将学习如何使用 Wireshark 来解决企业网络中常见的应用问题,例如 NetBIOS 和 SMB 协议。

了解 NetBIOS 协议

网络基本输入/输出系统 ( NetBIOS )是 80 年代初为局域网通信开发的一套协议,目的是为会话层(OSI 模型中的第五层)提供服务。几年后,它被微软公司用于局域网联网,然后它被移植用于 TCP/IP(TCP/IP 上的 NetBIOS——NBT ),这将在 RFC 1001 和 1002 中讨论。

在当今的网络中,NetBIOS 提供三种服务:

  • 名称服务(端口137)用于名称注册和名称到 IP 地址的解析。也称为 NetBIOS-NS。
  • 数据报分发服务(端口138)用于客户端和服务器的服务通告。也称为 NetBIOS-DGM。
  • 会话服务(端口139)用于主机间的会话协商。这用于访问文件、打开目录等等。也称为 NetBIOS-SSN。

NBNS 是一种注册域名并将其转换为 IP 地址的服务。当客户端在域控制器中注册其名称时,就会发生注册。客户端发送一个注册请求,然后得到一个响应,表明该注册是正确的,还是该名称已注册到另一个设备。微软的环境是用 WINS 实现的,由于大多数网络不使用它,它后来被 DNS 所取代。它通过 UDP 端口137工作。

NBDS 用于客户端和服务器的服务公告。通过此服务,网络上的设备会宣布它们的名称、它们可以向网络上的其他设备提供的服务,以及如何连接到这些服务。它通过 UDP 端口138工作。

NBSS 用于在主机之间建立会话,打开或保存文件,以及通过网络执行远程文件和其他会话。它通过 TCP 端口139工作。

还有一些附加协议,如服务器消息块 ( SMB ),它们在 NBSS 上运行,用于事务操作,在 NBDS 上运行,用于服务通知,用于打印机请求的假脱机,以及其他一些协议。深入 NetBIOS 的细节超出了本书的范围。如果需要对 NetBIOS 协议进行故障排除,请遵循本节中的说明,并特别注意错误消息和注释。

了解 SMB 协议

我们在前面的章节中简要讨论了 SMB,也看到了相关的过滤器。简单地说,SMB 是一种协议,用于浏览目录、复制文件、访问打印机等服务以及网络上的其他一些操作。通用互联网文件系统 ( CIFS )是 SMB 的一种形式,或者说风味。

SMB 运行在会话层协议之上,如最初设计的 NetBIOS,或者也可以直接运行在 TCP 端口445上。SMB 2.0 是微软于 2006 年在 Windows Vista 中推出的,旨在减少 SMB 1.0 协议中所需的命令和子命令。尽管 SMB 2.0 是作为一种专有协议出现的,但微软还是发布了该标准,以允许其他系统与其操作系统进行互操作。

SMB 2.1 随 Windows 7 和 Server 2008 R2 一起发布,与 SMB 2.0 相比,性能有所提升。

Windows 8 和 Server 2012 中引入了 SMB 3.0(之前称为 SMB 2.2)。为了支持数据中心计算环境中的虚拟化,SMM 3.0 具有显著的性能改进(与早期版本相比)。

它是如何工作的…

SMB 采用客户端-服务器模式,客户端向服务器发出特定请求,服务器根据请求做出相应的响应。大多数请求与访问文件系统有关,而其他形式的请求涉及进程间通信 ( IPC )。IPC 是一种便于不同进程相互通信的机制,不管它们是运行在同一台设备上还是网络中的多台设备上。

分析 NetBIOS/SMB 协议中的问题

在本章中,我们将探讨 NetBIOS 协议套件的一些常见问题,并学习如何尝试解决这些问题。由于 NetBIOS 协议集相当复杂,并且有数百种可能出错的情况,我们将尝试提供一些指南,说明如何查找常见问题以及可能出错的地方。

做好准备

NetBIOS 协议在 Windows 环境中工作,与 macOS 和 Linux 机器一起与 Windows 通信。当在这些环境中遇到诸如不稳定、响应时间慢、连接中断等问题时,NetBIOS 问题可能是原因之一。当面对这些问题时,解决它们的工具就是 Wireshark。它将向您显示网络上正在运行什么,而 Windows 工具将向您显示客户端和服务器上正在运行什么。

怎么做…

要尝试找出问题所在,请将装有 Wireshark 的笔记本电脑连接到网络,并按照这里所述对可疑的客户端或服务器进行端口镜像。在接下来的部分中,我们将看到几个问题的几个场景。

NetBIOS 使用了许多预定义的筛选器。你可以通过点击表达式找到它们…按钮,位于显示过滤器窗口的右侧:

  • 一般的 NetBIOS 命令以netbios开始
  • NetBIOS 名称服务命令以nbns开头
  • NetBIOS 数据报服务命令以nbds开始
  • NetBIOS 会话服务命令以nbss开始
  • SMB 命令以smbsmb2开始

一般测试

首先,大致看一下网络。然后,寻找可疑的模式:

  1. 将 Wireshark 连接到网络。确保运行 Wireshark 的工作站与出现问题的客户端在同一个广播域中。
  2. 配置显示过滤器nbns.flags.response == 0。它会给你 NBNS 请求。你会看到很多广播,如下图截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.1: NBNS 数据包类型

  1. 正如您在前面的屏幕截图中看到的,在捕获文件中,您将看到以下内容:

    • NBNS 注册包(1) :在例子中,有名字为WORKGROUPETTI的注册。NBNS 服务器将通过向请求节点发出肯定或否定的名称注册响应来接受或拒绝名称注册。如果没有接收到,请求节点将认为它是正常的。
    • NBNS 查询(2、3 和 4) :针对指定的名称发送查询。如果有 NBNS 服务器(这是域控制器),您将看到以下响应之一:
      • 请求的名称不存在(代码3)
      • 无错误(代码0)
  2. 确保没有来自以169.254 ( 5 )开头的地址的注册或任何其他请求。这些是自动私有 IP 地址 ( APIPA )地址。这实际上意味着 PC 被配置为自动接受地址(通过 DHCP ),但它还没有收到地址。

  3. 还有许多公告包。这些将在 UDP 端口138上广播。在这里,您将看到每个工作站都公布了其功能:工作站、服务器、打印服务器等等。例如,您可以在这里看到:

    • 172.16.100.10名为FILE-SRV,其功能类似于工作站、服务器和 SQL server ( 1 )
    • 172.16.100.204名为GOLF,其功能类似于工作站、服务器和打印队列服务器( 2

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.2: NetBIOS 服务公告

  1. 有一些蠕虫和病毒正在使用 NetBIOS 名称服务来扫描网络。寻找不寻常的模式,如大规模扫描,高广播率,等等。
  2. 验证你没有太多的广播。5 至 10 个广播/分钟/设备是合理的。超过这个通常意味着有问题。

您可以在这里看到数百种消息场景。使用 Wireshark 专家系统、Google 和常识找出问题。

具体问题

以下是您在日常操作中可能会遇到的一些问题:

  • 使用 SMB(用于通过网络浏览目录、复制文件和其他操作的协议),您可能会看到一些错误代码。错误类别和代码的完整列表在微软 MSDN:http://msdn.microsoft.com/en-us/library/ee441884.aspxhttps://tinyurl.com/y7kuxygd中列出。
  • 代码0就是STATUS_OK的意思,暗示一切正常,没有问题。应该检查任何其他代码。
  • 在下面的例子中,您可以看到一条消息STATUS_ACCESS_DENIED。这是您应该查找的许多错误代码之一。在本例中,在 IP 地址以203开头的服务器上访问\NAS01HOMEDIR(出于安全原因,隐藏了完整地址)被拒绝。
  • 当你试图浏览主目录时,Windows 通常会显示一条拒绝访问的信息或类似的信息。当应用试图访问某个目录但无法访问该目录时,可能会发生此问题。在这种情况下,您会看到一条拒绝访问消息、一条软件通信问题消息或程序员为您制作的任何其他消息。在这种情况下,使用 Wireshark 会让您找到确切的错误,Google 会告诉您错误的原因:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.3: SMB 错误类别和代码—拒绝访问

  • 在下一个例子中,我们看到了在\NAS01SAMIM ( 3 )的会话设置( 1 )期间发生的状态STATUS_MORE_PROCESSING_REQUIRED ( 2 )。
  • 查看前面提到的链接,我们看到这是因为在指定的命名管道上,有更多的数据可供读取。
  • 简短的谷歌搜索告诉我们,这可能表明一个凭证问题。请咨询您的系统管理员:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.4: SMB 错误类别和代码—命名管道

  • 要查看所有 SMB 错误消息,请键入筛选器smb.nt_status != 0x0。您将获得所有错误响应,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.5: SMB 错误类别和代码—过滤错误

还有更多…

在这一节中,我将展示一些例子来更好地理解 NetBIOS 协议。

示例 1–应用冻结

在下面的屏幕截图中,我们看到了应用冻结的原因:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.6:错误条件—应用冻结

在示例中,我们进行了以下观察:

  • IP 地址以203开头的客户端试图连接到 IP 地址为10.1.70.95的服务器上的\NAS01SAMIM,并返回一个STATUS_ACCESS_DENIED错误
  • 10.1.70.95上的服务器回答访问被拒绝
  • 由于应用在等待,TCP 用保活消息保持连接
  • 过了一会儿,客户端发送服务器批准的断开请求
  • 应用等待,TCP 通过保持活动来维持连接
  • TCP 用RST(复位)关闭连接

客户在这里看到的是应用冻结。

示例 2–中小企业引发的广播风暴

在我的一个客户的网络中,我接到一个紧急电话,说一个远程办公室与总部断开了连接。一些网络细节如下:

  • 远程办公室地址在子网172.30.121.0/24上,具有默认网关172.30.121.254
  • HQ 地址在子网172.30.0.0/24上。远程办公室和总部之间的连接是通过 MPLS 网络使用 l3ip-VPN。

为了解决这个问题,我做了以下工作:

  • 我试着连接总部的服务器。我没有得到回应。
  • 我打电话给为中心提供线路的服务提供商,他们说在他们的监控系统上他们没有看到线路上有任何负载。
  • 我 pinged 了本地路由器172.30.121.254,没有得到响应。这意味着局域网上的 pc 机甚至不能到达它们的本地路由器,这是它们的默认网关。
  • 我将带有 port-mirror 的 Wireshark 连接到路由器端口,看到了类似下面的截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.7:错误条件—广播风暴

  • 我看到 IP 地址为172.30.121.1的主机在几微秒( 1 )内产生了大量的数据包。数据包被广播( 3 ),生成它们的服务是Write Mail Slot ( 5 ),由SMB Mailslot协议( 4 )发送。
  • 为了了解包的数量,我使用了 I/O graphs 特性。我得到了每秒 5000 个包,这产生了 10 Mbps,阻塞了可怜的旧路由器端口(将路由器端口更改为 100 Mbps 或 1 Gbps 无济于事;它仍然会被封锁。
  • 当我在谷歌或微软上没有找到任何关于它的信息时,我开始停止我不知道的服务,在每次改变后跟踪广播发生了什么。最终我发现导致问题的服务叫做LS3Bcast.exe。我阻止了它,确保它不再回来,就这样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.8: SMB 广播风暴—流量率

分析数据库流量和常见问题

你们中的一些人可能想知道为什么我在这里增加了这个部分。毕竟,数据库被认为是 IT 环境中完全不同的一个分支。一边是数据库和应用,另一边是网络和基础设施。这是正确的,因为我们不应该调试数据库;这方面有 DBA。但是通过网络上的信息,我们可以发现一些问题,帮助数据库管理员解决问题。

在大多数情况下,IT 人员会先来找我们,因为人们把一切都归咎于网络。我们必须确保问题不是来自网络,仅此而已。在少数情况下,我们将在捕获文件中看到一些细节,这些细节可以帮助 DBA 完成他们正在做的工作。

做好准备

当 IT 团队向我们抱怨网络速度慢时,我们需要做一些事情来证实事实并非如此。遵循下一节中的说明,以确保我们避免缓慢的网络问题。

怎么做…

如果数据库出现问题,请按照下列步骤操作:

  1. 当您收到关于网络响应缓慢的投诉时,开始询问这些问题以准确地确定问题:
    • 这个问题是地方性的还是全球性的?它是只发生在远程办公室,还是也发生在中心?当问题出现在整个网络中时,它不是 WAN 带宽问题。
    • 所有客户的情况都一样吗?如果不是,可能是某个特定的问题只发生在某些用户身上,因为只有这些用户在运行导致该问题的特定应用。
    • 客户端和服务器之间的通信线路是否加载?加载它们的应用是什么?
    • 是所有应用都运行缓慢,还是只有应用与特定的数据库协同工作?可能是部分 PC 旧了,累了,还是服务器耗尽了资源?
  2. 完成问卷后,让我们开始工作:
    1. 打开 Wireshark 并开始捕获数据包。您可以将端口镜像配置到特定的 PC、服务器、VLAN 或连接到您拥有客户端的远程办公室的路由器。
    2. 查看 TCP 事件(专家信息)。它们发生在整个通信链路上、特定的 IP 地址上还是特定的 TCP 端口号上?这将有助于您隔离问题,并验证问题是出在特定的链路、服务器还是应用上。

当测量互联网连接的流量时,您会收到许多对网站、邮件服务器等的重新传输和重复确认。这就是互联网。在一个组织中,您应该预计有 0.1%到 0.5%的重新传输。当连接到互联网时,您可以期待更高的数字。

  1. 如果您发现网络中存在问题,请按照我们在前面章节中所学的方法解决问题。但是,有一些网络问题会影响数据库行为。在下面的例子中,我们看到了一个客户端的行为,它通过一条往返延迟为 35 到 40 毫秒的通信线路与服务器协作。
    1. 我们正在查看第八个 TCP 流( 1 ),连接以 TCP SYN/SYN-ACK/ACK 开始。我把这个作为参考( 2 )。我们可以看到整个连接用了 371 个包( 3 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.9:跟随 TCP 流

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.10:数据库请求和响应—时间间隔

  1. 在这种情况下,您应该向 DBA 咨询如何显著减少网络上运行的数据包数量;或者,您可以转到另一种访问方式,例如,终端服务器或 web 访问。
  2. 另一个可能发生的问题是,您将有一个软件问题,这将反映在捕获文件中。如果你看一下下面的截图,你会看到有五次重新传输,然后从客户端打开一个新的连接。这看起来像是 TCP 问题,但它只发生在软件的特定窗口中。它只是一个停止处理的软件过程,这阻止了 TCP 对客户端的响应:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.11:跟随 TCP 流—重新传输

它是如何工作的…

嗯,数据库如何工作对我来说一直是个谜。我们的任务是找出它们是如何影响网络的,这是我们在本节中学到的。

还有更多…

当您右键单击数据库客户端到服务器会话中的一个数据包时,将会打开一个包含对话的窗口。了解网络上运行的内容对 DBA 很有帮助。

当您面临延迟问题时,例如,当通过互联网或国际连接上的蜂窝线路工作时,服务器的数据库客户机并不总是足够有效。您可能需要通过 web 或终端访问数据库。

一个重要的问题是数据库如何工作。如果客户机正在访问数据库服务器,而数据库服务器正在使用从另一台服务器共享的文件,则可能是客户机-服务器工作得很好,但问题来自数据库服务器和文件服务器上的共享文件。在开始测试之前,请确保您了解所有这些依赖关系。

最重要的是,确保你有非常专业的 DBA 朋友。有一天你会需要它们。

导出 SMB 对象

导出 SMB 对象是导出 SMB 统计数据的一个简单功能。

做好准备

要导出 HTTP 对象,请选择文件|导出对象| SMB/SMB2。

怎么做…

要导出 SMB 对象,请执行以下步骤:

  1. 您可以在捕获运行时使用此功能,也可以对捕获的文件运行此功能。您将看到以下窗口:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15.12:SMB—对象导出

  1. 从这里,您可以获得被访问的服务器列表,包括每个服务器中被访问的文件。您可以看到数据包编号、主机名、内容类型(操作模式,读或读/写)、大小和文件名。

  2. 您可以使用“另存为”或“全部保存”按钮将数据保存在文件中。

  3. 在“内容类型”列中,您将看到以下内容:

    • 文件:如果访问的内容是由指定服务器提供的文件。
    • PIPE:正如我们在本章前面几节中讨论的,SMB 也用于 IPC。对于这种 IPC 机制,SMB 系统提供了命名管道服务。例如,微软的 RPC over SMB 实现使用命名管道基础设施运行。关于命名管道的详细信息超出了本书的范围,Wireshark 发现的任何其他文件也是如此。

要使用导出 SMB 对象功能,首先转到 TCP 首选项并启用 TCP 数据包重组(允许子分配器重组 TCP 流)。

成功导出并保存后,您应该会看到通过重组数据包构建的数据(文件、图片或任何使用 SMB 访问的内容)。

它是如何工作的…

此功能扫描当前打开的捕获文件或正在运行的捕获中的 SMB 数据包,获取重组的对象,并允许您将它们保存到磁盘。然后,可以用适当的查看器打开保存的对象,或者在可执行文件的情况下,只需点击它们就可以执行它们。此功能可用于各种目的,包括窃听和保存备份对象(例如,通过文件共享访问的文件)。

十六、分析企业应用的行为

在本章中,我们将介绍以下配方:

  • 找出网络上运行的内容
  • 分析微软终端服务器和 Citrix 的问题和协议
  • 分析数据库流量和常见问题
  • 分析 SNMP

介绍

Wireshark 的一个重要用途是应用分析和故障排除。当应用变慢时,可能是因为 LAN(在有线 LAN 中相当少见)、WAN 服务(由于带宽不足或高延迟而常见)或缓慢的服务器或客户端(我们将在 TCP 窗口问题中看到这种情况)。这也可能是由于缓慢或有问题的应用。

本章的目的是深入了解应用如何工作的细节,并提供隔离和解决这些问题的相关指南和方法。在第一个食谱中,我们将学习如何找出并分类在我们的网络上工作的应用。然后,我们将浏览各种类型的应用,看看它们是如何工作的,网络如何影响它们的行为,以及什么会出错。

在本章中,我们将学习如何使用 Wireshark 来解决企业网络中常见的应用问题并排除故障。这些是微软终端服务器和思杰,数据库,和简单网络管理协议(T2)。

找出网络上运行的内容

当监控一个新网络时,首先要做的是找出在其上运行的是什么。有各种类型的应用和网络协议,当它们都在网络上运行时,会相互影响和干扰。

在某些情况下,您将拥有不同的 VLANs、不同的虚拟路由和转发 ( VRFs ),或者连接到刀片服务器中虚拟端口的服务器。最终,所有东西都运行在同一个基础设施上,它们可以相互影响。

vrf 和 VLANs 之间有一个常见的混淆。即使它们的目的完全相同,但它们在不同的地方配置。虽然 VLAN 是在 LAN 中配置的,以便在 OSI 第 1 层和第 2 层提供网络隔离,但 vrf 是路由表的多个实例,使它们共存于同一路由器中。这是第 3 层操作,在不同客户的网络之间分离。vrf 通常出现在服务提供商环境中,使用多协议标签交换 ( MPLS )通过同一路由器网络向不同客户提供第 3 层连接,这样任何客户都无法看到任何其他客户的网络。

在这份食谱中,我们将了解如何详细了解网络上运行的内容,以及会降低速度的应用。

术语刀片式服务器指的是服务器机箱,它是前面有服务器架、后面有局域网交换机的机箱。它有几种不同的缩写;比如 IBM 称之为刀片中心,惠普称之为刀片系统。

做好准备

当您进入一个新的网络时,要做的第一件事就是连接 Wireshark 来嗅探应用和协议上运行的内容。请确保您遵循以下几点:

  • 当需要监控服务器时,对其进行端口镜像,并查看其网络连接上运行的是什么。
  • 当您需要监控远程办公室时,端口镜像将您连接到 WAN 连接的路由器端口。然后,检查有什么东西在上面跑。
  • 当你需要监控一个缓慢的互联网连接时,端口镜像它,看看那里发生了什么。

在这个菜谱中,我们将看到如何使用 Wireshark 工具来分析什么正在运行,什么会导致问题。

怎么做…

要分析谁在说话,请遵循以下步骤:

  1. 使用上一节提到的选项之一连接 Wireshark。

  2. 您可以使用以下工具:

    • 导航到统计|协议层次结构,查看网络上运行的协议以及占总流量的百分比
    • 导航到统计|对话,查看谁在发言以及使用了什么协议
  3. 在协议层次结构功能中,您将看到一个窗口,帮助您分析谁在通过网络交谈。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的屏幕截图中,您可以看到协议分布:

  • 以太网:IP、逻辑链路控制 ( LLC )和配置测试协议(环回)
  • 互联网协议版本 4: UDP、TCP、协议独立组播 ( PIM )、互联网组管理协议 ( IGMP )、通用路由封装 ( GRE )

如果您单击+号,将会显示所有底层协议。

要查看特定的协议吞吐量,请单击下面屏幕截图所示的协议。您将看到捕获期间应用的平均吞吐量(本例中为 HTTP):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击 HTTP 左侧的+号将打开在 HTTP 上运行的协议(XML、MIME、JavaScripts 等)及其在捕获期间的平均吞吐量的列表。

还有更多…

在某些情况下(尤其是当您需要准备管理报告时),您需要提供网络统计数据的图形图像。对此有各种来源,例如:

分析 Microsoft 终端服务器和 Citrix 通信问题

微软终端服务器,使用远程桌面协议 ( RDP )和 Citrix metaframe 独立计算架构 ( ICA )协议,广泛用于 pc 机和瘦客户机的本地和远程连接。关于这些类型的应用,需要记住的重要一点是,它们通过网络传输屏幕变化。如果只有很少的变化,它们将需要很低的带宽。如果有许多变化,它们将需要高带宽。

另一件事是,这些应用中的流量完全不对称。下行流量从几十 Kbps 到几 Mbps 不等,而上行流量最多几 Kbps。在使用这些应用时,不要忘记根据这一点来设计您的网络。

在本食谱中,我们将看到这些应用的一些典型问题以及如何定位它们。为了写作方便,我们会参考微软终端服务器,每次写微软终端服务器都会参考这一类的所有应用,比如 Citrix Metaframe。

做好准备

当怀疑 Microsoft 终端服务器运行缓慢时,首先向用户询问问题是什么。然后,将 Wireshark 连接到网络,并将端口镜像到投诉客户端或服务器。

怎么做…

当涉及到 Microsoft 终端服务器时,要找到问题所在,首先要找到用户并提出问题。请遵循以下步骤:

  1. 当用户抱怨网络速度慢时,问他们一个简单的问题:当他们切换窗口时,他们看到屏幕上显示的数据慢了吗?

  2. 如果他们说 windows 之间切换很快,那就不是微软终端服务器的问题了。微软终端服务器问题会导致窗口变化缓慢、图片冻结、图形文档滚动缓慢等等。

  3. 如果他们说他们正在尝试生成报告(当软件在 Microsoft 终端服务器上运行时),但报告是在很长一段时间后生成的,这是数据库问题,而不是 Microsoft 终端服务器或 Citrix 的问题。

  4. 当用户通过高延迟的通信线路使用 Microsoft 终端服务器并快速键入时,他们可能会遇到字符延迟。这是因为 Microsoft 终端服务器正在传输窗口更改,由于延迟时间长,这些窗口更改的传输速度会很慢。

  5. 使用 Wireshark 测量通信线路时:

    • 使用 I/O 图形监控线路
    • 使用过滤器监控上游和下游方向
    • y 轴上配置每秒位数
  6. 您将获得以下截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在前面的屏幕截图中,您可以看到一个典型的流量模式,下行流量很高,上行流量很低。请注意,Y 轴配置为位/节拍。在 485 秒和 500 秒之间的时间内,您会看到吞吐量达到最大值。这时应用会变慢,用户会开始感觉到屏幕冻结,菜单移动非常慢,等等。

当 Citrix ICA 客户端连接到演示服务器时,它使用 TCP 端口25981494

  1. 当监视 Microsoft 终端服务器时,不要忘记客户端通过 Microsoft 终端服务器访问服务器,而服务器通过安装在服务器上的另一个客户端访问应用。性能问题可能来自 Microsoft 终端服务器或应用。

  2. 如果问题是 Microsoft 终端服务器的问题,则有必要确定是网络问题还是系统问题:

    • 使用 Wireshark 检查网络,查看是否有负载。可以通过简单地增加通信线路来解决上一个屏幕截图中显示的负载。
    • 检查服务器的性能。像 Microsoft Terminal Server 这样的应用大部分都消耗内存,所以主要检查内存(RAM)问题。

它是如何工作的…

Microsoft 终端服务器、Citrix Metaframe 和应用只是通过网络传输窗口更改。从你的客户端(带软件客户端或瘦客户端的 PC),你连接到终端服务器;和终端服务器运行各种客户端,用于从它连接到其他服务器。在下面的截图中,可以看到终端服务器运行的原理:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有更多…

从终端服务器供应商那里,您会听到他们的应用改进了两件事。他们会说,它提高了客户机的可管理性,因为你不必为每个用户管理电脑和软件;您只需在服务器上安装所有东西,如果有什么东西出现故障,您可以在服务器上修复它。他们还会说网络上的流量会减少。

好吧,我不会进入第一场争论。这不是我们的主题,但我强烈反对第二个。使用终端客户端时,您的流量完全取决于您正在做的事情:

  • 当使用基于文本/字符的应用时,例如,一些企业资源计划 ( ERP )屏幕,你输入并读取数据。使用终端客户端时,您将连接到终端服务器,而终端服务器将连接到数据库服务器。根据您使用的数据库应用,终端服务器可以显著提高性能,也可以根本不提高性能。我们将在数据库部分讨论这一点。在这里,您可以预期几十到几百 Kbps 的负载。
  • 如果您正在处理常规的 office 文档,如 Word、PowerPoint 等,这完全取决于您正在做什么。处理一个简单的 Word 文档需要几十到几百 Kbps。使用 PowerPoint 将需要数百 Kbps 到数 Mbps,当您全屏显示 PowerPoint 文件时( F5 函数),吞吐量可高达 8 到 10 Mbps。
  • 浏览互联网的速度从几百 Kbps 到几 Mbps 不等,取决于你在上面做什么。高分辨率的电影通过终端服务器传到互联网上——好吧,不要这样做。

在实现任何终端环境之前,请对其进行测试。我曾经有一个软件公司希望他们的 logo(在用户窗口的右上角)非常清晰醒目。他们每秒刷新 10 次,导致 2 Mbps 的通信线路被阻断。你永远不知道你不测试什么!

分析数据库流量和常见问题

你们中的一些人可能想知道为什么我们在这里有这个部分。毕竟,数据库被认为是 IT 环境中完全不同的一个分支。一边是数据库和应用,另一边是网络和基础设施。这是正确的,因为我们不应该调试数据库;这方面有 DBA。但是通过网络上的信息,我们可以看到一些问题,这些问题可以帮助数据库管理员解决相关问题。

在大多数情况下,IT 人员会先来找我们,因为人们把一切都归咎于网络。我们必须确保问题不是来自网络,仅此而已。在少数情况下,我们会在捕获文件中看到一些细节,可以帮助 DBA 完成他们正在做的工作。

做好准备

当 IT 团队向我们抱怨网络速度慢时,需要做一些事情来验证事实并非如此。按照下一节中的说明操作,以确保避免网络速度慢的问题。

怎么做…

如果数据库出现问题,请按照下列步骤操作:

  1. 当您抱怨网络响应缓慢时,开始询问以下问题:
    • 这个问题是地方性的还是全球性的?它是只发生在远程办公室还是也发生在中心?当问题出现在整个网络中时,它不是 WAN 带宽问题。
    • 所有客户的情况都一样吗?如果不是,那么可能是某个特定的问题只发生在某些用户身上,因为只有那些用户在运行导致该问题的特定应用。
    • 客户端和服务器之间的通信线路是否加载?加载它们的应用是什么?
    • 是所有应用都运行缓慢,还是只有应用与特定的数据库协同工作?可能是部分 PC 旧了,累了,还是服务器耗尽了资源?
  2. 完成问卷后,让我们开始工作:
    1. 打开 Wireshark 并开始捕获数据包。您可以将端口镜像配置到特定的 PC、服务器、VLAN 或连接到拥有客户端的远程办公室的路由器。
    2. 查看 TCP 事件(专家信息)。它们发生在整个通信链路上、特定的 IP 地址上还是特定的 TCP 端口号上?这将有助于您隔离问题,并检查问题是否出在特定的链路、服务器或应用上。

When measuring traffic on a connection to the internet, you will get many retransmissions and duplicate ACKs to websites, mail servers, and so on. This is the internet. In an organization, you should expect 0.1 to 0.5 percent of retransmissions. When connecting to the internet, you can expect much higher numbers.

  1. 如果您发现网络中存在问题,请按照我们在前面章节中所学的方法解决问题。但是有一些网络问题会影响数据库行为。在下面的例子中,我们看到了一个客户端的行为,它通过一条通信线路与服务器协作,往返延迟为 35 到 40 毫秒。
  2. 我们正在查看编号为 8 ( 1 )的 TCP 流,连接以 TCP SYN/SYN-ACK/ACK 开始。我把这个作为参考( 2 )。我们可以看到整个连接用了 371 个数据包( 3 ):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 连接继续,我们可以看到数据库请求和响应之间的时间间隔大约为 35 毫秒:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 因为我们有 371 个包来回传输,371 x 35 毫秒给了我们大约 13 秒。再加上一些可能发生的重新传输和一些低效率,这会导致用户等待 10 到 15 秒甚至更长时间来执行数据库查询。
  2. 在这种情况下,您应该向 DBA 咨询如何显著减少通过网络传输的数据包的数量,或者您可以采用另一种访问方式,例如终端服务器或 web 访问。
  3. 另一个可能发生的问题是,您将有一个反映在捕获文件中的软件问题。如果你看一下下面的截图,你会看到有五次重新传输,然后从客户端打开一个新的连接。这看起来像是 TCP 问题,但它只出现在软件的特定窗口中。它只是一个停止处理的软件过程,这阻止了 TCP 对客户端的响应:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它是如何工作的…

数据库的工作方式对我来说一直是个奇迹。我们的任务是找出它们是如何影响网络的,这是我们在本节中学到的。

还有更多…

当您右键单击数据库客户端到服务器会话中的一个数据包时,将会打开一个包含对话的窗口。了解网络上运行的内容对 DBA 很有帮助。

当您面临延迟问题时,例如,当通过互联网或国际连接上的蜂窝线路工作时,服务器的数据库客户机并不总是足够有效。您可能需要通过 web 或终端访问数据库。

一个重要的问题是数据库如何工作。如果客户机正在访问数据库服务器,而数据库服务器正在使用从另一个服务器共享的文件,那么客户机-服务器可能工作得很好;但是问题是从数据库服务器到文件服务器上的共享文件。在开始测试之前,请确保您了解所有这些依赖关系。

最重要的是,确保你的朋友中有非常专业的 DBA。总有一天,你会需要它们的!

分析 SNMP

SNMP 是一种众所周知的协议,用于通过定期收集数据和统计信息来监控和管理网络中不同类型的设备。除了监视之外,它还可以用于配置和修改设置,并给予 SNMP 服务器适当的授权。通常支持 SNMP 的设备有交换机、路由器、服务器、工作站、主机、VoIP 电话等等。

要知道 SNMP 有三个版本:SNMPv1、SNMPv2c 和 SNMPv3,这一点很重要。后来出现的 v2c 和 v3 版本提供了更好的性能和安全性。

SNMP 由三个组件组成:

  • 被管理的设备(称为被管理设备)。
  • SNMP 代理。这是一个运行在被管理设备上的软件,它从设备上收集数据并将其存储在一个数据库中,该数据库被称为管理信息库(MIB) 数据库。按照配置,这个 SNMP 代理定期将数据/统计数据导出到服务器(使用 UDP 端口161),以及任何事件和陷阱。
  • SNMP 服务器,也叫网络管理服务器()。这是一个服务器,它与网络中的所有代理进行通信,以收集导出的数据并构建一个中央存储库。SNMP 服务器提供对管理网络的 IT 人员的访问;他们可以远程监控、管理和配置网络。

了解设备中实现的某些 MIB 可能是特定于供应商的,这一点非常重要。几乎所有的供应商都宣传在他们的设备中实现的这些 MIB。 **# 做好准备

一般来说,我们从网络管理团队收到的投诉是关于在特定时间间隔内没有从设备获得任何统计数据或陷阱,或者对设备完全不可见。按照下一节中的说明来分析和解决这些问题。

怎么做…

如果出现 SNMP 问题,请遵循以下步骤。

当您收到关于 SNMP 的投诉时,开始问这些问题:

  1. 这是最近带入网络的新的被管理设备吗?换句话说,设备中的 SNMP 曾经正常工作过吗?
    • 如果这是新设备,请咨询相关设备管理员和/或检查 SNMP 相关配置,如团体字符串。
    • 如果 SNMP 配置看起来正确,请确保 NMS 的 IP 地址配置正确,并检查相关的密码凭据。
    • 如果正在使用支持加密的 SNMP v3,请确保检查与加密相关的设置,如传输方法。
    • 如果设置和配置看起来有效且正确,请确保被管理设备与 NMS 连接,这可以通过简单的 ICMP pings 来验证。
  2. 如果被管理设备工作正常,并且在特定时间内没有报告任何统计数据或警报:
    • 讨论中的设备在控制平面或管理平面中是否有任何问题阻止其导出 SNMP 统计数据?请注意,对于网络中的大多数设备,SNMP 是优先级最低的协议,这意味着如果设备有更高优先级的进程要处理,它会将 SNMP 请求和响应保留在队列中。
    • 该问题是仅出现在特定设备上,还是出现在网络中的多台设备上?
    • 网络(被管理设备和 NMS 之间)是否遇到任何问题?例如,在任何第 2 层生成树聚合期间,受管设备和 SNMP 服务器之间可能会发生流量丢失,NMS 将因此失去对受管设备的可见性。

正如您在下图中看到的,IP 地址为172.18.254.139的 SNMP 服务器正在对 IP 地址为10.81.64.22的工作站执行带有序列GET-NEXT-REQUEST的 SNMP 遍历,该工作站反过来以GET-RESPONSE响应。为简单起见,用于这些捕获的 Wireshark 过滤器是 SNMP。

工作站启用了 SNMP v2c,社区字符串为 public。

让我们讨论一些常见的故障场景。

用错误的 SNMP 版本轮询被管理设备

正如我前面提到的,工作站启用了 v2c,但是当 NMS 用错误的 SNMP 版本轮询设备时,它没有得到任何响应。因此,确保使用正确的 SNMP 版本轮询受管设备非常重要。

用错误的 MIB 对象 ID 轮询被管理设备(OID)

在以下示例中,NMS 正在轮询被管理设备,以获取在接口上发送的字节数。字节计数的 MIB OID 是. 1.3.6.1.2.1.2.2.1.16,即 ifOutOctets。讨论中的被管理设备有两个接口,分别映射到 OID 1 . 3 . 6 . 1 . 2 . 1 . 2 . 1 . 16 . 1 和 1 . 3 . 6 . 1 . 2 . 1 . 2 . 1 . 16 . 2。当 NMS 轮询设备以检查第三个接口(不存在)的统计数据时,它返回一个noSuchInstance错误。

它是如何工作的…

正如您在前面的章节中所了解到的,SNMP 是一个非常简单明了的协议,所有与它相关的标准和 MIB OIDs 信息都可以在互联网上找到。

还有更多…

以下是一些关于 SNMP 和 MIB OIDs 的有用信息的网站:

十七、SIP、多媒体和 IP 电话故障排除

在本章中,您将了解:

  • IP 电话原理和正常操作
  • SIP 操作原理、消息和错误代码
  • 基于 IP 和 RTSP 的视频
  • Wireshark 的 RTP 流分析和过滤功能
  • Wireshark 的 VoIP 通话重播功能

介绍

为了传输语音、视频或多媒体,我们需要执行两个功能。第一个是承载媒体流,主要是语音或视频,第二个是用于信令,即建立和终止呼叫,邀请参与者加入呼叫,等等。多年来,为信令提出了两个协议组:

  • ITU-T 协议集,包括作为该协议集的伞式协议的 H.323、用于注册和地址解析的 H.225、用于控制的 H.245 以及其他一些协议
  • IETF 协议套件,包括作为信令协议的 SIP(RFC 3261 和后来的更新)和描述会话参数的会话描述协议(SDP)(RFC 4566)

ITU-T 协议集在过去几年中逐步淘汰,今天的大多数应用都在使用 IETF 协议集,我们将在本章重点介绍 IETF 协议集。在下图中,您可以看到 IETF 协议套件的结构。

对于流传输,两个套件都使用 RTP 和 RTCP (RFC 3550 和更新版本)。RTP 用于媒体传输,RTCP 用于控制流的质量。

在基于 IP 的网络上传输多媒体会话有几种协议,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在本章中,我们将讨论不同的协议以及如何使用 Wireshark 分析音频和视频流。

IP 电话原理和正常操作

IP 电话是将模拟语音呼叫转换成 IP 数据包并在 IP 网络上传输的概念。SIP 等呼叫信令协议将用于建立端点之间的呼叫会话,然后利用实时传输协议 ( RTP )作为应用层协议,通过 IP 网络传输媒体流。音频(或视频)数据包将与 RTP 报头封装在一起,通常在 UDP 上运行。

在本菜谱中,我们将了解 IP 电话的正常运行,以及如何通过基于 Wireshark 的捕获分析将 RTP 和 RTCP 用于端到端音频流。

做好准备

由于 IP 电话将模拟呼叫转换为数字呼叫,因此只能在 IP 部分进行捕获。Wireshark 不能帮助捕获网络模拟部分的任何信号。

怎么做…

RTP 操作

打开 Wireshark capture 并使用 Telephony 菜单导航至 RTP | RTP Streams,如以下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择前面的选项将在新的弹出窗口中列出所有 RTP 流,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每个 RTP 流将以下列格式列出:

  • 源地址:RTP 流端点的源 IP 地址。这可以是 IP 电话或电话会议单元。
  • 源端口:UDP 头的源端口。会话发起者使用本地唯一的随机端口作为源端口。
  • 目标地址:RTP 流端点的目标 IP 地址。
  • 目的端口:UDP 报头的目的端口。会话发起者使用 RTP 端口范围中的一个端口作为目的端口。RTP 使用多种 UDP 端口来支持并发呼叫。端口范围从 16384 到 32767。
  • SSRC:同步源,这是一个 RTP 流标识符。
  • Payload:定义用于流的编解码器类型的 RTP 有效负载。
  • 附加流数据:附加细节,包括为每个流捕获的数据包数量、丢失的数据包、抖动/延迟细节等。

从弹出窗口中选择相关的流或使用跟随流选项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这些解释如下:

  • 这是一个 RTP 数据包的屏幕截图。Wireshark 将突出显示设置此 RTP 数据包的信令协议的数据包编号。
  • RTP 包的有效载荷字段将描述所使用的音频编解码器。在前面的数据包中,G711 用作音频编解码器。
  • 每个 RTP 分组将包括一个序列号,对于每个后续分组,该序列号将依次递增 1。
  • RTP 数据包还携带来自端点的时间戳。
  • 序列号和时间戳用于衡量服务质量。

RTCP 行动

获取 RTP 呼叫流的 UDP 端口号,并将其递增 1,并使用该端口号过滤相关的 RTCP 数据包。例如,如果 UDP 端口是用于 RTP 数据包的24950,则 UDP 端口24951将用于 RTCP 数据包。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面的屏幕截图是端点14.50.201.48172.18.110.203之间使用 UDP 端口23978的一个 RTP 流的截图。与该 RTP 流相关联的 SSRC 是0x252eb528。通过使用 UDP 端口23979,我们可以识别该流的相关 RTCP 数据包:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的截图中,发送者 SSRC 将匹配 RTP 包的 SSRC(0x252eb528)。发送者报告是一种 RCTP 消息,携带 RTP 流的遥测细节。确保以下事项:

  • 损失分数:这是零或完全在公差范围内。此计数器显示在当前和上一个发送者报告之间丢失的 RTP 数据包的数量。
  • 累计丢包数:为零或在容许范围内。此计数器显示在此会话中丢失的 RTP 数据包的总数。
  • 到达间隔抖动:这完全在**的范围内。**该计数器显示接收数据包的抖动测量值。

前面计数器中的任何问题都可能会指出端到端呼叫流程中的问题。关于 RTCP 的使用以及它如何帮助反馈循环的更多细节在*它如何工作中解释…*一节。

它是如何工作的…

IP 电话大量利用 RTP 和 RTCP 实现端到端呼叫流。RTP 是用于在端点之间传输媒体流(音频和视频)的应用层协议。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RTP 操作原理

RTP 用于承载媒体。在 RTP 之前,我们有各种类型的语音和视频压缩编解码器。以下是 RTP 数据包的样本数据包格式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RTP 报头携带特定于流和方向的细节,可用于会话识别、弹性和实时抖动/延迟测量。RTP 提供了定时恢复、丢失检测和纠正、有效载荷和源识别以及媒体同步的机制。

RTP 使用 UDP 作为传输层协议。在下图中,您可以看到 RTP 数据包结构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

标题中的字段如下:

  • 版本(V) :该字段表示 RTP 版本
  • 填充§ :该字段指示数据包在末尾包含一个或多个不属于有效载荷的附加填充字节
  • 扩展位(X) :该字段指示标准报头之后的固定报头
  • CSRC 计数(CC) :该字段包含固定报头之后的 CSRC 字段的数量
  • 标记(M) :该字段用于指示应用事件,例如视频帧边界
  • 有效载荷类型:该字段标识由接收应用解释的 RTP 有效载荷的格式
  • 序列号:每发送一个 RTP 包,该字段加 1。由接收器用来检测数据包丢失
  • 时间戳:该字段反映 RTP 数据流中八位字节的采样率
  • 同步源(SSRC) :该字段是随机选择的流标识符,使得同一 RTP 会话中没有两个同步源具有相同的 SSRC 标识符
  • 贡献源标识符列表(CSRC) :该字段标识包含在该分组中的有效载荷的贡献源(即,流源)

在下图中,您可以看到序列和时间戳机制是如何工作的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我们在图中看到的,每发送一个 RTP 数据包,序列号就增加一,而时间戳则增加一个数据包所覆盖的时间。例如,分组号 1 将两者都设置为 1;分组 2 将具有序列号 2 和时间戳 12;并且对于其他分组以这种方式继续。接收器将接收告诉他分组顺序的序列号和告诉他分组离开接收器的时间的时间戳。接收器将使用这两者来回放接收到的数据。

RTCP 操作原理

RTCP 指定在会话的源和目标之间交换的报告。

RTCP 与 RTP 协同工作,端点使用它来监控 RTP 数据包的端到端质量,并通过以报告形式交换信息来控制传输。对于每个 RTP 流,将有一个 RTCP 流用于交换关于 RTP 流的不同报告。报告包含发送的 RTP-PDU 数量、丢失的 RTP-PDU 数量、到达间隔抖动等统计信息。应用可以使用这些报告来修改发送方的传输速率并用于诊断目的。

RTCP 有几种报告类型,发送方和接收方根据发送和接收的数据相互更新。以下是几种 RTCP 数据包类型:

  • 发件人报告(类型 200)
  • 接收方报告(201 型)
  • 源描述(类型 202)
  • 再见(203 型)
  • 特定应用(204 型)

RFC 3550 中提供了每种类型的详细描述。在下面的屏幕截图中,您可以看到一个这样的例子,其中我们看到一个发送者报告,它告诉接收者发送了多少个数据包和八位字节、时间戳信息以及接收者可以使用的其他参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SIP 操作原理、消息和错误代码

会话发起协议或 SIP (RFC 3261 和各种扩展)是在应用层操作的信令和控制协议,负责创建、修改和终止一个或多个参与者之间的多媒体会话。当发送 SIP 请求时,会话参数通过 SDP (SDP,RFC 4566)发送,这使得用户能够在它们之间就一组兼容的媒体类型达成一致。当会话被创建时,语音或视频由 RTP 传送,并且可选地由 RTCP 控制。

SIP 将端点定义为用户代理 ( UAs ),并且创建会话的过程包括 UA 协商,以便就他们想要创建的会话的特征达成一致。对于诸如定位会话参与者、注册、呼叫转移等附加服务,SIP 定义了称为服务器的网络主机,UAs 可以向其发送注册、发送会话邀请以及其他请求。

在本菜谱中,我们将讨论协议集的信令部分,即 SIP,以及如何使用 Wireshark 来验证 SIP 的正常运行。

做好准备

为了建立端到端的呼叫流,可以在不同的 SIP 端点之间创建 SIP 会话。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更好的方法是在多个会话共用的交换机或路由器中执行 Wireshark 捕获。在前面的拓扑中,我们在172.18.110.203上执行捕获,因为它是两个 SIP 会话的终止节点。

怎么做…

  1. 打开 Wireshark capture 并使用 Telephony 菜单导航 SIP 流,如以下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. SIP 流选项将在一个新的弹出窗口中列出数据包捕获中的所有 SIP 流。SIP 统计将列出所有 SIP 消息和数据包捕获中的计数。以下是列出捕获中 SIP 流的弹出窗口的屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 前面的屏幕截图显示有两个 SIP 流。连接到 SIP 号码为4085267260的 UA 的 IP 地址为172.18.110.200的多维数据集或 CCM 正在向主机名为cube1.entcomp1.com的多维数据集发起 SIP 会话。
  2. 使用显示过滤器跟踪 SIP 数据包的相关 TCP 流,并通过导航到 Statistics | Flow Graph 获得 SIP 流的流图。
  3. 启用“限制显示过滤器”选项,以限制仅用于 SIP 流的流图。这将列出 SIP 端点之间交换的所有 SIP 消息,作为便于分析的图表。
  4. 虽然遵循 TCP 流只会列出特定的 SIP 会话,但是本地 UUID 可以用作过滤器。它将过滤与本地 UUID 关联的所有 SIP 会话。当端点(在这种情况下是 IP 电话)触发第一个 SIP 会话时,它包括它自己的 ID 作为本地 UUID,这将在沿着通向远程端点的路径的所有后续 SIP 会话中被携带。在我们的例子中,IP 电话 1 的本地 UUID 是025ac8cd-0010-5000-a000-acbc3296f7dd

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 前面的屏幕截图列出了与过滤器中提到的本地 UUID 相关联的所有 SIP 会话。如您所见,有两个 SIP 会话:

    • 172.18.110.200172.18.110.203的会话
    • 172.18.110.203172.18.110.206的会话
  2. 通过导航流图并将其限制为显示,我们可以在捕获中看到每个 SIP 会话中交换的 SIP 消息。以下是我们拓扑中 SIP 会话的示例图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它是如何工作的…

  1. 当 UA 希望建立多媒体会话时,它向远程 UA 发送INVITE方法。在下图中,您可以看到一个基本呼叫流程的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传An end device in SIP is called UA. A user agent can initiate or receive a call. A UA can be an IP phone, video camera, software client, or any device or software that participates in an SIP session.

  1. INVITE之后,您应该会看到来自另一端的尝试、会话进度、响铃或它们的组合

  2. 我们可以看到 172.18.110.200 上的发起方和 172.18.110.203 上的响应方之间的会话进度:

    • 从会话发起者发送 INVITE 方法。这将始终是开始对话的第一个数据包。
    • 响应者以正在尝试(代码 100)、会话进度(代码 183)和三秒后响铃(代码 180)来回答。然后它回答 OK(代码 200),这意味着听筒被拿起。
  3. 在前面的拓扑中,中间有多个立方体帮助建立端到端的呼叫流

  4. 左侧的立方体或交换机172.18.110.200向交换机172.18.110.203发送邀请请求

  5. 交换机172.18.110.203回复 SIP 尝试消息。

  6. 交换机向右侧的立方体或交换机172.18.110.206发送邀请。

  7. 交换机172.18.110.206发送 Trying(代码 100),然后会话进行到交换机(代码 183)。

  8. 172.18.110.203接收到来自172.18.110.206振铃时,依次发送振铃消息给172.18.110.200

  9. 当呼叫被应答时,目的地端点在172.18.110.206向通信管理器发送 SIP 200 OK。SIP 200 OK 消息在消息体中携带 SDP 内容。SDP 提供有关 RTP UDP 端口号的信息,并列出由目的地端点提供的音频和视频编解码器(也称为 SDP 提供)。SIP 200 OK 消息穿过 SBC ( 172.18.110.203)、通信管理器(172.18.110.200)并到达发起端点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在前面的示例截图中,SDP 消息指示将 UDP 端口25944用于 RTP 音频流。此外,它还包括支持的编解码器等其他详细信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 发起端点选择音频代码之一,并在 SIP ACK 中向其通信管理器发送所选择的编解码器及其 RTP 端口号信息(也称为 SDP 应答)(172.18.110.200)。这个SIP ACK消息穿过 SBC ( 172.18.110.203)、通信管理器(172.18.110.206)并到达目的地端点。收到 ACK 后,目的地端点开始在端口8260发送 RTP 数据包。它还将在端口25944接收 RTP 数据包。
  2. 当用户挂断呼叫时,SIP BYE 消息将在 SIP 设备之间交换,以终止呼叫信令会话。
  3. 如果在任何阶段收到错误消息,将不会建立连接。

不要忘了 SIP 工作在 UDP 之上。由于在发送请求之前,UDP 不会打开与另一端的任何连接,因此有可能只是因为网络可达性问题而导致请求无法到达目的地。因此,当您没有得到响应时,可能是因为网络问题,邀请没有到达目的地。

下表列出了 SIP 错误代码及其可能的原因。除非另有说明,这些代码在 RFC 3261 中定义。

1xx 代码-临时/信息

1xx 代码或临时/信息代码是接收到的请求仍在处理中的代码,接收方通知发送方。下表对它们进行了详细描述:

| 代码 | 事件名称 | 原因 |
| 100 | 令人厌烦的 | 服务器已经收到并接受了该请求,并且正在为此调用采取措施。 |
| 180 | 铃声 | 接收呼叫的 UA 正在提醒终端用户。这是在执行此操作时发送回客户端的消息。 |
| 181 | 呼叫转移 | 呼叫正被转接到另一个目的地。 |
| 182 | 排队 | 被叫方暂时不可用,服务器保存该消息以供以后发送。 |
| 183 | 会话进度 | 接收服务器正在处理该会话。关于呼叫进度的附加细节可以在消息头中传达。 |

2xx 代码–成功

2xx 代码或成功代码表示该操作已被成功接收、理解和接受。下表对它们进行了详细描述:

| 代码 | 事件名称 | 原因 |
| 200 | 好的 | 请求已被接受、处理并成功 |
| 202 | 可接受的 | 请求已被接受进行处理,但其处理尚未完成(RFC 3265) |

3xx 代码–重定向

3xx 代码表示需要采取重定向操作来完成请求。这里对它们进行了详细描述:

| 代码 | 事件名称 | 原因 |
| 300 | 多选 | 请求中的地址被解析为几个选项,接受服务器可以将其转发给其中一个选项。UA 可以使用 contact 头字段中的地址进行自动重定向,或者在重定向消息之前与发送者确认。 |
| 301 | 永久移动 | 无法在请求 URI 中的地址找到用户,发出请求的客户端应该尝试联系头字段中提供的地址。发送方应使用该更改更新其本地目录。 |
| 302 | 临时移动 | 请求客户端应该在联系报头字段中提供的新地址重试请求。 |
| 305 | 使用代理 | 请求的资源必须通过代理访问,代理的地址由 contact 字段给出。 |
| 380 | 替代役 | 呼叫未成功,因此接收方发送此响应,以便在接收方提供替代服务。这些服务在消息体中描述。 |

4xx 代码–客户端错误

4xx 代码或客户端错误表示请求包含错误的语法,或者无法在此服务器上实现。下表对它们进行了描述:

| 代码 | 事件名称 | 原因 |
| 400 | 错误的请求 | 由于语法错误,无法处理请求。 |
| 401 | 未经授权的 | 收到的请求需要用户身份验证。通常客户端会向用户索要。 |
| 402 | 要求付款 | 这是留作将来使用的。 |
| 403 | 被禁止的 | 服务器理解该请求,但拒绝执行。客户不应再次尝试。 |
| 404 | 未发现 | 服务器通知客户端用户不存在于请求 URI 中指定的域中。 |
| 405 | 不允许的方法 | 客户端发送的方法不允许被它使用。响应将包括一个allow头字段,通知发送者他可以使用哪些方法。 |
| 406 | 不可接受 | 根据请求中发送的accept报头字段,请求所标识的资源只能生成具有不可接受的内容特征的响应实体。 |
| 407 | 需要代理验证 | 客户端必须通过代理服务器的身份验证。 |
| 408 | 请求超时 | 服务器无法在预期时间内响应。过一会儿,客户端可能会再次发送请求。 |
| 410 | 过去的 | 请求的资源在服务器上不再可用,并且转发地址未知。这种情况被认为是永久性的。 |
| 413 | 请求实体太大 | 服务器拒绝处理请求,因为请求实体的主体大于服务器能够或愿意处理的范围。 |
| 414 | 请求-URI 太长 | 服务器拒绝为该请求提供服务,因为请求 URI 超过了服务器能够或愿意解释的长度。 |
| 415 | 不支持的媒体类型 | 服务器拒绝处理该请求,因为服务器不支持该请求的邮件正文格式。 |
| 416 | 不支持的 URI 方案 | 服务器不知道请求 URI,因此服务器无法处理该请求。 |
| 420 | 错误的扩展名 | 服务器不理解从客户端收到的协议扩展。 |
| 421 | 需要扩展 | 接收请求的 UA 需要一个特定的扩展来处理它,但是这个扩展没有在请求的 supported 报头字段中列出。 |
| 423 | 间隔太短 | 服务器拒绝该请求,因为该请求刷新的资源的过期时间太短。 |
| 424 | 错误的位置信息 | 此响应代码表示由于其位置内容而拒绝请求。这表示位置信息不正确或不令人满意(RFC6442)。 |
| 428 | 使用标识头 | 当验证者接收到缺少身份报头的 SIP 请求时,发送该消息,以指示该请求应该使用身份报头重新发送(RFC4474)。 |
| 429 | 提供推荐人身份 | 这提供了引用者身份(RFC3892)。 |
| 433 | 不允许匿名 | 这表明服务器拒绝满足请求,因为请求者是匿名的(RFC5079)。 |
| 436 | 错误的身份信息 | 当 Identity-Info 标头(RFC4474)中有错误信息时,会使用此响应。 |
| 437 | 不支持的证书 | 当验证者无法验证 Identity-Info 标头(RFC4474)中的 URI 所引用的证书时,将使用此选项。 |
| 438 | 无效的身份标头 | 当验证者(接收者 UA)接收到具有与验证者计算的摘要串不对应的身份签名的消息时,使用这种方法(RFC4474)。 |
| 470 | 需要同意 | 这是对包含 URI 列表的请求的响应,该列表中至少有一个 URI 是这样的,即中继没有访问权限(RFC5360)。 |
| 480 | 暂时不可用 | 已成功联系呼叫者的终端系统,但呼叫者当前不可用。 |
| 481 | 呼叫/交易不存在 | 接收 UA 接收到与任何现有事务或对话都不匹配的请求。 |
| 482 | 检测到环路 | 服务器检测到一个循环。 |
| 483 | 啤酒花太多 | 服务器收到一个包含等于零的 Max-Forwards 标头字段的请求。 |
| 484 | 地址不完整 | 服务器收到一个不完整的请求-URI。 |
| 485 | 引起歧义的 | 这个请求——URI 不清楚。响应可以在联系人报头字段中包含可能地址的列表。 |
| 486 | 这里很忙 | 已成功联系呼叫者的终端系统,但呼叫者当前无法或不愿意通过此终端系统接听其他呼叫。 |
| 487 | 请求终止 | 请求被 BYE 或 CANCEL 请求终止。 |
| 488 | 这里不接受 | URI 不接受请求中提到的具体资源。 |
| 491 | 请求待定 | 接收 UA 有一个待定请求。 |
| 493 | 无法解码的 | 请求包含加密的 MIME 正文,收件人无法解密。 |

5xx 代码–服务器错误

5xx 代码或服务器错误代码表示服务器无法满足明显有效的请求。下表对它们进行了详细描述:

| 代码 | 事件名称 | 原因 |
| 500 | 服务器内部错误 | 意外情况导致服务器无法完成请求 |
| 501 | 未实施 | 服务器不支持请求实现该请求的功能 |
| 502 | 错误网关 | 尝试完成请求时,网关或代理从其访问的下游服务器收到无效响应 |
| 503 | 服务不可用 | 由于服务器临时过载或维护,服务器暂时无法处理请求 |
| 504 | 服务器超时 | 处理请求的服务器已将请求发送到另一台服务器进行处理,但响应没有按时到达 |
| 505 | 不支持的版本 | 服务器不支持请求中使用的 SIP 协议版本 |
| 513 | 消息太大 | 由于消息太长,服务器无法处理该请求 |

6xx 代码–全局故障

6xx 代码或全局失败代码表示该请求无法在任何服务器上实现。下表对它们进行了详细描述:

| 代码 | 事件名称 | 原因 |
| 600 | 到处都很忙 | 已成功联系接收方的终端系统,但用户正忙,此时不想接听电话 |
| 603 | 下降 | 已成功联系接收 UA,但用户明确不希望或不能参与 |
| 604 | 不存在于任何地方 | 服务器拥有用户在请求 URI 中指明的权威信息,而这些信息在任何地方都不存在 |
| 606 | 不可接受 | 已成功联系用户,但 SDP 描述的会话描述的某些方面不可接受 |

基于 IP 和 RTSP 的视频

根据互联网协会发布的互联网报告,全球消费者互联网流量的 70%以上是 IP 视频流量。在娱乐和教育领域,视频内容非常普遍,并通过使用 IP 作为视频内容传输的传输媒体来利用 IP 网络的成熟度。各种编解码器用于将视频内容编码为比特流,并使用 RTP 作为端到端视频数据传输的传输协议。

视频流量可以是视频流,也可以是一对一的视频呼叫。尽管在任一情况下,RTP 被用作视频数据分组的协议,但是不同的控制平面信令协议可以用于建立视频呼叫会话。例如:

  • SIP 可以用作视频通话的信令协议
  • RTSP 可以用作流式视频的信令协议。

在本菜谱中,我们将讨论这两个选项,并了解如何使用 Wireshark 来分析正常操作。

做好准备

捕获数据包的端口镜像可以在客户端或服务器端完成。将 Wireshark 连接到端点附近,并捕获数据包进行分析。

怎么做…

SIP 信令协议:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当 SIP 用作信令协议时,端点和路径上的任何多维数据集或 SIP 代理之间交换的消息与*中解释的完全相同…*SIP 操作原理、消息和错误代码部分。启用视频通话时,端点之间交换的其他详细信息如下:

  1. 当端点能够进行视频呼叫时,SDP 消息不仅携带音频流的 RTP 信息,还携带视频流的 RTP 信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在前面的屏幕截图中,可以观察到 SDP 消息携带音频和视频流的媒体描述细节。它还标志着使用 H.264 作为视频编解码器。

  2. SDP 消息指示将 UDP 端口23978用于音频流,将 UDP 端口30290用于视频流。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 收到 SDP 消息后,视频端点将使用 UDP 端口30290传输 RTP 视频流。如前面的截图所示,H.264 编解码器用于视频有效载荷编码。

实时流协议:

像 SIP 消息一样,RTSP 也使用 SDP 消息来指示 RTP 音频/视频流信息。

  1. 打开 Wireshark 捕获,使用 rtsp 作为显示过滤器过滤 RTSP 数据包。
  2. 导航到统计流量图选项,获得 RTSP 流量图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 流程图将列出客户端和媒体服务器之间交换的 RTSP 消息。在前面的截图中,客户端10.83.218.91184.72.239.149建立了 RSTP 会话。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 导航到电话和 RTSP 和数据包计数器,列出收到的不同 RTSP 消息。
  2. 关于 RSTP 正常运行的更多细节可以在*它是如何工作的…*一节。

它是如何工作的…

实时流协议:

如同 SIP(其用于信令,而 RTP 用于媒体的传输),由 RTSP 控制的流可以使用任何传输协议;在许多情况下,他们也使用 RTP。该协议有意在语法和操作上与 HTTP 相似,并使用相同的语法。

最常见的 RTSP 方法(命令)是(C-Client,S-Server)。

| 命令 | 方向 | 功能 |
| OPTIONS | C 到 S 或 S 到 C | 确定服务器/客户端的功能 |
| DESCRIBE | c 到 S | 获取媒体流的描述 |
| GET_PARAMETERS | c 到 S | 检索 URI 中参数的值 |
| ANNOUNCE | C 到 S 或 S 到 C | 宣布新会话的描述 |
| SETUP | c 到 S | 创建媒体会话 |
| PLAY | c 到 S | 开始媒体传送 |
| RECORD | c 到 S | 开始媒体录制 |
| PAUSE | c 到 S | 暂停媒体传送 |
| REDIRECT | 从 s 到 C | 重定向到另一台服务器 |
| TEARDOWN | 从 s 到 C | 执行立即拆卸 |

响应类别包括:

| 代码系列 | 类型 | 意为 |
| 1xx | 报告的 | 收到请求,继续处理 |
| 2xx | 成功 | 该操作已被成功接收、理解和接受 |
| 3xx | 重寄 | 必须采取进一步的措施来完成请求 |
| 4xx | 客户端错误 | 请求包含错误的语法或无法实现 |
| 5xx | 服务器错误 | 服务器未能满足一个明显有效的请求 |

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 客户端10.83.218.91将通过 TCP 端口554建立一个 RTSP 会话。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 建立会话后,客户端发送一条 RTSP 请求消息,其中包含选项方法和请求的资源。在前面的截图中,请求的资源是来自184.72.239.149mp4:BigBuckBunny_175k.mov

  2. 服务器回复 RTSP 200 OK。RTSP 响应消息也用于携带能力。响应将携带来自请求消息的 CSeq 号。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 客户端现在发送 RTSP 请求消息,该消息带有 URI 中资源的 DESCRIBE 方法。这用于从服务器检索内容描述或媒体对象。对于每个后续的请求消息,CSeq 号增加 1。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 服务器将回复 RTSP 200 OK。该响应将携带具有会话和内容相关信息的 SDP。SDP 指示对 RTP 音频流使用动态 RTP 类型 96,对 RTP 视频流使用动态 RTP 类型 97。
  2. 与使用 SDP 交换 RTP 端口信息的 SIP 会话不同,RTSP 使用 SETUP 方法来实现此目的。客户端将使用 SETUP 方法发送请求消息,并携带用于 RTP 音频流的 UDP 端口。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在前面的屏幕截图中,客户端表示 UDP 端口50960被分配给 RTP 音频流,而50961被分配给 RTCP 流量。
  2. 使用SETUP方法的类似请求也将被交换为 RTP 视频流。
  3. 从服务器接收到 RTSP 200 OK 后,它将发送其他方法(如播放)来启动音频/视频流。

还有更多…

RFC 7826 提出了 RTSP v 2.0;它取代了 RFC 2326 中定义的 RTSP 1.0 版。

用于 RTP 流分析和过滤的 Wireshark 功能

Wireshark 具有各种内置功能,在分析 RTP 音频和视频流时非常有用。在本菜谱中,我们将讨论其功能以及如何使用它进行故障排除。

做好准备

当特定客户端出现问题时,使用端口镜像将 Wireshark 连接到客户端端口。当所有客户端都出现问题时,请将 Wireshark 连接到连接所有客户端的公共交换机。

怎么做…

  1. 打开 Wireshark capture 并使用 Telephony 菜单导航至 RTP | RTP Streams ,如以下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 这将导致一个弹出窗口,列出捕获中可用的所有 RTP 流。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 选择要分析的相关流,并使用查找反向来识别端点之间反向的 RTP 流。

  2. 使用准备过滤器过滤所有正向和反向的 RTP 数据包。或者,使用分析来分析正向和反向 RTP 流。点击分析将弹出一个新窗口,显示正向和反向指标。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 不同的选项卡列出了与正向和反向 RTP 流相关的指标。如前面的屏幕截图所示,将对 RTP 流进行分析,以列出正向和反向流的抖动、延迟和数据包丢失…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 前面的屏幕截图是特定 RTP 流的示例图,突出显示了流的正向和反向抖动。

它是如何工作的…

不考虑所使用的呼叫信令协议,大多数当前的音频和视频流使用 RTP 作为应用层协议。RTP 协议通过在应用层对数据包进行排序来提供可靠性,并通过在每个 RTP 数据包中以小块形式转发音频和视频有效负载来帮助控制抖动和延迟。

本章的 IP 电话原理和正常操作部分提供了关于 RTP 流如何工作的更多详细信息。

用于 VoIP 呼叫重放的 Wireshark 功能

Wireshark 增加了音频回放功能,可以对 RTP 音频流进行编码并播放实际的音频内容。播放流用于此目的。该选项合并来自正向和反向的音频流,并允许用户收听实际的对话。

做好准备

当特定客户端出现问题时,使用端口镜像将 Wireshark 连接到客户端端口。当所有客户端都出现问题时,请将 Wireshark 连接到连接所有客户端的公共交换机。

怎么做…

  1. 打开 Wireshark capture 并使用 Telephony 菜单导航至 RTP | RTP Streams,如以下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 选择相关的 RTP 音频流和相关的反向流。现在使用分析来合并来自两个方向的流。这将弹出一个不同的窗口,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 使用播放流并收听实际的音频内容。
  2. Wireshark RTP 播放不适用于 RTP 视频流。因此它不能用于观看视频内容。

它是如何工作的…

Wireshark 解释用于编码音频流的音频编解码器,并利用该编解码器解码音频文件内容。Wireshark 将使用 G711 编解码器将 RTP 音频流保存为一种.au文件格式,允许我们回放捕获的对话。

还有更多…

目前,Wireshark 原生支持使用 G711 编解码器播放 RTP 音频流。如果用于音频流的编解码器是 G729,则不会播放。使用以下程序转换 G729:https://wiki.wireshark.org/HowToDecodeG729

十八、带宽和延迟问题故障排除

在本章中,您将了解:

  • 测量网络带宽和应用流量
  • 使用 Wireshark 测量抖动和延迟
  • 分析网络瓶颈、问题和故障排除

介绍

端到端服务和应用的性能在很大程度上取决于各种网络参数,如带宽、延迟、抖动和丢包。不同类型的终端应用有不同的 SLA 约束。例如,文件传输应用(FTP、TFTP)等涉及大量文件交换的应用对带宽和数据包丢失非常敏感,而另一方面,语音和视频流量等媒体应用对延迟和抖动非常敏感。

衡量终端应用的性能因终端应用的 SLA 限制而异,因此我们需要衡量不同的网络参数。

在本章中,我们将学习如何测量这些网络参数,如何检查由这些参数引起的网络问题,以及如何尽可能地解决这些问题。

测量网络带宽和应用流量

网络运营商的主要职责之一是监控网络和带宽利用率。这可能出于各种商业目的,例如:

  • 确保低优先级或清道夫流量不会阻塞网络,使关键业务流量受损
  • 确保 WAN 提供商能够在接入电路上提供承诺的流量速率
  • 使用容量规划的结果来升级或降级带宽

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 19.1:广域网拓扑

在我们到目前为止讨论的大多数故障排除和分析方法中,数据捕获将在尽可能靠近应用端点的地方进行。为了测量 WAN 电路利用率,我们可能需要额外的考虑来精确测量带宽。在前面的拓扑中, WAN-Router1 可以通过 1 Gbps 接口连接到 WAN 提供商,但是承诺的访问速率 ( 汽车)可以低得多(例如 10 Mbps)。通常,WAN 提供商会在入站方向启用流量速率限制,将流量限制在 10 Mbps,并丢弃任何过量的流量。因此,在 WAN-Router1 端执行数据包捕获可能不准确。另一方面,客户可能会实施流量整形等功能,使他们能够缓冲流量,并确保从 WAN 路由器到提供商的出站流量不会超过 CAR。因此,根据网络的部署方式,需要在适当的位置捕获数据包。

在本菜谱中,我们将讨论如何使用 Wireshark 来测量 WAN 电路带宽并分析不同的应用流量利用率。

做好准备

根据网络的部署方式,我们可能需要在相关位置识别和放置数据包捕获工具:

  • 如果启用了流量整形,我们可以在 WAN 路由器上捕获出站方向的数据包
  • 如果没有启用流量整形,我们可以在 WAN 提供商或远程 WAN 路由器上捕获入站方向的数据包

怎么做…

要测量 WAN 电路的带宽,我们可能需要以接近带宽的速率抽取一些流量,以测试电路是否能够承受。有不同的流量生成器工具可用,如 iPerf、IXIA 和 Spirent,可用于抽取不同类型的流量。其他开源流量生成器,如 Scapy、tcpreplay 或 playcap 也可以用来生成流量。

要确定平均带宽利用率,请执行以下步骤:

  1. 从统计数据中选择摘要:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输出将列出捕获的数据包数量,Avg。兆比特/秒,平均。数据包大小等等。

  1. 它还允许我们通过使用过滤器来查看特定流或一组流的摘要。要获取选择性流的摘要,请使用显示过滤器过滤流,然后使用统计|摘要:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上是特定 TCP 流的输出示例。

  1. 使用 I/O 图可以更详细地了解电路的最大可用带宽。从统计中,选择 IO 图形:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 默认情况下,图表将显示所有捕获的数据包的整体性能。X 轴和 Y 轴可以修改:

    • X 轴定义了刻度间隔,即 Y 轴将被测量的间隔。此间隔的粒度可以设置为 10 分钟到 1 毫秒。
    • Y 轴定义了衡量绩效的单位。这种度量被称为每个节拍(X 轴)中的包数、字节数或位数。
    • 在前面的示例中,X 轴设置为 1 秒的刻度间隔,Y 轴设置为字节/刻度。所以测量值是字节/秒。
    • 选择 View as time of day 选项将列出捕获数据包的实际时间。这是一个非常有用的工具,可以确定在图中观察到流量峰值的实际时间。
  2. 可以创建多个图表,列出不同的流,以根据流确定带宽利用率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面是一个示例输出,不同的流有不同的图形。

  1. 为了识别消耗大部分带宽的终端用户或应用,可以列出排名靠前的通话端点。从统计,转到端点:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这将根据发送和接收的数据包/字节数列出所有端点。它有助于识别顶级通话端点。

  1. 使用 conversation statistics 选项可以看到精确的特定于流的细节。从统计数据转到对话:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面的屏幕截图显示了特定于流的对话、流的持续时间、交换的数据包数量等等。

它是如何工作的…

网络流量利用率有三种不同的定义,区分它们对于理解网络带宽利用率至关重要:

  • 速度:可以穿越电路或链路的最大流量。
  • 带宽:允许通过链路的最大流量(比特/秒)。默认情况下,带宽将等于链接的速度。
  • 吞吐量:在应用端点之间传输的有效终端应用流量(比特/秒)。

链路速度(以及带宽)因各种因素而异,包括链路类型、提供商提供的 CAR 以及本地配置。默认情况下,大多数网络设备能够以线路速率转发流量,这是相应链路上支持的最大带宽。

在最近的部署中,人们普遍将千兆以太网视为从 WAN 路由器到服务提供商的最后一英里接入连接。千兆以太网的速度将为 1 Gbps,但带宽可能会因服务提供商提供的汽车而异。

即使 WAN 路由器能够以链路的线路速率发送流量,服务提供商也要确保流量不会超过汽车。

还有更多…

任何网络设备都会使用先进先出 ( FIFO )排队机制将流量转发出电路。因此,如果清道夫流量过多,这种低优先级流量可能会消耗所有带宽,导致关键业务流量受损。这可以通过在网络中部署服务质量 ( QoS )来避免。QoS 将排队机制从 FIFO 改为基于优先级的排队,防止清道夫或低优先级流量消耗所有带宽,从而确保关键业务流量始终优先。

使用 Wireshark 测量抖动和延迟

抖动和延迟是能够显著影响各种网络应用的特征。要监控通信线路的抖动和延迟,您可以使用简单或图形化的 ping 工具来显示线路特性。另一方面,Wireshark 不测量端到端延迟,而是测量它对网络流量的影响、帧间延迟以及它对应用的影响。

在本菜谱中,我们将看到如何使用 Wireshark 工具来监控这些参数,在下一个菜谱中,我们将看到如何找出由参数引起的问题。

做好准备

要监控通信线路上的延迟,首先使用ping命令来感受线路,然后将端口镜像配置到您想要监控的端口。

怎么做…

要监控帧间延迟,请遵循以下步骤:

  1. 从统计中,选择 IO 图形。

  2. 要监控特定数据流中帧之间的时间,请按照下列步骤操作:

    1. 单击 TCP 或 UDP 流中的数据包
    2. 点击跟随 TCP 流或跟随 UDP 流
    3. 复制显示的过滤器字符串(在下面的屏幕截图中编号为 1)
  3. 从统计数据中,打开 IO 图。

  4. 在 IO 图形的 Y 轴部分(窗口的右下角),选择高级…(以下截图中编号为 2 )。

  5. 将 TCP 流编号(下图中编号为 1 )复制到 I/O 图中的过滤器窗口(下图中编号为 3 ):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 选择 AVG(*)(在前面的截图中编号为 4 )。
  2. 配置过滤器frame.time_delta_displayed(在前面的截图中编号为 5 )。
  3. 在图表中(在前面的截图中编号为 6 ,您可以看到帧之间的时间,单位为毫秒。
  4. 通过导航到统计数据| TCP 流图|往返时间图,您将获得相同的结果,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 在图中,我们看到 RTT 在低于 10 毫秒和高达 200-300 毫秒之间变化。
  2. 要测量第 4 层中的延迟,使用tcp.analysis.ack_rtt  TCP 过滤器,它会给你确认每个接收到的包所需的时间。

它是如何工作的…

该软件只是捕获线路上的数据包,并向您显示它们之间的时差。需要注意的是,存在延迟或抖动,但我们看不到它来自哪里。

延迟是数据包从网络一端到达另一端所需的时间。它通常被称为 RTT。可以使用简单的 ping 或图形 Ping 工具来测量延迟。延迟以秒、毫秒、微秒等计量。

IP 网络中的抖动测量延迟的变化。例如,如果平均延迟为 100 毫秒,并且在 80 毫秒和 120 毫秒之间变化,则抖动为 20%。

还有更多…

很多网站上都有免费的图形化 Ping 工具。可以使用例如http://www . colasoft . com/download/products/download _ ping _ tool . PHP

发现不寻常的流量模式

在这个食谱中,我们将学习什么是正常和不正常的流量模式,以及如何区分它们。

分析网络瓶颈、问题和故障排除

前面的方法中讨论的问题和故障排除大多是相关的,可能会导致网络瓶颈问题。任何引入延迟的不当链路或路由器,或者容量规划不佳的网络设计,都可能导致带宽瓶颈问题,从而影响端到端应用性能。

在这个菜谱中,我们将看到如何使用 Wireshark 来分析瓶颈问题。

做好准备

为了识别瓶颈问题,我们可能需要在多个位置重复捕获,以进行分析和瓶颈隔离。理想情况下,端点上的数据包捕获将是识别受影响的应用流量的良好开端,然后我们可以使用 ping 实用工具等其他工具来缩小捕获点的范围。

怎么做…

  1. 过滤捕获以显示应用服务器的 DNS 解析数据包,并检查解析的平均时间。这可以通过过滤 DNS 数据包并获得 I/O 图来查看:
    • 检查 DNS 数据包的数量是否在 DNS 服务器可以处理的阈值范围内。如果不是,需要考虑 DNS 服务器升级。
    • 检查分辨率的时间增量是否在阈值范围内。解析中的任何延迟都会导致最终应用会话建立的延迟:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图是用于检查名称解析延迟的 DNS 数据包的 I/O 图。

  1. 检查 WAN 带宽利用率在其峰值和正常工作时间是否在阈值范围内。使用测量网络带宽和应用流量一节中定义的步骤来确定 LAN 和 WAN 端的带宽利用率。本节中定义的过程不仅可用于识别带宽利用率,还可用于检查带宽利用率是由关键业务流量还是清道夫流量引起的:
    • 如果捕获显示 WAN 带宽利用率已被完全利用,并且流量主要是业务关键型的,则您可能需要升级带宽。
    • 如果捕获显示 WAN 带宽利用率完全得到利用,并且流量不是关键业务流量,则可能需要额外的排队和 QoS 机制来限制非关键流量的速率。
  2. 检查任何传输链路(LAN、WAN)是否存在高延迟/抖动问题。关于如何执行此操作的更多详情,请参见使用 Wireshark 测量抖动和延迟部分。以秒为单位显示链接延迟的捕获是完全不正常的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面的 I/O 图显示了峰值延迟高达 10 秒,平均延迟超过 1 秒的链路。这种链路上的流量将受到严重影响,可能需要额外的链路级故障排除(检查电源、光纤清洁等)。

  1. 检查应用服务器是否遇到任何规模问题。这可以通过检查高峰和正常时间的并发会话数量以及会话数量是否在服务器可以处理的阈值内来完成。
  2. 检查端点图以确定并发会话的数量:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的列表中,服务器10.1.100.254的并发会话数是 8850。确保来自客户端的连接请求是真实的,而不是来自受损的服务器。如果这超出了服务器能够处理的阈值,则需要考虑服务器升级。

它是如何工作的…

该方法解释了如何使用 Wireshark 来解决网络瓶颈问题。工作机制可以根据网络中的流量类型而变化。理想情况下,该流是不同协议的组合。例如,试图与应用服务器建立会话的客户机将使用名称解析协议(如 DNS)来识别终端服务器的 IP 地址。

一旦接收到 IP 地址,如果传输协议是 TCP(例如,HTTP 或 FTP),它可以发送 TCP SYN 来建立 TCP 会话。如果应用的传输协议是 UDP(例如,QUIC),它将简单地通过 UDP 数据包发送应用请求。服务器在收到请求后,将通过网络向客户端发送数据。

任何网络设备(L2 交换机和路由器)都会通过最佳路径转发流量。根据等价路径的可用性,路由器可以在不同的路径上对不同的流量进行负载平衡。

端到端性能涉及到不同的因素。终端应用服务器处理能力和内存在会话处理和数据传输中起着关键作用。网络容量规划在不同客户端和服务器之间的端到端数据传输中起着关键作用。

还有更多…

有各种网络遥测收集功能可用于定期从所有或选定的网络设备收集网络数据,以全面了解网络性能。这对容量规划非常有用。可以使用并且在许多平台上都可用的基本功能如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值