码迷,mamicode.com
首页 > 其他好文 > 详细

IP首部校验和的计算

时间:2016-11-24 15:03:39      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:...   单位   版本   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首部合法。

IP首部校验和的计算

标签:...   单位   版本   ip首部   检验和   偏移量   版本号   部分   长度   

原文地址:http://www.cnblogs.com/cgc0415/p/6097282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!