IP数据报首部校验和算法说明



《IP数据报首部校验和算法说明》


1.  IP数据报首部校验主要用于保证IP数据报头的完整性。

2.  该算法为“反码求和校验”,”反码求和校验“是一个专用术语,区别于先求反码再求和。

3.  该算法过程如下文所示例。

    => 发送方
    i.   将校验和字段初始化为0,然后将IP报头按照16bit分成多个单元,如果报头长度不是
        16bit整数倍,则填充0;
   
    ii.  对上述各个单元(16bit)采用“反码求和”运算,即将各个单元直接相加,高位溢出位
 加到最低位(不同于通常补码运算是直接丢掉溢出位),将得到的和取其反码,填入校验和字段即可;

    iii.  IP数据报头发送完毕后,接着发送数据报内容;


    => 接收方 

    i.   将校验和字段初始化为0,然后将IP报头按照16bit分成多个单元,如果报头长度不是

         16bit整数倍,则填充0;
   
    ii.  对上述各个单元(16bit)采用“反码加法”运算,包括发送方发送的校验和字段,
         然后检查得到的结果每个数据位是否全部为1;

    iii.  如果满足,则进行下步处理,否则表明该帧数据报在传输过程中发生错误,舍弃该帧数据;


4.  “反码求和”运算示例


   例如,位宽为3bit的两个数值100b和101b进行反码求和运算。

    i.   100b + 101b = 1_001b,高位存在溢出;

    ii.  高位溢出的1,加到最低位。即 001b + 1b(溢出位) = 010b;

    iii. 上述两数反码求和结果为010b,然后取反,为101b即为校验和发送给接收端;

说明:在接收端会接收到三个数值(包含校验和),100b, 101b, 101b。

   按照“反码求和”运算,结果为

   100b + 101b + 101b = 1_110b, 溢出位加到最低位后,结果为111b,每个数据位全部为1;

 (为什么全部为1,不难理解,原码010b与反码101b求和,其结果各数据位必然为1)


备注:参考博客文章链接为http://www.360doc.com/content/15/0910/23/27653981_498345868.shtml

     








  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值