当我使用 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
...
在此类实用程序的文档中,TTL 的测量单位为酒花. 根据 ICMP 规范RFC 792:
生存的时间。 居住时间秒;由于此字段在处理数据报的每台机器上都会减少,因此此字段中的值应该至少与此数据报将穿越的网关数量一样大。
因此,每个主机将 TTL 至少减少 1第二. 没有提到酒花那么为什么要使用啤酒花呢?为什么不使用呢?多发性硬化症主机处理数据报的速度太快会怎样?为什么规范没有提到酒花?
答案1
TTL 的设计目的是如果存在路由循环,则永远阻止数据包存活(并消耗资源)。
最初,路由器可能需要一秒以上的时间来处理一个数据包。
当路由器的速度变得更快,并开始在一秒内处理数据包时,将 TTL 减少为零是愚蠢的,因为这样就不会停止循环。
因此,它会将 TTL 减少一秒。
这一变化记录在RFC 1716第 5.3.1 节。
IP 标头的生存时间 (TTL) 字段被定义为限制数据报生存期的计时器。它是一个 8 位字段,单位是秒。处理数据包的每个路由器(或其他模块)都必须将 TTL 至少减少一,即使经过的时间远少于一秒。由于这种情况很常见,TTL 实际上是数据报在互联网上传播距离的跳数限制。
当路由器转发数据包时,它必须将 TTL 至少减少一。如果它保留数据包超过一秒,它可以每秒将 TTL 减少一。
也可以看看:
TTL 字段由数据报的发送方设置,并由到达目的地途中的每个主机减少。
数据包经过的每个路由器都需要从 TTL 字段中减去至少一个计数。