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

Apo*_*yer 2 networking checksum header raw-sockets icmp

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

jwe*_*ich 10

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

引用RFC 792中的第14页(Echo或Echo Reply Message):

校验和是从ICMP类型开始的ICMP消息的一个补码和的16位补码.为了计算校验和,校验和字段应为零.如果总长度是奇数,则用一个零的零填充接收的数据以计算校验和.此校验和可能在将来被替换.