IP、TCP、UDP校验和
先对每 16 位求反码然后求和,若相加后最高位有进位,那么不能舍弃,一定要加到低位,才能是结果正确。如0x0319BB 拆分成0X03+0X19BB(先求和再求结果的反码也是可以的,但是进位回卷到低位是要做的)。 不依赖系统是大端小端。即无论你是发送方计算机或者接收方检查校验和时,都不要调用htons或者ntohs,直接通过上面的算法就可以得到正确的结果。这个问题可以自己举个例子,用反码求和时,交换16位数的字节顺序,得到的结果相同,只是字节顺序相应地也交换了;而如果使用原码或者补码求和,得到的结果可能就不同。
787 字
|
4 分钟
