我正在阅读有关 IPv6 的 RFC 2460,它说“如果跳数限制减少到零,则数据包将被丢弃”,也就是说,如果路由器将数据包的跳数限制减少到 0,其他路由器就无法接收跳数限制为 0 的数据包?
我问这个问题是因为我在谷歌上看到:“如果路由器收到跳数限制为 0 的数据包,或者路由器将数据包的跳数限制减少为 0,则该数据包将被丢弃”。在我看来,第二种情况不可能发生。
我说得对吗?谢谢!
答案1
通常情况下,路由器永远不会收到跳数限制为零的数据包,但是由于编码不当、恶意计算机或网络降级,这种情况可能在某些时候发生。
问题是当你将某个零减去时会发生什么。由于它是一个无符号的 8 位数,它将绕回并持续另外 255 跳。
答案2
您是否在 2460 年做到了这一点:
8.2 Maximum Packet Lifetime
Unlike IPv4, IPv6 nodes are not required to enforce maximum packet
lifetime. That is the reason the IPv4 "Time to Live" field was
renamed "Hop Limit" in IPv6. In practice, very few, if any, IPv4
implementations conform to the requirement that they limit packet
lifetime, so this is not a change in practice. Any upper-layer
protocol that relies on the internet layer (whether IPv4 or IPv6) to
limit packet lifetime ought to be upgraded to provide its own
mechanisms for detecting and discarding obsolete packets.