2011-02-06 51 views
2

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

+0

因为问题中没有C代码,所以删除`c`标记并添加`networking`标记。 =) – mpontillo 2011-02-06 02:59:47

回答

9

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

RFC 792报价页面14(回声或回应应答消息):

校验和是16位的人的开始与所述ICMP类型ICMP消息中的所述一个的 补体总和的补体。 为了计算校验和,校验和字段应该为零。 如果总长度为奇数,则接收到的数据将填充一个 八位字节以计算校验和。这个校验和可能在将来被替换为 。

+0

参考请 – 2011-02-06 01:01:48