当您使用互联网时,您发送的每个数据包,从聊天消息到视频或照片,都必须经过交换机和服务器才能到达目的地。可是如果某天突然这些内容都无法正常发送时怎么办?不幸的是,没有什么比当您无法再连接到网站时更能提醒您这种设置的了。 原因可能在您这边、网站那边,或者介于两者之间。 找出问题所在的最佳方法是使用 traceroute 命令。
什么是 traceroute?
traceroute 是一种跟踪数据包通过互联网时所采取的路线的方法。 每个现代操作系统都可以追踪路线。
当您启动 traceroute 时,您可以告诉它您想要跟踪路由到哪个网站或服务器。 通常,这是您尝试访问的网站 URL,但如果您愿意,也可以为其提供 IP 地址。
什么是 traceroute
一旦您启动 traceroute,它就会向您设定的目的地发送数据包。 然后它会记录数据包的行程并将信息发送回您的电脑,然后电脑会向您显示它们的去向。
如果您想查找网络故障,这非常方便。 如果服务器或交换器出现故障,traceroute 将遇到问题并报告某些内容无法正常工作。 然后,您可以使用此信息更好地诊断出了什么问题。
traceroute 由如何工作?
traceroute 是诊断网络错误的便捷方法。 然而,traceroute 的发明完全归功于使用数据包的“生存时间”变量的巧妙利用。
什么是数据包的“生存时间”?
理想情况下,当计算机将数据包从一个地方发送到另一个地方时,它可以毫无问题地到达那里。 它会采用最快的路线从 A 点到 B 点,并且不会被卡住或阻碍。
不幸的是,网络可能是一件很挑剔的事情。 如果工程师在设置服务器时犯了错误,则数据包可能会在服务器之间无限循环地发送。 如果这种情况发生得太频繁,网络就会塞满永远不停地循环的数据包。
数据包背后的聪明人想出了一个解决方案来解决这个问题,称为“生存时间”或“TTL”。 每个数据包在发送到未知世界之前,都会被赋予一个大于 0 的 TTL 值。 如果该值达到 0,则数据包被视为“死亡”并被销毁。
当数据包在旅途中被发送时,它将在不同的服务器上多次停留。 每次到达服务器时,它都会将其 TTL 值减去一。 通常,此 TTL 值设置为一个数字,使数据包在到达 0 之前有足够的时间到达目的地。但是,如果数据包确实进入循环,则 TTL 最终将递减,直到数据包过期。
当数据包过期时,它结束的服务器会向本地发送所谓的“ICMP 超时”消息。 这本质上是一个通知,表明数据包已过早终止,并告诉用户数据包在何处过期,以帮助进行故障排除。
数据包的生存时间如何让 traceroute 发挥作用
此 ICMP 超时消息是使 traceroute 正常工作的关键。 首先,traceroute 发出一个 TTL 设置为 1 的数据包。这意味着它离开您的 PC,到达第一台服务器,从其 TTL 中减去 1,注意到它的 TTL 为 0,然后过期。
然后,当时处理数据包的服务器将 ICMP 超时消息及其位置发送回您的 PC。 然后,您的电脑会记录服务器的位置,作为实现目标的第一步。
然后,它发送一个 TTL 设置为 2、3 等的数据包,直到数据包到达目的地。 每个数据包都会在通道的下一步过期,沿途的每个服务器都会报告过期的数据包,为您的 PC 提供所需的信息,以了解数据包的去向。
traceroute 有何用途?
在基本层面上,traceroute 可让您了解数据包如何在网络中移动。 无论您是网络工程师,仔细检查所有内容是否按预期流动,或者您只是对访问百度时数据包的传输方式感兴趣,traceroute 都是您的最佳选择。
然而,它对于发现系统中的错误也很有用。 如果 traceroute 尝试联系无响应的服务器,它会注意到它发送的数据包有一段时间没有触发回复。 一旦经过了足够的时间,traceroute 就会声明“请求超时”,这意味着回复未能在指定的时间内到达。
当然,超时请求并不总是意味着服务器已关闭。 有时服务器不喜欢 traceroute 请求并在它们通过时阻止它们。 但是,如果您相对确定链上的任何服务器都不应阻止 traceroute,那么这是诊断在您尝试连接时无法响应的网站或服务器的好方法。
traceroute 和 Ping 有什么区别?
技术熟练的读者会发现 traceroute 听起来与另一个方便的网络工具 Ping 非常相似。 然而,虽然这两个功能确实有一点重叠,但人们使用它们的原因不同。
正如上面所介绍的,traceroute 可帮助您确定数据包离开 PC 后的去向。 同时,Ping 会告诉您您的 PC 是否可以到达特定服务器,以及到达那里需要多长时间。
因此,如果您想查看网络链的每个部分,traceroute 就是您的最佳选择。 同时,如果您只想查看服务器是否响应,您可以对其进行 Ping。 当然,您也可以使用 traceroute 来做到这一点,但您必须等待一段时间才能最终到达您的服务器,然后才能获得您正在寻找的答案。
如何执行 traceroute
正如我们之前所说,所有主要操作系统都可以执行 traceroute。 就像打开命令终端并输入 traceroute 命令一样简单。
对于 macOS,您只需打开终端并输入“traceroute”,然后输入目标的 URL 或 IP 地址。 Linux 上也是一样,但您可能需要先安装 traceroute,然后才能运行它。
在 Windows 操作系统上,其工作方式相同,只不过该函数称为“tracert”。
使用 traceroute 跟踪您的数据包
如果您想查看数据包离开 PC 后的去向,traceroute 就是您的最佳选择。 无论您是想诊断网络问题,还是只是想看看数据包的去向,都可以轻松设置并观察数据流向。