跳跃意义(TTL测量)

Kyr*_*o M 10 ping

当我使用 ping 命令时,我得到下一个结果(Windows):

C:\>ping example.microsoft.com
Pinging example.microsoft.com [192.168.239.132] with 32 bytes of data:
Reply from 192.168.239.132: bytes=32 time=101ms TTL=124
...
Run Code Online (Sandbox Code Playgroud)

在此类实用程序的文档中,TTL 以跳数为单位进行测量。根据 ICMP 规范RFC 792

生活的时间。为单位的生存时间;由于该字段在处理数据报的每台机器上都会递减,因此该字段中的值应至少与该数据报将穿越的网关数量一样大。

因此,每个主机都会将 TTL 减少至少 1。没有说啤酒花。那么为什么要使用啤酒花呢?如果主机处理数据报太快,为什么不使用,比如ms?为什么规范没有说明hops

Mik*_*kel 7

如果存在路由循环,TTL 旨在永远停止数据包的生存(和消耗资源)。

最初,路由器可能需要一秒钟以上来处理数据包。

当路由器变得更快,并在一秒内开始处理数据包时,将 TTL 减少为零对他们来说是愚蠢的,因为这样就不会停止循环。

因此,它会将 TTL 递减一秒。

此更改记录在RFC 1716第 5.3.1 节中。

IP 报头的生存时间 (TTL) 字段被定义为限制数据报生命周期的计时器。它是一个 8 位字段,单位为秒。处理数据包的每个路由器(或其他模块)必须将 TTL 至少递减一个,即使经过的时间远小于一秒。由于这种情况很常见,因此 TTL 有效地限制了数据报可以通过 Internet 传播多远的跳数限制。

当路由器转发数据包时,它必须至少将 TTL 减少 1。如果它持有一个数据包超过一秒,它可以每秒将 TTL 递减 1。

也可以看看:

维基百科 - 生存时间

TTL 字段由数据报的发送方设置,并由到达目的地的路由上的每个主机减少。

Maxi-pedia - 生存时间 (TTL)

数据包经过的每个路由器都需要从 TTL 字段中减去至少一个计数。