简介
计算IP数据报的检验和方法:
1.把检验和字段置为0.
2.对首部中每个16bit进行二进制反码求和
3.结果存在检验和字段中
当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码的求和。
由于接收方在计算过程中包含了发送方存在首部中的检验和,
因此如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1.
如果结果不不是全1,那么IP久丢弃收到的数据报,但是不生成差错报文,
由上层去发现丢失的数据报并进行重传
发送方例子
IP检验和检查的是IP头部字段,所以先拿到IP首部的16进制码,以16bit为一组得到下面的数值.并且把校验和字段设置为0.
1.发送方1
4510 0054 7e02 4000 4006 【0000】c0a8 031f c0a8 030e
求和值为:2CAE9
高位溢出为2,0002+CAE9=CAEB 转换为2进制为:1100101011101011
反码为:11010100010100 转为十六进制:3514
接收方例子
1接收方: IP首部校验和主要是针对IP首部看成16bit为单位的数字组成
,依次进行二进制求和,然后得出反码
0x4500 0x0040 0x40d2 0x4000 0x8006 0xD272 0xc0a8 0x0301 0x2762 0xfc5c
求和为
3FFFC
高位溢出值为3
FFFC+0x0003=FFFF,转换为2进制为:1111111111111111
反码为:0