对于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: 任何进制对于此种加法都构成可交换群.


 

posted on 2012-11-21 08:36  maxuths  阅读(133)  评论(0)    收藏  举报

导航