路由器可以将 TTL 值减少一以上吗?

路由器可以将 TTL 值减少一以上吗?

维基百科(生存时间)状态:

生存时间值可以看作是 IP 数据报在 Internet 系统中存在时间的上限。TTL 字段由数据报的发送者设置,并由每个路由器减少在前往目的地的途中

路由器将 IP 数据包的 TTL 值减少一以上是否“合法”?

答案1

是的,如果路由器处理数据包的时间超过一秒。生存时间会减少处理数据包所需的秒数,并且数据包经过的每个设备都必须至少减少一秒。

第 30 页,共RFC 791状态:

生存时间

生存时间由发送方设置为数据报在互联网系统中允许的最大时间。如果数据报在互联网系统中的时间超过生存时间,则必须销毁该数据报。

每次处理互联网报头时,必须减少此字段以反映处理数据报所花费的时间。即使没有关于实际花费时间的本地信息,也必须将该字段减 1。时间以秒为单位(即,值 1 表示一秒)。因此,最大生存时间为 255 秒或 4.25 分钟。由于处理数据报的每个模块都必须将 TTL 至少减少 1,即使它在不到一秒的时间内处理数据报,因此必须将 TTL 仅视为数据报可能存在时间的上限。目的是导致无法送达的数据报被丢弃,并限制最大数据报生存期。

一些更高级别的可靠连接协议基于这样的假设:旧的重复数据报在一定时间过后不会到达。TTL 是此类协议确保其假设得到满足的一种方式。

答案2

最初设想的 TTL 以秒为单位;如果数据包在路由器中延迟超过一秒,路由器将相应地调整 TTL。但是,这种方法很难实现,而且从未得到普遍支持。现代路由器只是将 TTL 减一,而不管实际延迟是多少,因此 TTL 实际上是跳数。[*7] 建议的默认 TTL 为 64,尽管 15 和 32 等值并不罕见。

[*7] 正如您将在第 2 章中读到的那样,IPv6 标头中的等效字段已重命名为“跳数限制”,以更准确地反映其真实用途。

来源:路由 TCP/IP 卷 1 - 第二版 - Cisco Press

相关内容