互联网校验和-将十六进制数字加在一起进行校验和

时间:2019-10-26 03:37:29

标签: python networking hex

我遇到了以下创建Internet校验和的示例:

  

以示例IP标头45 00 00 54 41 e0 40 00 40 01 00 00 0a 00 00 04 0a 00 00 05

     
      
  1. 将这些字段加在一起将产生两个补数之和01 1b 3e
  2.   
  3. 然后,要将其转换为一个补码,会将结转位添加到前16位:1b 3e + 01 = 1b 3f
  4.   
  5. 最后,取一个总和的补数,得出校验和值e4c0
  6.   

我想知道如何将IP标头加在一起以获得01 1b 3e

2 个答案:

答案 0 :(得分:1)

IP报头与4位十六进制数加在一起。 即添加的前3个数字是0x4500 + 0x0054 + 0x41e0 + ...

答案 1 :(得分:1)

将IP标头拆分为16位。

45 00 
00 54 
41 e0 
40 00 
40 01 
00 00 
0a 00 
00 04 
0a 00 
00 05

总和为01 1b 3e。您可能想在https://en.m.wikipedia.org/wiki/IPv4_header_checksum处查看数据包头校验和的计算方式。