我遇到了以下创建Internet校验和的示例:
以示例IP标头
45 00 00 54 41 e0 40 00 40 01 00 00 0a 00 00 04 0a 00 00 05
:
- 将这些字段加在一起将产生两个补数之和
01 1b 3e
。- 然后,要将其转换为一个补码,会将结转位添加到前16位:
1b 3e + 01 = 1b 3f
。- 最后,取一个总和的补数,得出校验和值
e4c0
。
我想知道如何将IP标头加在一起以获得01 1b 3e
?
答案 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处查看数据包头校验和的计算方式。