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首部合法。

转载于:https://www.cnblogs.com/cgc0415/p/6097282.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值