为什么TCP/UDP校验和最终要进行补码操作?

3
在TCP/UDP中,发送方对16位字进行异或操作,最终结果再进行一次补码以得到校验和。这样做的目的是让接收方通过数据和校验和重新计算校验和,如果结果全部为1,则可以确定(几乎)没有错误。我的问题是为什么我们需要在发送方对结果进行最终补码。我们也可以将其直接发送,这样当接收方重新计算校验和时,它将必须检查所有零,而不是像另一种情况那样检查所有的一。
2个回答

3

由于0具有特殊含义,它被用来指示忽略校验和计算。


0

这样接收器只需对所有数据(包括校验和字段)进行1's补码求和,查看是否为-0(0xffff)


为什么接收器不能取1的补码和来检查数据是否为0,而不是-0? - borncrusader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接