使用Wireshark进行网络延迟故障排除
网络时延是网络生态系统中从源到目的地传输请求或数据的延迟。让我们看看如何排除网络时延。
任何需要使用网络的操作,例如打开网页、点击链接或打开应用程序并玩在线游戏,都被称为活动。用户的活动是请求,Web应用程序的响应时间是回答此请求所需的时间。
这个时间延迟还包括服务器完成请求所需的时间。因此,它被定义为round trip – 请求被记录、处理,然后由用户接收并解码的时间。
术语“低延迟”指的是数据传输延迟相对较短的情况。另一方面,长延迟或过高的时延是不可取的,因为它们会降低用户体验。
如何修复网络时延?
互联网上有许多工具和软件可用于 analyzing and troubleshooting网络。有些是付费的,有些是免费的。然而,有一个名为Wireshark的工具,它是一个开源和GPL许可的应用程序,用于实时捕获数据包。Wireshark是世界上最流行和常用的网络协议分析器。
它将帮助您捕获网络数据包并详细显示它们。一旦捕获到网络数据包,您可以将其用于实时或离线分析。该应用程序允许您在显微镜下检查网络流量,对其进行过滤和深入分析,以找出问题的源头,协助网络分析和最终网络安全。
什么导致网络延迟?
导致网络连接速度慢的几个主要原因包括:
- 高时延
- 应用程序依赖
- 数据包丢失
- 拦截设备
- 窗口大小不合适
本文中,我们将研究每个网络延迟的原因以及如何使用Wireshark解决问题。
使用Wireshark进行检查
高时延
高时延指的是数据从一个端点传输到另一个端点所需的时间。高时延对网络通信的影响巨大。在下面的图表中,我们以高时延路径上的文件下载的往返时间为例。往返延迟时间通常会超过一秒,这是不可接受的。
- 转到Wireshark统计信息。
- 选择TCP流图选项。
- 选择往返时间图表,查看文件下载需要多长时间。
Wireshark用于计算路径上的往返时间,以确定是否是导致传输控制协议(TCP)通信网络性能不佳的原因。TCP在各种应用中使用,包括在线浏览、数据传输、file transfer protocol等。在许多情况下,操作系统可以进行调整,以在高时延通道上更有效地工作,尤其是当主机使用Windows XP时。
应用程序依赖
某些应用程序依赖于其他应用程序、进程或主机通信。例如,假设您的数据库应用程序依赖于连接到其他服务器以获取数据库项。在那些其他服务器上的性能下降可能会影响本地应用程序的加载时间。
以Web浏览体验为例,目标服务器引用了其他多个网站。例如,要加载该网站的主页www.espn.com,您必须首先访问16个供应广告和内容的主机,以供主www.espn.com页面使用。
在上图中,Wireshark的链接加载分布窗口显示了www.espn.com主页使用的所有服务器的列表。
数据包丢失
在网络上我发现最普遍的问题之一是数据包丢失。数据包丢失发生在数据包在互联网上从发送方到接收方的传递过程中出现错误。当用户访问一个网站并开始下载网站的元素时,丢失的数据包会导致重新传输,增加下载网页文件的确定性,并减慢整个下载过程。
此外,当应用程序使用TCP时,丢失的数据包会产生特别负面的影响。当TCP连接检测到丢失的数据包时,吞吐率会自动减慢以补偿网络问题。
它逐渐改善到一个更可接受的速度,直到下一个数据包丢失为止,导致数据吞吐量显著减少。本应在网络上轻松传输的大文件下载会受到数据包丢失的严重影响。
当数据包丢失时会有什么样的情况?这是有争议的。如果程序通过TCP进行操作,数据包丢失可以有两种形式。在一个例子中,接收方根据数据包的序列号监控数据包并检测到丢失的数据包。客户端对丢失的数据包发出三次请求(双重确认),导致重新发送。当发送方观察到接收方未确认收到数据包时,发送方超时并重新传输数据包。
Wireshark显示网络拥塞已发生,并且多个确认导致问题流量的重新传输通过颜色编码。大量重复的确认表示数据包丢失和网络中的显著延迟。
为了提高网络速度,关键是确定数据包丢失的确切位置。当发生数据包丢失时,我们将Wireshark沿着路径移动,直到看不到更多的数据包丢失。此时,我们从数据包丢失点的上游开始,因此我们知道要将调试工作重点放在哪里。
拦截设备
网络流量警察是使转发选择的互连设备,如交换机、路由器和防火墙。当数据包丢失时,应该调查这些设备作为可能的原因。
这些连接设备可以向路径添加延迟。例如,如果启用了流量优先级设置,我们可以观察到在低优先级的流中注入了额外的延迟。
除了微软操作系统之外,TCP/IP网络中还有其他“窗口”。
滑动窗口
接收窗口
拥塞控制窗口
这些窗口共同构成了网络的基于TCP的通信性能。让我们首先定义每个窗口及其对网络带宽的影响。
滑动窗口
在数据被确认后,滑动窗口用于在网络上广播下一个TCP片段。发送方收到发出的数据片段的确认后,滑动窗口扩大。只要在连接上没有丢失的传输,就可以传输更大量的数据。当数据包丢失时,滑动窗口会缩小,因为网络无法处理增加的数据量。
接收窗口
TCP堆栈的接收窗口是一个缓冲区空间。当接收到数据时,数据被存储在此缓冲区空间中,直到应用程序将其接收。当应用程序无法跟上接收速率时,接收窗口会填满,最终导致“零窗口”场景。当接收方宣布零窗口条件时,必须停止向主机传输所有数据。吞吐量率降为零。一种称为窗口缩放(RFC 1323)的方法允许主机增加接收窗口大小并降低零窗口场景的可能性。
上面的图片显示了由于零窗口场景导致的32秒的网络通信延迟。
拥塞窗口
拥塞窗口定义了网络能够处理的最大数据量。发送方的数据传输速率、网络数据丢失率和接收方的窗口大小都对这个数值有贡献。在一个正常的网络通信中,拥塞窗口会在传输完成或达到网络健康状态下设定的“上限”之前持续增长。发送方的传输能力或接收方的窗口大小。每次新连接都会重新开始窗口大小协商过程。
保持网络健康的提示
- 学会如何使用Wireshark作为首要任务,快速高效地发现性能不佳的原因。
- 识别网络路径延迟的来源,并在可能的情况下将其降至可接受的水平。
- 找出并解决数据包丢失的来源。
- 检查数据传输窗口大小,并在可能的情况下将其降低。
- 检查拦截设备的性能,看它们是否会增加延迟或丢弃数据包。
- 优化应用程序,使其能够传输更大量的数据,并在可能的情况下从接收方窗口中检索数据。
总结 👨🏫
我们已经讨论了主要原因为network performance issues,但有一个不容忽视的因素是对网络通信行为的理解不足。Wireshark提供网络可见性,就像X射线和CT扫描提供人体可见性一样,以便进行准确和及时的诊断。这个工具已经成为定位和诊断网络问题的重要工具。
现在,您应该使用Wireshark的几个过滤器和工具来检查和解决网络性能问题。👍