您可以使用Linux traceroute命令来发现网络数据包传输过程中的慢段,并对缓慢的网络连接进行故障排除。我们会教你怎么做!
当您了解traceroute的工作原理时,就更容易理解结果。网络数据包到达目的地的路径越复杂,就越难确定可能发生减速的位置。
小型组织的局域网(LAN)可能相对简单。它可能至少有一个服务器和一两个路由器。在不同地点之间或通过因特网进行通信的广域网(WAN)上,复杂性增加。然后,您的网络数据包会遇到(并被转发和路由)许多硬件,如路由器和网关。
数据包上元数据的头描述了它的长度、它来自哪里、它要去哪里、使用的协议等等。协议的规范定义了头。如果您可以识别协议,可以确定头中每个字段的开始和结束,并读取元数据。
traceroute使用TCP/IP协议套件,发送用户数据报协议包。标头包含生存时间(TTL)字段,该字段包含一个8位整数值。不管名字怎么说,它代表的是计数,而不是持续时间。
一个包通过路由器从它的起点到它的目的地。每次数据包到达路由器时,它都会减少TTL计数器。如果TTL值曾经达到1,那么接收数据包的路由器将递减该值并注意到它现在为零。数据包随后被丢弃,并且不会转发到其旅程的下一个跃点,因为它已经“超时”
路由器发送一个Internet消息控制协议(ICMP)超时消息回数据包的来源,让它知道数据包超时。超时消息包含原始报头和原始数据包数据的前64位。这在征求意见792第6页中有定义。
因此,如果traceroute发送一个数据包,然后将TTL值设置为1,那么该数据包在被丢弃之前只能到达第一个路由器。它将从路由器接收ICMP超时消息,并记录往返所用的时间。
然后,它将重复练习,TTL设置为2,两次跳后将失败。traceroute将TTL增加到3,然后重试。此过程重复,直到达到目标或测试最大跳数(默认情况下为30)。
有些路由器有漏洞。它们尝试转发TTL为零的数据包,而不是丢弃它们并引发ICMP超时消息。
据思科称,一些互联网服务提供商(ISP)限制路由器中继的ICMP消息数量。
某些设备被配置为从不发送ICMP数据包。这通常是为了确保设备不会在无意中被强迫参与分布式拒绝服务,比如**urf攻击。
traceroute的默认答复超时时间为5秒。如果在这五秒钟内没有收到响应,则放弃尝试。这意味着来自非常慢的路由器的响应被忽略。
traceroute已经安装在fedora31上,但必须安装在manjaro18.1和ubuntu18.04上。要在Manjaro上安装traceroute,请使用以下命令:
sudo pacman -Sy traceroute要在Ubuntu上安装traceroute,请使用以下命令:
sudo apt-get install traceroute如上所述,traceroute的目的是在从您的计算机到目的地的每一跳中从路由器获取响应。有些人可能守口如瓶,什么也不给,而另一些人可能会毫无顾忌地泄露秘密。
例如,我们将运行一个traceroute到爱尔兰布拉尼城堡网站,这里是著名的布拉尼石之家。传说如果你亲吻布拉尼石,你会得到“口碑的礼物”的祝福。让我们希望我们在路上遇到的路由器是适当的唠叨。
我们键入以下命令:
traceroute www.blarneycastle.ie第一行提供了以下信息:
所有其他行都包含其中一个跃点的信息。不过,在深入了解细节之前,我们可以看到,我们的电脑和布拉尼城堡网站之间有11个跳跃。跳11也告诉我们我们到达了目的地。
每个跃点行的格式如下:
让我们回顾一下下面的内容:
所以,这是一个混合袋。一些设备玩球,一些回应,但没有告诉我们他们的名字,还有一些保持完全匿名。
然而,我们确实到达了目的地,我们知道它离我们有11跳的路程,往返时间是13.773和14.715毫秒。
如我们所见,有时包含设备名称会导致显示混乱。为了更容易查看数据,可以使用-n(无映射)选项。
要使用我们的示例执行此操作,请键入以下内容:
traceroute -n blarneycastle.ie这样就可以更容易地为可能表示瓶颈的往返计时选择大量的数字。
第三跳看起来有点可疑。上一次,它只回应了两次,而这次,它只回应了一次。在这种情况下,我们当然无法控制。
然而,如果你正在调查你的公司网络,那么对这个节点进行更深入的研究是值得的。
也许如果我们延长默认的超时时间(5秒),我们会得到更多的响应。为此,我们将使用-w(等待时间)选项将其更改为7秒。(请注意,这是一个浮点数。)
我们键入以下命令:
traceroute -w 7.0 blarneycastle.ie这并没有造成太大的影响,所以回应可能已经过时了。很可能匿名的啤酒花是故意保密的。
默认情况下,traceroute向每个跃点发送三个UDP数据包。我们可以使用-q(查询数)选项来向上或向下调整。
为了加快traceroute测试的速度,我们键入以下命令以减少发送到其中一个的UDP探测数据包的数量:
traceroute -q 1 blarneycastle.ie这会向每个跃点发送一个探测。
我们可以将TTL的初始值设置为1以外的值,并跳过一些跳跃。通常,TTL值在第一组测试中设置为1,在下一组测试中设置为2,依此类推。如果我们把它设为5,第一个测试将尝试跳到5,跳过1到4。
因为我们知道Blarney Castle网站离这台计算机有11个跃点,所以我们键入以下内容直接转到跃点11:
traceroute -f 11 blarneycastle.ie这给了我们一个很好的,关于目标连接状态的简明报告。
traceroute是研究网络路由、检查连接速度或识别瓶颈的一个很好的工具。Windows还有一个tracert命令,其功能类似。
但是,您不希望用大量的UDP数据包轰炸未知设备,并且要小心在脚本或无人参与的作业中包含traceroute。
负载跟踪路由可能会对网络性能产生不利影响。除非您处于“现在就修复”的情况,否则您可能希望在正常工作时间之外使用它。
... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
... 如何在windows10上安装linux bash shell ...
要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...
想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...
...已配置的系统,与其他计算机共享,或者只保存备份。 如何工作 导入和导出功能是在2019年5月的Windows10版本1903更新中添加的。如果尚未安装,则无法使用这些命令行选项。 您只需要为Windows wsl命令提供两个新选项:--export和--i...
...些指南汇总到一个大列表中。 windows上linux入门 相关:如何在windows10上安装和使用Linux Bash Shell 您可以在任何版本的windows10(包括windows10home)上安装Linux环境和bashshell。但是,它确实需要64位版本的Windows10。您只需启用Windows Subs...
...令行应用程序都能正常工作,因为这个特性并不完美。 如何在windows10上安**ash 相关:如何知道我运行的是32位还是64位Windows? 此功能在32位版本的Windows 10上不起作用,因此请确保您使用的是64位版本的Windows。无论如何,如果你...
...个Linux环境,可以设置默认值并在它们之间切换。 相关:如何在windows10上安装和使用Linux Bash Shell 您可以自由地一次运行多个Linux环境,但是当您运行类似wsl.exe文件或者bash.exe启动shell,或者使用wsl[command]或bash-c[command]从Windows中...