摘要

  • IPv4 将 TTL 定义为以秒计的八位字段,但每个处理点都必须至少减一。
  • TTL 降至零时,数据报必须被丢弃;若目的地址不是组播地址,通常还要向源地址发送 ICMP Time Exceeded。

名义上的时间,并非精确时钟

RFC 791 让发送方为数据报设定最大生存时间。八位字段的最大编码值是 255,按名义单位计算即 255 秒,也就是 4.25 分钟。但每个处理互联网报头的节点都必须减少 TTL:能够测量时反映处理时间,即使经过时间不足一秒,也至少减一。因此 RFC 791 把 TTL 称为生存时间的上限,而不是精确秒表。

这条最低减量规则防止数据包仅因设备转发很快就无限循环。每个处理步骤都会消耗有限预算。

跳数含义被明确写出

RFC 1812 明确要求路由器每次处理数据包至少将 TTL 减一,即使经过时间远小于一秒。由此,TTL 实际上成为数据报能够传播多远的跳数限制。若路由器持有数据包超过一秒,还可以按每秒再减一。时间含义仍在,但所有实现都能依赖的底线是转发步骤。

当 TTL 达到零或更低时,路由器必须丢弃数据包;对于非组播目的地,还必须向源地址发送 ICMP Time Exceeded Code 0。TTL 在途中变化,因此 IPv4 仅覆盖报头的校验和也必须重新计算并校验。

来源