ICMP标头校验和是否也包含数据?

时间:2011-02-06 00:15:31

标签: networking header checksum raw-sockets icmp

作为家庭作业的一部分,我必须在Linux中编写一个C程序,使用原始套接字生成ICMP回复ICMP Echo请求。 ICMP数据包中的数据是否也必须包含在校验和中?或者我应该只计算标题的校验和吗?

1 个答案:

答案 0 :(得分:10)

必须从HEADER + DATA计算。执行计算时,让校验和为零,然后将其替换。

RFC 792

引用第14页(回声或回声回复消息)
  

校验和是16位的校验和的补码     补充以ICMP类型开头的ICMP消息的总和。     为了计算校验和,校验和字段应为零。     如果总长度是奇数,则用一个填充接收的数据     用于计算校验和的零八位字节。这个校验和可能是     将来取代。