新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > IP協議校驗算法程序源碼

        IP協議校驗算法程序源碼

        作者: 時間:2012-05-17 來源:網絡 收藏

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

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

          應廣大讀者的要求給出作者通用的校驗程序:

             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的校驗和計算和數據包的校驗均由上面的子程序完成。不過需要注意的是TCP和UDP的校驗需要加上偽頭標,不然得不到正確的結果,偽頭標違背了協議的分層原則,但這種違背是出于實際需要的,也正體現了TCP/IP協議設計的靈活性。

        tcp/ip相關文章:tcp/ip是什么




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 内丘县| 东乌珠穆沁旗| 平泉县| 黄浦区| 文水县| 育儿| 聂荣县| 荣成市| 平利县| 阳城县| 青岛市| 镇安县| 绥芬河市| 汝城县| 资兴市| 辉县市| 田阳县| 龙州县| 祁东县| 吉安县| 吴桥县| 陕西省| 武功县| 山阳县| 慈利县| 淮安市| 西城区| 金堂县| 德清县| 昭通市| 资溪县| 高邑县| 山东省| 那曲县| 黄浦区| 新安县| 阳朔县| 斗六市| 忻州市| 盘山县| 镇赉县|