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

sat*_*h91 9 networking routing ping ipv4

我知道,默认生存时间值为 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
Run Code Online (Sandbox Code Playgroud)

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

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

小智 10

这是ping联机帮助页中的相关引用:

TTL 详细信息 IP 数据包的 TTL 值表示数据包在被丢弃之前可以通过的最大 IP 路由器数。在当前的实践中,您可以期望 Internet 中的每个路由器将 TTL 字段递减一。

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

并引用RFC 1700:

当前推荐的 Internet 协议 (IP) 的默认生存时间 (TTL) 为 64。

  • TTL 字段的初始值由发送数据包的主机设置。如本答案所述,该值会有所不同,通常由操作系统决定。如果初始值是 64,那么在它通过第一个路由器后,它会像你说的那样下降到 63。您在 ping 响应中看到的 TTL 从网关路由器上操作系统使用的默认值开始倒计时。ICMP 回显响应是一个新数据包,将填充新的 TTL,它不会从 ICMP 回显请求的 TTL 中剩余的内容开始倒计时。 (7认同)

Mal*_*alt 5

最大 TTL 为 255,但不是默认值。默认值取决于操作系统上,你可以看到在这里

例如,在 Windows 与 Linux 中查看 127.0.0.1 的 ping:

我的 Windows 7:

Windows ping

我的 Linux 机器:

Linux ping

因此,您似乎收到了来自默认值为 64 的机器的回复。