91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

計算數IP據報的校驗和

發布時間:2020-07-20 11:13:28 來源:網絡 閱讀:353 作者:one979 欄目:網絡安全

IP/ICMP/IGMP/TCP/UDP等協議的校驗和算法都是相同的,算法如下:


在發送數據時,為了計算數IP據報的校驗和。應該按如下步驟:

(1)把IP數據報的首部都置為0,包括校驗和字段。

(2)把首部看成以16位為單位的數字組成,依次進行二進制反碼求和。

(3)把得到的結果存入校驗和字段中。

在接收數據時,計算數據報的校驗和相對簡單,按如下步驟:

 

(1)當接收IP包時,需要對報頭進行確認,檢查IP頭是否有誤,算法同上2、3步,然后判斷取反的結果是否為0,是則正確,否則有錯。


1、發送方

  i)將校驗和字段置為0,然后將IP包頭按16比特分成多個單元,如包頭長度不是16比特的倍數,則用0比特填充到16比特的倍數;

 

  ii)對各個單元采用反碼加法運算(即高位溢出位會加到低位,通常的補碼運算是直接丟掉溢出的高位),將得到的和的反碼填入校驗和字段;

 

  iii)發送數據包。

 

2、接收方

  i)將IP包頭按16比特分成多個單元,如包頭長度不是16比特的倍數,則用0比特填充到16比特的倍數;

 

  ii)對各個單元采用反碼加法運算,檢查得到的和是否符合是全1(有的實現可能對得到的和會取反碼,然后判斷最終值是不是全0);

 

iii)如果是全1則進行下步處理,否則意味著包已變化從而丟棄之。需要強調的是反碼和是采用高位溢出加到低位的,如3比特的反碼和運算:100b+101b=010b(因為100b+101b=1001b,高位溢出1,其應該加到低位,即001b+1b(高位溢出位)=010b)。



現假如一數據報為45 00 05 D4 CA E0 40 00 75 06 70 D2 CA 62 39 64 C0 A8 00 02

根據IP數據報的格式可以看出它的首部校驗字段為70 D2 它是怎么算出來的呢?

方法:我們把首部校驗字段即70 D2 用0000代替

4500+05D4+CAE0+4000+7506+0000+CA62+3964+C0A8+0002=38F2A

然后把進出來的一位與后4位再進行十六進制加法,8F2A+0003=8F2D

最后用FFFF減去算出來的結果就可以了即FFFF-8F2D=70D2

    



函數代碼如下。

USHORT CheckSum(USHORT *buffer, int size)  

{  

    unsigned long cksum=0;  

    while (size > 1)   

    {  

        cksum += *buffer++;  

        size -= sizeof(USHORT);  

    }  

    if (size)   

    {  

        cksum += *(UCHAR*)buffer;  

    }    

    cksum = (cksum >> 16) + (cksum & 0xffff);  

    cksum += (cksum >>16);  

    return (USHORT)(~cksum);  


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萝北县| 阜宁县| 贵港市| 中方县| 呼玛县| 玛曲县| 海伦市| 新建县| 虞城县| 丹寨县| 甘孜| 太原市| 金门县| 荔波县| 峨眉山市| 稻城县| 尉氏县| 阿城市| 临安市| 油尖旺区| 万州区| 崇义县| 林芝县| 三台县| 汾阳市| 石门县| 无极县| 东明县| 隆林| 象山县| 内黄县| 阜平县| 汝州市| 会泽县| 玉门市| 临西县| 河津市| 遂川县| 奈曼旗| 安达市| 天峻县|