青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

ICMP 校驗和(CHECKSUM)

    最近在研究網絡協議,在用raw socket編程時遇到校驗和的問題,發現校驗和用了如下函數:
 1 USHORT checksum(USHORT *buffer, int size)
 2 {
 3     unsigned long cksum=0;
 4 
 5     while(size > 1)
 6     {
 7         cksum += *buffer++;
 8         size -= sizeof(USHORT);
 9     }
10 
11     if(size)
12     {
13         cksum += *(UCHAR *)buffer;
14     }
15 
16     cksum=(cksum >> 16+ (cksum & 0xffff);
17     cksum+=(cksum >> 16);
18     return(USHORT) (~cksum);
19 }
    馬上google,才發現區區的校驗和也如此復雜(參考RFC1071)。馬上翻RFC1071,這個也太專業了,不過勉強可以看懂,按照自己的理解記錄一下,發現我記性越來越差了-_-!。
    ICMP(包括IP等)校驗和操作:

      一、計算校驗和:按2個字節(16位)對齊進行反碼加運算,然后放入校驗和字段(16位)。

      二、檢驗校驗和:與計算校驗和一樣再計算一遍,如果為全1說明正確。

    上面的反碼加我是自己猜的不知道叫什么好,原文中的解釋是(1's complement sum,符號為+')。這個就不懂了,只好按自己理解的寫了。 具體操作是先取反再加,如何有進位,進位要加到最低位上,相當于循環加了。
    一般操作為了提高性能,往往先全部相加,再加上進位,再取反,就如上面的程序里一樣。至于為什么要搞那么復雜,我猜是數學的嚴謹吧。
    下面從數學的角度看這個問題:
     一般的相加肯定要溢出或進位的,那溢出的部分信息就丟掉了。為了保留溢出的信息,需要把進位信息保留下來,也就是移到低位上相加,而這個一般加法是很難實現的,所以需要別的改進后的加法(反碼加)。
    想考慮8位時的情況:
     0xF0 + 0xF0 = 0xE0 + 溢出;
    如何保留溢出位,與最低位先加就得到:
     0xF0 + 0xF0 = 0xE1;
    上面運算是錯誤的,但有什么加法可以時上式成立呢???
    答案就是反碼加(計算校驗和):
     ~0xF0 + (~0xF0= ~0xE1; ==> (0xF0 +' 0xF0 = ~0xE1 = 0x1E), 0x1E就是校驗和。
    檢驗校驗和:
     0xF0 +' 0xF0 +' 0x1E = 0xFF; 校驗時同時計算校驗字節,結果為0xFF,為正確。
    這個方法而且與CPU的字節序無關,具體看那個RFC1071去。
    這個也太繞了,用程序實現基本上效率很低,所以只能走捷徑:) ,貼上校驗代碼:
 1 bool validatechecksum(unsigned short *buffer, int size)
 2 {
 3    unsigned long cksum=0;
 4    
 5    while(size >1
 6    {
 7       cksum+=*buffer++;
 8       size-=sizeof(unsigned short);
 9    }
10   
11    if(size)
12       cksum+=*(unsigned short*)buffer;
13    
14    cksum=(cksum >> 16)+(cksum&0xffff);
15    cksum+=(cksum >>16);
16    
17    return ((unsigned short)cksum == 0xFFFF);
18 }    

參考:http://blog.csdn.net/World7th/archive/2008/12/31/3669278.aspx

posted on 2010-03-28 15:41 gewala 閱讀(6966) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章分類

文章檔案

設計模式 網絡編程

網絡

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品成人一区二区三区| 好吊色欧美一区二区三区四区 | 每日更新成人在线视频| 久久久999精品| 久热精品视频在线| 国产精品国产三级国产aⅴ入口| 欧美天堂亚洲电影院在线观看| 欧美午夜视频在线| 激情久久久久久| 亚洲一区二区三区四区在线观看 | 一区在线播放| 欧美黄色成人网| 一区二区三区四区五区精品| 西西人体一区二区| 欧美1区视频| 国内成人自拍视频| 亚洲在线视频网站| 亚洲国产精品999| 伊人久久久大香线蕉综合直播| 亚洲免费精彩视频| 久久婷婷国产综合精品青草 | 久久黄色小说| 亚洲精品欧美精品| 老妇喷水一区二区三区| 一区二区日韩精品| 亚洲高清不卡av| 国产精品久久综合| 一区二区三区四区国产精品| 亚洲女人小视频在线观看| 欧美日本在线观看| 亚洲国产三级网| 每日更新成人在线视频| 欧美一区二区在线免费播放| 欧美日韩日日骚| 亚洲午夜精品| 久久综合狠狠| 久久国产精品久久久久久久久久| 看片网站欧美日韩| 久久理论片午夜琪琪电影网| 亚洲欧美另类国产| 日韩香蕉视频| av不卡免费看| 欧美日韩一级视频| 欧美大片国产精品| 久久躁日日躁aaaaxxxx| 午夜精品www| 亚洲免费视频在线观看| 日韩写真视频在线观看| 久久裸体视频| 国产日韩欧美一区| 久久久久国产一区二区| 久久蜜桃精品| 久久综合成人精品亚洲另类欧美| 国产精品久久久久av免费| 亚洲人成网站777色婷婷| 欧美日韩免费高清一区色橹橹| 欧美va亚洲va日韩∨a综合色| 欧美成人视屏| 亚洲综合色丁香婷婷六月图片| 蜜臀av一级做a爰片久久| 久久婷婷国产麻豆91天堂| 国产情人综合久久777777| 久久久欧美一区二区| 国产区精品视频| 欧美亚洲一区二区三区| 欧美伊人久久久久久久久影院| 久久精品国产99精品国产亚洲性色| 亚洲欧美日韩精品久久亚洲区| 久久久一本精品99久久精品66| 久久精品卡一| 黑人巨大精品欧美黑白配亚洲| 欧美在线免费视屏| 中文欧美日韩| 久久精品视频亚洲| 久久综合久久美利坚合众国| 在线观看国产日韩| 久久一区二区三区av| 欧美不卡视频一区| 亚洲靠逼com| 欧美午夜免费电影| 亚洲欧美中文日韩在线| 日韩亚洲精品电影| 欧美日韩精品免费观看| 欧美jjzz| 一本色道久久综合一区| 欧美在线亚洲综合一区| 欧美高清视频在线| 99国产精品视频免费观看| 欧美午夜不卡| 欧美亚洲一区二区在线观看| 欧美暴力喷水在线| 99精品视频免费观看| 国产精品久久久久久久久免费| 欧美一区二区三区视频| 欧美福利视频在线观看| 99国产精品一区| 国产婷婷色一区二区三区| 久久影视精品| 一区二区三区欧美视频| 久久久综合网| 99国产精品视频免费观看| 国产日韩欧美精品综合| 欧美黄色一区二区| 欧美黄色精品| 欧美一区二区三区久久精品| 在线观看成人小视频| 欧美性猛交一区二区三区精品| 午夜精品网站| 一本色道久久综合亚洲精品不卡| 久久嫩草精品久久久精品| 99国产精品久久久久久久| 国产一区自拍视频| 欧美日韩成人网| 久久一综合视频| 亚洲一区二区影院| 午夜精品一区二区三区电影天堂| 亚洲国产成人不卡| 欧美承认网站| 久久精品国产v日韩v亚洲| 在线亚洲一区二区| 欧美一区二区三区日韩| 亚洲免费观看高清完整版在线观看熊 | 亚洲在线国产日韩欧美| 亚洲三级国产| 欧美日韩在线播放三区| 久久人人97超碰国产公开结果| 亚洲图片欧洲图片av| 久久精品1区| 亚洲欧美www| 一区二区三区久久久| 亚洲乱码视频| 亚洲日本成人| 欧美日韩一区免费| 欧美顶级艳妇交换群宴| 久久精品国产清自在天天线 | 欧美激情五月| 久久综合亚洲社区| 久久国产精品毛片| 久久精品成人一区二区三区| 亚洲综合日韩在线| 午夜激情一区| 香蕉乱码成人久久天堂爱免费 | 国产乱码精品一区二区三区不卡| 久久成人资源| 欧美一区二区三区电影在线观看| 亚洲专区免费| 性做久久久久久久久| 亚洲免费在线视频| 午夜伦欧美伦电影理论片| 亚洲影院免费| 欧美在线观看视频一区二区三区| 欧美一区二区视频97| 欧美在线视频播放| 久久乐国产精品| 免费的成人av| 欧美日韩午夜激情| 国产精品视频一区二区高潮| 六月婷婷一区| 欧美激情视频给我| 久久国产一区二区三区| 久久九九热免费视频| 久久亚洲精品视频| 欧美巨乳在线观看| 国产精品久久久久久av下载红粉| 国产精品免费在线 | 欧美三区在线| 国产日韩欧美精品综合| 一区二区亚洲欧洲国产日韩| 亚洲理论电影网| 欧美一级视频精品观看| 老色鬼精品视频在线观看播放| 欧美高清一区| 亚洲图片在区色| 狂野欧美性猛交xxxx巴西| 欧美日韩喷水| 黄色精品一二区| 99精品欧美一区| 久久疯狂做爰流白浆xx| 亚洲一区二区三区激情| 久久精品一区二区三区不卡牛牛| 久热精品在线| 99人久久精品视频最新地址| 欧美伊人久久久久久午夜久久久久| 久久婷婷国产综合精品青草| 欧美日韩国产美女| 国内一区二区在线视频观看| 亚洲精品欧美激情| 欧美自拍偷拍| 亚洲精品自在久久| 久久精品日韩一区二区三区| 欧美日韩亚洲一区二区三区四区| 国产一区久久久| 亚洲视频一区| 亚洲电影免费观看高清| 性做久久久久久久免费看| 欧美成人一品| 在线播放中文字幕一区| 欧美一级午夜免费电影| 亚洲精品国产品国语在线app| 性欧美精品高清|