使用 Wireshark 排除网络延迟故障

已发表: 2021-10-07

网络延迟是网络生态系统中从源到目的地传输请求或数据的延迟。 让我们看看如何解决网络延迟问题。

任何需要使用网络的操作,例如打开网页、单击链接或打开应用程序并玩网络游戏,都称为活动。 用户的活动就是请求,Web 应用程序的响应时间就是响应这个请求所用的时间。

此时间延迟还包括服务器完成请求所需的时间。 因此,它被定义为往返——请求被记录、处理,然后被用户接收,并在那里被解码所花费的时间。

术语“低延迟”是指相对较短的数据传输延迟。 另一方面,长时间的延迟或过度的延迟是不可取的,因为它们会降低用户体验。

如何修复网络延迟?

互联网上有许多工具和软件可用于分析和排除网络故障。 有些是付费的,有些是免费的。 然而,有一个叫做 Wireshark 的工具,它是一个开源和 GPL 许可的应用程序,用于实时捕获数据包。 Wireshark 是世界上最流行和最常用的网络协议分析器。

它将帮助您捕获网络数据包并详细显示它们。 一旦捕获到网络数据包,您就可以使用这些数据包进行实时或离线分析。 此应用程序允许您在显微镜下检查您的网络流量,过滤并深入研究以找到问题的根源,协助网络分析并最终帮助网络安全。

什么导致网络延迟?

网络连接缓慢的几个主要原因包括:

  • 高延迟
  • 应用依赖
  • 数据包丢失
  • 拦截装置
  • 低效的窗口大小

在本文中,我们检查了网络延迟的每个原因以及如何解决 Wireshark 的问题。

使用 Wireshark 进行检查

高延迟

高延迟是指数据从一个端点传输到另一个端点所需的时间。 高延迟对网络通信的影响是巨大的。 在下图中,我们以高延迟路径上文件下载的往返时间为例。 往返延迟时间可能经常超过一秒,这是不可接受的。

线鲨4

  • 转到 Wireshark 统计信息。
  • 选择选项 TCP 流图。
  • 选择往返时间图以了解下载文件所需的时间。

Wireshark 用于计算路径上的往返时间,以查看这是否是传输控制协议 (TCP) 通信网络性能缺陷的原因。 TCP 用于各种应用,包括网上冲浪、数据传输、文件传输协议等。 在许多情况下,可以调整操作系统以在高延迟通道上更有效地执行,特别是当主机使用 Windows XP 时。

应用程序依赖

某些应用程序依赖于其他应用程序、进程或主机通信。 例如,假设您的数据库应用程序依赖于连接到其他服务器来获取数据库项。 在这种情况下,那些其他服务器上缓慢的性能会影响本地应用程序的加载时间。

以目标服务器引用其他几个网站的 Web 浏览体验为例。 例如,要加载站点的主页 www.espn.com,您必须首先访问 16 个主机,这些主机为 www.espn.com 主页提供广告和内容。

线鲨-3

在上图中,Wireshark 中的 HTTP 负载分布窗口显示了 www.espn.com 主页使用的所有服务器的列表。

数据包丢失

我在网络上发现的最普遍的问题之一是数据包丢失。 当数据包未通过 Internet 从发送方正确传送到接收方时,就会发生数据包丢失。 当用户访问网站并开始下载该网站的元素时,丢失的数据包会导致重新传输,从而增加下载 Web 文件的确定性并减慢整个下载过程。

此外,当应用程序使用 TCP 时,丢失的数据包会产生特别不利的影响。 当 TCP 连接检测到丢弃的数据包时,吞吐率会自动减慢以补偿网络问题。

它逐渐提高到更可接受的速度,直到下一个数据包被丢弃,导致数据吞吐量显着降低。 大文件下载,否则应该很容易通过网络传输,但会遭受严重的数据包丢失。

数据包丢失时是什么样子的? 这是有争议的。 如果程序通过 TCP 运行,数据包丢失可能有两种形式。 在一个示例中,接收器基于数据包的序列号监控数据包并检测丢失的数据包。 客户端对丢失的数据包发出三个请求(双重确认),导致重新发送。 当发送方发现接收方没有确认收到数据包时,发送方超时并重新发送数据包。

线鲨

Wireshark 表示发生了网络拥塞,并且多次确认通过颜色编码来重新传输有问题的流量。 大量重复确认表明网络中的数据包丢失和显着延迟。

为了提高网络速度,精确定位数据包丢失的确切位置至关重要。 当发生丢包时,我们将 Wireshark 沿路径移动,直到看不到更多的丢包。 我们此时处于数据包丢弃点的“上游”,因此我们知道将调试工作重点放在何处。

拦截装置

网络流量警察是做出转发选择的互连设备,例如交换机、路由器和防火墙。 当发生丢包时,应将这些设备作为可能的原因进行调查。

这些链接设备可以将延迟添加到路径中。 例如,如果启用了流量优先级,我们可以看到注入到低优先级流中的额外延迟。

低效的窗口大小

除了 Microsoft 操作系统之外,TCP/IP 网络中还有其他“窗口”。

  • 滑动窗口
  • 接收窗口
  • 拥塞控制窗口

这些窗口共同构成了网络基于 TCP 的通信性能。 让我们首先定义每个窗口及其对网络带宽的影响。

滑动窗口

当数据被确认时,滑动窗口用于在网络上广播下一个 TCP 段。 发送方收到对传输数据片段的确认,滑动窗口扩大。 只要网络上没有丢失传输,就可以传输更大量的数据。 当一个数据包丢失时,滑动窗口会缩小,因为网络无法管理线路上增加的数据量。

接收窗口

TCP 堆栈的接收器窗口是一个缓冲区空间。 接收到数据后,将其存储在此缓冲区空间中,直到应用程序获取它为止。 当应用程序跟不上接收速率时,接收器窗口就会填满,最终导致“零窗口”场景。 当接收器宣布零窗口条件时,所有到主机的数据传输都必须停止。 吞吐量下降到零。 一种称为窗口缩放 (RFC 1323) 的方法允许主机增加接收器窗口大小并降低零窗口场景的可能性。

线鲨2

上图显示了由于零窗口场景导致的网络通信延迟 32 秒。

拥塞窗口

拥塞窗口定义了网络可以处理的最大数据量。 发送方的数据包传输率、网络丢包率和接收方的窗口大小都对这个数字有所贡献。 在健康的网络通信期间,拥塞窗口稳定增加,直到传输完成或达到网络健康建立的“上限”。 发送方的传输能力或接收方的窗口大小。 每个新连接都重新开始窗口大小协商过程。

健康网络的提示

  • 了解如何将 Wireshark 用作第一响应任务,以快速有效地发现性能不佳的根源。
  • 确定网络路径延迟的来源,并在可能的情况下将其降低到可接受的水平。
  • 定位并解决丢包的根源。
  • 检查数据传输窗口大小,如果可能,减少它。
  • 检查拦截设备的性能,看看它们是否增加了延迟或丢弃了数据包。
  • 优化应用程序,以便它们可以提供更大量的数据,并在可能的情况下从接收器窗口检索数据。

包起来

我们已经了解了网络性能问题的主要原因,但不容错过的一个因素是缺乏对网络通信行为的了解。 Wireshark 提供网络可见性,就像 X 射线一样,CAT 扫描提供对人体的可见性,以进行准确和及时的诊断。 该工具已成为定位和诊断网络问题的重要工具。

您现在应该使用 Wireshark 通过多个过滤器和工具检查和解决网络性能。