现场接收器结束操作的生存时间

网络工程 路由
2022-02-09 18:50:59

假设我的网络如下(R1、R2 和 R3 是路由器):

LAN A -> R1 -> R2 -> R3 -> LAN B

现在,如果 LAN A 为 LAN B 生成帧,那么我在看 TTL 会减少多少次?

LAN A 将查找 DLL,然后 R1、R2 和 R3 将 TTL 减一。因此,净 TTL 减 3。接收器是否有可能也减少 TTL?如果是,那为什么会这样?

PS:-我查看了一些在线资源,每个人都说TTL仅由路由器递减,而不是由目标主机递减。

1个回答

在实践中,主机可能不会减少 TTL,但实际主机或操作系统所做的事情在这里是题外话。

根据RFC 791,Internet 协议,主机网络堆栈中的 IPv4 模块也应该减少 TTL,因为它处理 IPv4 标头。这是为了保护上层协议免受旧数据的影响:

生存时间:8 位

该字段表示允许数据报在 Internet 系统中保留的最长时间。如果该字段包含值零,则必须销毁数据报。该字段在 Internet 标头处理中被修改。时间以秒为单位,但由于每个处理数据报的模块必须将 TTL 至少减少一个,即使它在不到一秒的时间内处理数据报,TTL 必须仅被视为数据报可能存在的时间。目的是使无法传递的数据报被丢弃,并限制最大数据报生命周期。

-和-

生存时间

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

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

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

这会导致一些混乱。当然,如果主机配置为将 IPv4 数据包转发到其他网络上的其他主机,包括内部虚拟网络上的虚拟机,它应该减少 TTL,但这在现实生活中似乎并不总是发生。

对于 IPv6,措辞更具体,告诉您转发数据包的节点必须减少 Hop Limit 字段。IPv6 不使用 TTL 字段,而是使用 Hop Limit 字段。IPv6 Hop Limit 字段实际上与 IPv4 TTL 字段相同。

RFC 2460,互联网协议,版本 6 (IPv6) 规范

跳跃限制

8 位无符号整数。每个转发数据包的节点减 1。如果 Hop Limit 减为零,则丢弃该数据包。

IPv6 RFC 似乎说 IPv4 主机需要强制执行 TTL,这似乎并没有真正发生:

8.2 最大数据包生命周期

与 IPv4 不同,IPv6 节点不需要强制执行最大数据包生命周期。这就是 IPv4 的“生存时间”字段在 IPv6 中重命名为“跳数限制”的原因。在实践中,很少有 IPv4 实现(如果有的话)符合它们限制数据包生命周期的要求,因此这在实践中并没有改变。任何依赖互联网层(无论是 IPv4 还是 IPv6)来限制数据包生命周期的上层协议都应该升级以提供自己的机制来检测和丢弃过时的数据包。