计算校验和ipv4包

时间:2016-11-08 00:33:50

标签: networking ip ipv4

如何计算收到的样本ipv4数据包的校验和:

4500 062A 42A1 8001 4210 XXXX C0A8 0001 C0A8 0003

其中xxxx是需要随数据包一起发送的校验和。

我是网络新手,我无法找到准确的信息。

谢谢!

到目前为止,这是我发现的: 转换为二进制,添加,然后是总和的补码,一旦转换回来应该是校验和?但我无法做到这一点:

4500 062A 42A1 8001 4210 XXXX C0A8 0001 C0A8 0003

4500 - 0100 0101 0000 0000

062A - 0000 0110 0010 1010

42A1 - 0100 0010 1010 0001

8001 - 1000 0000 0000 0001

xxxx - 0000

C0A8 - 1100 0000 1010 1000

0003 - 0000 0000 0000 0011

添加所有内容:

4500 - 0100 0101 0000 0000 062A - 0000 0110 0010 1010

19242 - 0100101100101010 //第一个结果 42A1 - 0100 0010 1010 0001

36299 - 01000110111001011 //第二个结果 8001 - 1000 0000 0000 0001

69068 - 010000110111001100 //第三个结果 C0A8 - 1100 0000 1010 1000

118388 - 011100111001110100 0003 - 0000 0000 0000 0011

118391 - 011100111001110111 选取118391-100011000110001000

的补码

- > 23188 - 100011000110001000

23188校验和也是如此

1 个答案:

答案 0 :(得分:-1)

RFC 791, INTERNET PROTOCOL

中描述了IPv4标头校验和
  

标头校验和:16位

     

仅限标题的校验和。由于一些标题字段改变(例如,   生存时间),这是重新计算和验证的每个点   互联网标题已处理。

     

校验和算法是:

     

校验和字段是该字段的16位补码   标头中所有16位字的补码和。出于...的目的   计算校验和时,校验和字段的值为零。

     

这是一个简单的计算校验和和实验证据   表示它是足够的,但它是临时的,可以替换为   CRC程序,取决于进一步的经验。

此算法详见RFC 1071, Computing the Internet Checksum,由RFC 1141, Incremental Updating of the Internet Checksum更新,由RFC 1624, Computation of the Internet Checksum via Incremental Update更新。