2

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

4

1 回答 1

10

它必须由 HEADER + DATA 计算得出。执行计算时,让校验和为零,然后替换它。

引用RFC 792的第 14 页(Echo 或 Echo 回复消息) :

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

于 2011-02-06T00:52:39.713 回答