怀疑默认生存时间(TTL)是 255 吗?

怀疑默认生存时间(TTL)是 255 吗?

我知道,默认生存时间值是 255,每次 IPv4 数据包穿过路由器时,该值就会减 1。

但是,当我 ping 我的 adsl 路由器时,它显示 TTL 为 64

Pinging 192.168.0.1 with 32 bytes of data:
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64

从 PC 到路由器只有一跳,所以我的预期 TTL 是 254,但是为什么这里 ping 显示 TTL 为 64..

任何帮助都将不胜感激...

答案1

以下是手册页中的相关引文ping

TTL 详细信息 IP 数据包的 TTL 值表示数据包在被丢弃之前可以经过的最大 IP 路由器数量。在当前实践中,您可以预期互联网中的每个路由器都会将 TTL 字段减一。

TCP/IP 规范建议将 IP 数据包的 TTL 字段设置为 64,但许多系统使用较小的值(4.3BSD 使用 30,4.2BSD 使用 15)。

并引用RFC 1700:

目前建议的互联网协议 (IP) 的默认生存时间 (TTL) 为 64。

答案2

最大 TTL 为 255,但这不是默认值。如您所见,默认值取决于操作系统这里

例如,查看 Windows 与 Linux 中对 127.0.0.1 的 ping 操作:

我的Windows 7:

Windows ping

我的Linux机器:

Linux ping

因此看起来您收到的是来自默认为 64 的机器的回复。

答案3

TTL 值由远程机器决定。例如,如果您 p​​ing 一台 Linux 机器,其原始 TTL 值为 64。根据它跨越多少个网络才能返回给您,TTL 值会减去 1。因此,如果您 p​​ing 8.8.8.8(即 Google 的名称服务器),它的原始值为 128。当它返回给您时,它的值可能为 121(对我来说是这样的)。这意味着它跨越了 7 个网络才到达我这里,而且它是一台 Windows 机器。

常见 TTL 值 - 路由器 - 255 Windows - 128 Linux-Mac - 64

相关内容