假设案例
假设路由器 (R1) 接收到一个长度为 820(标头 + 有效载荷)的 IP 数据报,TTL 为 255,ID 为 11。传出链路的 IP-MTU 大小为 420。
现在 R1 必须将数据报分成两个片段。问题是这些创建的片段的 TTL 是多少:
- 那将会
(TTL of the received IP datagram -1) - 或者会认为分片是从这个路由器开始的,开始的TTL会由这个路由器(R1)分配。
假设案例
假设路由器 (R1) 接收到一个长度为 820(标头 + 有效载荷)的 IP 数据报,TTL 为 255,ID 为 11。传出链路的 IP-MTU 大小为 420。
现在 R1 必须将数据报分成两个片段。问题是这些创建的片段的 TTL 是多少:
(TTL of the received IP datagram -1)数据包的 TTL 递减,因为在路由器接收到数据包时,IP 进程会处理该数据包。如果需要穿越出口网络(假设数据包未标记为 DF),则数据包会被路由器出口接口处的 IP 进程分段。生成的数据包片段的 TTL 将与数据包未分段时相同。
RFC 791, Internet Protocol对分片有完整的描述,它解释了标头字段从原始数据包复制到数据包片段:
为了对长互联网数据报进行分段,互联网协议模块(例如,在网关中)创建两个新的互联网数据报并将互联网标头字段的内容从长数据报 复制到两个新的互联网标头中。长数据报的数据在 8 个八位字节(64 位)的边界上分为两部分(第二部分可能不是 8 个八位字节的整数倍,但第一部分必须是)。调用第一部分 NFB 中 8 个八位字节块的数量(用于片段块数)。数据的第一部分放在第一个新的互联网数据报中,总长度字段设置为第一个数据报的长度。more-fragments 标志设置为 1。数据的第二部分被放置在第二个新的互联网数据报中,并且总长度字段被设置为第二个数据报的长度。more-fragments 标志携带与长数据报相同的值。第二个新 Internet 数据报的片段偏移字段设置为长数据报中该字段的值加上 NFB。
此过程可以推广到 n 路拆分,而不是所描述的双向拆分。
答案是 (1)(接收到的数据报的 TTL 减 1)
顺便说一下,这不是一个假设的案例。