找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2591|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

IP協(xié)議層的發(fā)送端校驗(yàn)算法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 16:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
感謝百度,提供了算法
uint buff[10]={0x4500,0x002c,0x66c9,0x0000,0x3f11,0x0000,0xc0a8,0x0101,0xc0a8,0x0159};
/*
     一下算法源于百度,感謝再感謝!!
     計(jì)算對(duì)IP首部檢驗(yàn)和的算法如下:  
   (1)把IP數(shù)據(jù)包的校驗(yàn)和字段置為0;
 。2)把首部看成以16位為單位的數(shù)字組成,依次進(jìn)行二進(jìn)制求和
        (注意:求和時(shí)應(yīng)將最高位的進(jìn)位保存,所以加法應(yīng)采用32位加法);
  (3)將上述加法過程中產(chǎn)生的進(jìn)位(最高位的進(jìn)位)加到低16位
       (采用32位加法時(shí),即為將高16位與低16位相加,之后還要把該次加
         法最高位產(chǎn)生的進(jìn)位加到低16位)
  (4)將上述的和取反,即得到校驗(yàn)和。


   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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表