找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1974|回复: 0
打印 上一主题 下一主题
收起左侧

IP协议层的发送端校验算法

[复制链接]
跳转到指定楼层
楼主
ID:82781 发表于 2015-6-13 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
感谢百度,提供了算法
uint buff[10]={0x4500,0x002c,0x66c9,0x0000,0x3f11,0x0000,0xc0a8,0x0101,0xc0a8,0x0159};
/*
     一下算法源于百度,感谢再感谢!!
     计算对IP首部检验和的算法如下:  
   (1)把IP数据包的校验和字段置为0;
  (2)把首部看成以16位为单位的数字组成,依次进行二进制求和
        (注意:求和时应将最高位的进位保存,所以加法应采用32位加法);
  (3)将上述加法过程中产生的进位(最高位的进位)加到低16位
       (采用32位加法时,即为将高16位与低16位相加,之后还要把该次加
         法最高位产生的进位加到低16位)
  (4)将上述的和取反,即得到校验和。


   2012年3月3日于日照高科园
   按照以上算法便可以!
*/
unsigned long a,b;
uchar i;
   for(i=0;i<10;i++)
   {
   a+=buff[ i]; //变量加
b=a;  //暂存A中
b+=(a>>16)&0x0000ffff; //取高位与地位相加,并且加完了清0高八位
}

    b=~b; //取反

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表