对于IP检验和的一点思考
2012-11-21 08:36:14
以前学习计算机网络,对于IP检验和也只是知道其计算方法,却不知道其中的原因.
今天好好想了下为什么发送方以反码相加,而在接收方能得到检验字段全为1的结果,现总结如下:
所谓反码相加就是取反相加,将产生的进位再加到低位. 如:
0101 + 0111 取反后相加为 1010 + 1000 = 10010 将产生的进位(此外为最高位的1)加到低位,最终结果为0011.
设集合A为所有n位二进制串构成,现证明集合A对于上述反码相加(以下简称加法)构成一个交换群:
(一) 对A中任意元素a, b, c: 显然有: (a+b)+c = a+(b+c); a+b = b+a;
(二) 对A中任一二进制串a 与 n位全为1的二进制串(设为b) 相加 有结果为 a.
当a不为0时:
(a+b = a-1+b+1 = (a-1)+(b+1))由于b全由1构成故b+1将向n+1位产生进位.低n位为0,即有(b+1)=1. 故a+b=a;
当a为0时,显然成立.
即b(n位全为1的二进制串)为单位元.
(三) 显然对A中任一元素a:
a+(~a) = b, (~a为a的反码),即~a为a的逆元.
由上可知A为交换群.
即发送方的检验字段为(~a+~b+~c+~d....);
接收方将检验数据为(a+b+c+d...+(~a+~b+~c+~d+...)) = b(单位元),即全为1.
NOTES: 任何进制对于此种加法都构成可交换群.
浙公网安备 33010602011771号