在TCP/UDP中,发送方对16位字进行异或运算,最后的结果再次补码得到校验和。现在,这样做是为了使接收方可以使用数据和校验和重新计算校验和,如果结果都是 1,则可以确定(好吧,几乎!)没有错误。我的问题是为什么我们必须在发件人处对结果进行最终补充。我们不妨这样发送它,以便当接收方重新计算校验和时,它必须检查所有零,而不是像其他情况那样检查所有零。
最佳答案
因为0有特殊的意义。它用于指示要忽略校验和计算。
关于tcp - 为什么TCP/UDP checksum最后补齐了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641977/