TTL 和 traceroute 对同一域名显示不同的值

TTL 和 traceroute 对同一域名显示不同的值

为什么我会得到 tracert 和 ping 的两个不同的输出?

Ping 结果显示总跳数为 20,而 tracert 显示为 8。

我的 Linux 机器上的默认 ttl 值为 64,icmp echo reply ttl 值为 44。

64-44=20

但 tracert 只显示 8 个跳数。

原因何在?

如果 tracert 是使用 ttl 实现的,那么为什么无论我尝试多少次,对于同一个域都会得到不同的值?

对于Google和Google服务,ttl值和tracrt相同,但对于其他域名则不同。

答案1

你所做的毫无意义,即使成功,也只是碰运气。你根本不知道 ping 中的初始 TTL 值是多少回复数据包。该数据包由您无法控制的某个远程机器(您ping编辑的那台)发送。如果不知道初始 TTL 值,您就无法根据收到的 TTL 值确定跳数。

您确实知道您的出站traceroute 数据包,因为您编写了它们。这就是为什么它与 traceroute 一起工作的原因,它就是为此目的而设计的。如果您尝试理解对您的 traceroute 数据包的 ICMP 响应中收到的 TTL 值,那么您将得到与您从 ping 中获得的相同的无意义结果,这些结果只能靠运气才能奏效。

不信的话就试试吧。执行跟踪路由并查看 ICMP 回复中收到的 TTL 值。您可能会看到一跳的 TTL 值为 51,下一跳的 TTL 值为 238。发生这种情况的原因是,不同的设备在回复给您时使用了不同的初始 TTL 值。

相关内容