udp检验和提供了差错检验功能.
发送方的udp对报文段中的所有16比特字的和进行反码运算,求和时遇到溢出会被回卷
假定 下面是个报文段,有3个16比特的字
0110011001100000
0101010101010101
1000111100001100
先把前两个相加求和
0110011001100000
+0101010101010101
1011101110110101 与第三个继续求和
+
1000111100001100
10100101011000001 和为17位了溢出了 需要回卷 回卷就是把溢出的最高位和最低位做加法运算
1 + 0100 1010 1100 0001 = 0100 1010 1100 0010
0100101011000010
然后按位取反
1011010100111101 这就是校验和
接收方把这四个16比特字(包括校验和)全部相加如果没有引入错误结果应该是1111111111111111.
真麻烦啊.这么难算.................................
~
~
~