当我在 Windows XP 系统上 ping localhost 时,返回的 TTL 值为 128,它显示我的系统 ping 中的默认 TTL 值为 128。然后,当我 ping google.com 时,返回的 TTL 值为 45,我假设这意味着 (128 - 45) / 2 跳数存在于我到 google 的路径中。当我 tracert google.com 时,它说数据包最多经过 30 个跳数,但它到达了目的地。
为什么会这样?ping 显示的 TTL 值和 tracert 的 TTL 值有区别吗?
提前致谢 。 。 。
答案1
为什么会发生这种情况?
某些主机在路径过滤中跟踪路由
ping 显示的TTL值和tracert的TTL值有区别吗?!
没有区别(ping ttl=55,tracepath ttl=back=55)...没有主机过滤跟踪
ping ya.ru
PING ya.ru (87.250.250.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (87.250.250.3): icmp_seq=1 ttl=55 time=36.6 ms
tracepath ya.ru
....................
8: l3-s550-s450.yandex.net (213.180.213.23) 97.070ms
9: l3-s650-s550.yandex.net (213.180.213.29) 97.992ms
10: www.yandex.ru (77.88.21.3) 91.306ms reached
Resume: pmtu 1500 hops 10 back 55
然后,当我 ping google.com 时,返回的 TTL 值是 45,我假设这意味着在我到 google 的路上存在 (128 - 45) / 2 跳数。
路径编号 = 64(默认 google.com ttl)- 45(ping ttl)= 19 跳
答案2
不同的操作系统会以不同的 TTL 发送对 ping 的回复(它不取决于传入 ping 中的 TTL)。常见的起始值包括 64、128 和 255。也就是说,你说的“这意味着 (128 - 45) / 2 跳数存在于我去谷歌的路上”是错误的。假设他们使用常规 Linux 系统,他们发送 TTL = 64 的 ICMP 数据包,因此只有 19 个跳数。