IP首部校驗和的計算


ip抓包結果
0000: 00 e0 0f 7d 1e ba 00 13 8f 54 3b 70 08 00 45 00
0010: 00 2e be 55 00 00 7a 11 51 ac de b7 7e e3 c0 a8
0020: 12 7a

45 00 00 2e----4表示ip版本號為ip第4版;5表示首部長度為5個32 bit字長,即為20字節;00 2e表示ip總長度為46字節,其中ip數據部分為
26字節。
be 55 00 00----be 55表示標識符;00 00表示3 bit標志及13 bit片偏移量;
7a 11 51 ac----7a表示ttl值為122;11表示協議號為17的udp協議;51 ac表示16 bit首部檢驗和值;
de b7 7e e3----表示32 bit 源ip地址為222.183.126.227
c0 a8 12 7a----表示32 bit 目的ip地址為192.168.18.122

校驗和計算

發送前
1、先將校驗和字段置為零
2、對首部以16bit為單位求和
0x4500 + 0x002e + 0xbe55 +0x0000 +...+0x127a = 0x3ae50
對應的二進制: 11 1010 1110 0101 0000
3、將產生的進位加到低四位,即checksum += (checksum >> 32)
得到:1010 1110 0101 0011 即:0xae53
將各位取反,得0101 0001 1010 1100

校驗和:0x51ac

接收數據時
1、對首部以16bit為單位求和
0x4500 + 0x002e +...+0x51ac +...+0x127a = 0x3fffc
(0x3 + 0xfffc) = 0xffff

再取反,即得最終校驗和:0x0000,結果為0說明IP首部合法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM