FAQ--为什么两台设备之间建立OSPF邻居状态init到2way之间交互的报文的checksum是一样的?

发布时间:  2014-11-21 浏览次数:  119 下载次数:  0
问题描述

如上图,当LSW1与LSW2建立ospf邻居的时候,开启debugging ospf  packet hello brief,会发现init之后报文的checksum是一样的,如下:


OSPF的checksum会对OSPF报文头部和数据部分做校验,但是报文的源地址都不一样,为什么checksum会是一样的呢?

解决方案
通过抓包可以看出,报文里面除了Source OSPF Router和Active Neighbor不一样以外,其他报文字段都是一样的。


而OSPF的checksum对OSPF报文头部和数据部分做的是奇偶校验。回顾下奇偶校验的定义:

奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,若用偶校验,则当接收端收到这组代码时,校验“1”的个数是否为偶数,从而确定传输代码的正确性。

由于这两个报文只是对调了两个ip地址的位置,但是换算成二进制数,1的个数总和没有变化,所以他们奇偶校验的结果是一样的。


END