Wikipedia中指出,


IPv6标头不包含校验和。


做出此决定的原因是什么?

评论

使路由器硬件更便宜。

#1 楼

围绕IPv6的想法之一是加快数据包转发。为此,做出了一些决定。例如,与可变长度的IPv4标头不同,IPv6标头得到了极大的简化,并且长度固定。此外,由于数据包分段会占用大量资源,因此无法沿路径分段IPv6数据包,因为IPv4分段会占用大量资源。

IPv6标头中没有校验和意味着IPv6路由器不需要重新计算校验和以查看数据包头是否已损坏,并在减少跳数后重新计算校验和。这样可以节省处理时间并加快数据包转发速度。逻辑是第2层和第4层协议每个都已经具有校验和。第2层校验和覆盖整个IPv6数据包,而第4层校验和覆盖传输数据报。

评论


评论不作进一步讨论;此对话已移至聊天。

–罗恩·莫潘♦
1月28日21:12

#2 楼

因为它是冗余的。

所有常见的链路层协议,例如以太网或WiFi,都有其自己的错误检查和错误纠正机制,因此物理传输错误已经不太可能。 >剩下的就是数据包本身的逻辑错误。但是几乎所有基于IPv6的传输协议(如TCP或UDP)也具有错误检查功能,以捕获逻辑错误。而且这些校验和通常也覆盖IP标头的一部分,即使从技术上讲它们也不属于传输层段的一部分(例如源地址和目标地址)。 IPv6路由器尝试路由损坏的数据包?数据包将根本不会被路由,因为标头包含无效值或目标地址不存在,或者该地址是有效地址(可能是或可能不是预期的地址),因此它将到达目标,然后将其丢弃,因为传输层的校验和未加在一起。浪费了一点带宽,仅此而已。这是一种情况,实际上并不会经常发生。因此,根本不值得在IPv6交换机上为它们路由的每个单个数据包计算校验和所需的额外CPU负载。

评论


或多或少地将责任上移了一层。

–安德鲁(Andrew)
1月28日18:10

@Andrew:是的,但是基于IPv4的UDP,TCP和DCCP中的校验和计算已经包含了源地址和目标地址。 ICMP具有单独的校验和算法,但是仅一步之遥即可在ICMPv6中更改此算法,并丢弃现在有效的多余IP头校验和。我知道的唯一一个基于IP的第4层协议的校验和不覆盖src /目标地址是SCTP。

–cg909
1月29日19:36

#3 楼

我之前读过某人的文章,他知道决定该决定的思想过程:IPv4标头具有校验和,而IPv6标头没有校验和,因为到设计IPv6时,网络技术总体上已经有了很大改进(错误等少得多,此外,即使发生的罕见错误也可能被其他层的校验和所捕获),因此将校验和包含在IPv6标头中的好处是最小的。

考虑到IPv6地址长于IPv4地址,将添加到IPv6标头的每个字段都会给已经大于IPv4标头的标头增加额外的开销。对于那些收益最小的东西,它被认为是不必要的。