在TCP / UDP中,发送方xors 16位字和最终结果再次补充以获得校验和。现在,这样做是为了接收器将使用数据和校验和重新计算校验和,如果结果都是1,那么可以肯定(好吧,几乎!)没有错误。我的问题是为什么我们必须在发件人处对结果做最后的补充。我们也可以这样发送它,以便当接收方重新计算校验和时,它必须检查所有零,而不是像其他情况那样检查所有零。
答案 0 :(得分:3)
因为0具有特殊含义。它用于指示要忽略校验和计算。
答案 1 :(得分:0)
这样接收器就可以只对所有数据(包括校验和字段)进行1的补码求和,看看它是否为-0 (0xffff)
。