• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    IP協(xié)議校驗(yàn)算法程序源碼

    作者: 時(shí)間:2012-05-17 來(lái)源:網(wǎng)絡(luò) 收藏

      采用統(tǒng)一的,其計(jì)算比較簡(jiǎn)單:設(shè)和初值為0,然后對(duì)數(shù)據(jù)每16位求異或,結(jié)果取反,便得和。校驗(yàn)時(shí)將數(shù)據(jù)(含校驗(yàn)和)按同樣的求和,結(jié)果為0則數(shù)據(jù)正確,不為0表示通訊出錯(cuò),需要丟棄該數(shù)據(jù)包。這樣能簡(jiǎn)化校驗(yàn)程序設(shè)計(jì),提高TCP/的效率。

    本文引用地址:http://www.czjhyjcfj.com/article/154924.htm

      應(yīng)廣大讀者的要求給出作者通用的校驗(yàn)程序:

         typedef unsigned int    __u16;typedef unsigned long   __u32;__u16 checksum(__u16 xdata *dp, __u16 length){__u32 sum = 0;__u16 len = length >> 1;while(len-- > 0)sum += *dp++;if(length  1)sum += (*dp  0xFF00);sum = (sum >> 16) + (sum  0xFFFF);sum += (sum >> 16);len = sum  0xFFFF;return(~len);}

      所有TCP/IP的校驗(yàn)和計(jì)算和數(shù)據(jù)包的校驗(yàn)均由上面的子程序完成。不過(guò)需要注意的是TCP和UDP的校驗(yàn)需要加上偽頭標(biāo),不然得不到正確的結(jié)果,偽頭標(biāo)違背了協(xié)議的分層原則,但這種違背是出于實(shí)際需要的,也正體現(xiàn)了TCP/IP協(xié)議設(shè)計(jì)的靈活性。

    tcp/ip相關(guān)文章:tcp/ip是什么




    評(píng)論


    相關(guān)推薦

    技術(shù)專(zhuān)區(qū)

    關(guān)閉
    主站蜘蛛池模板: 德安县| 鹤壁市| 昌邑市| 万源市| 樟树市| 天峻县| 建阳市| 嘉善县| 青川县| 新乡县| 云南省| 哈尔滨市| 尚志市| 丽水市| 阜康市| 萍乡市| 龙南县| 化隆| 安义县| 县级市| 颍上县| 襄城县| 永德县| 绵竹市| 阿荣旗| 瑞安市| 临邑县| 苏州市| 房产| 浦县| 海阳市| 江华| 定结县| 胶州市| 元氏县| 襄城县| 卓尼县| 剑阁县| 大化| 阿勒泰市| 花莲县|