当我们在浏览器中输入一个URL,服务器接收请求并返回数据,似乎这一切都发生得如此神奇,然而其中必然会发生许多事情,其中一件重要的事情就是数据需要通过一些路由节点才能到达目标服务器,这就是网络路由的基本工作原理。在互联网中,这个路由路径非常复杂,包含数千个中继路由器,由许多网络管理者管理和维护。要想了解究竟是哪些路由节点将请求带到目标服务器,我们需要使用一款名为traceroute的网络工具。
traceroute是一个非常流行的网络诊断工具,可以帮助我们深入了解目标主机连接的路径,显示了到达目标主机的路径,以及每个中间路由器设备的延迟(即路由时延)。traceroute命令呈现的任何网络路径都基于多次发送ICMP回退(TTL已过期)报文,它将迭代地增加TTL(时间到生存)值,以获得从本地到目标主机的每个中间节点。每个路由器都为回复发回一个ICMP“端口不可达”消息,通知我们路径上的第一跳路由器的地址。通过这种方式,我们可以发现网络路由的工作原理。
为了更深入地了解traceroute的原理和如何利用它来帮助诊断网络问题,让我们详细地解析traceroute是如何工作的。
1.首先,traceroute向目标主机的端口发送一条特殊的UDP数据包,然后将TTL(时间到存活)值设置为1。然后它将等待路由器的ICMP‘端口不可达’信息返回。
2.当第一个路由器收到UDP数据包时,它将检查TTL值并将其减少1。这意味着数据包不再是之前的数据包,而是新的数据包,不会通过之前的路由器。
3.如果TTL值降为0,则路由器不会转发数据包,并将发送一个ICMP“端口不可达”的信息返回给traceroute。此时,traceroute已经了解到了第一个路由器的IP地址。
4.迭代此过程,TTL值将逐渐增加,以便探索网络路径中的每个跳跃点。每一跳都会触发一个新的UDP数据包,并且会在上一个路由器返回ICMP‘端口不可达’消息后,向下一个节点发送其下一个UDP数据包。
5.重复上述步骤,直到到达目标主机。一旦达到目标主机,它将返回一条ICMP“端口可达”的消息,告诉traceroute它已经到达了目标主机。
在我们追踪到目标主机之后,我们可以查看每个中间路由器的延迟时间,以帮助我们了解有关网络连接质量的信息。为了捕获有关延迟时间的数据,traceroute会仅发送三个UDP数据包,每次发送每个包之间相隔1秒钟。等待和接收所有数据包的时间在每个中间路由器上累加,以获得整个网络路径的延迟/路由时延信息。
需要注意的是,虽然traceroute是一个相当简单的命令行工具,但它提供了有关网络路径和网络质量的许多有用信息。在调试网络问题时,它通常是非常有用的,特别是当我们想要确定网络连接质量是否受到中间路由器的影响时。traceroute是一个跨平台工具,可以在Windows、Linux和MacOS上运行,通常在其他网络诊断工具(如ping)无法解决问题时使用。它还可用来跟踪路由路径并确定任何路由节点的故障。
总结
traceroute可以帮助我们跟踪互联网上从一个节点到另一个节点的路径。为了达到这个目的,它会发送一系列的UDP数据包,并通过每次递增TTL的值来发现路径上的每个节点。每个中跳路由器向traceroute返回一个ICMP“端口不可达”的响应消息,并通知它与之相连的下一个路由器的IP地址。此外,traceroute还可以捕获网络质量相关的路由时延数据以帮助网络管理员调试问题。通过了解traceroute背后的工作原理,网络管理员可以更好地了解网络延迟和路径探测的动作,并更好地了解TCP/IP协议在实际网络中的工作原理。