TTL和traceroute为同一个域显示不同的值

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

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

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

64-44=20 

但是tracert只显示了8跳。

可能是什么原因?

如果tracert是使用ttl实现的,那么为什么我会为同一个域获得不同的值,不pipe我尝试了多less次?

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

你在做什么是没有意义的,当它工作的时候,运气好运。 您不知道ping 回复数据包中的初始TTL值是什么。 这个数据包是由一个你无法控制的远程机器发送的(你所ping那个)。 在不知道初始TTL值的情况下,您无法从收到的TTL值中确定跳数。

您知道出站跟踪路由数据包的初始TTL,因为您编写了这些数据包。 这就是为什么这与为此devise的traceroute一起工作。 如果试图理解在对跟踪路由数据包的ICMP响应中接收到的TTL值,那么会给出相同的无意义结果,只能通过ping得到运气。

试试看,如果你不相信我。 执行traceroute并查看ICMP回复中收到的TTL值。 你可能会看到从一个跳跃51和从下一个238。 发生这种情况是因为各种设备在回复中使用不同的初始TTL值。