当需要计算包含数据部分的ICMP回显请求或回复的校验和时,如果数据部分大小可变且无法预先确定数据大小,该如何操作?
以下是有关如何计算ICMP头部校验和的文档。
ICMP头部校验和。16位。 ICMP消息的一's补码和的一's补码(从ICMP类型字段开始)。在计算校验和时,应首先将校验和字段清除为0。当数据包被传输时,计算校验和并插入此字段。在接收数据包时,再次计算校验和并与校验和字段进行验证。如果两个校验和不匹配,则发生错误。
当需要计算包含数据部分的ICMP回显请求或回复的校验和时,如果数据部分大小可变且无法预先确定数据大小,该如何操作?
以下是有关如何计算ICMP头部校验和的文档。
ICMP头部校验和。16位。 ICMP消息的一's补码和的一's补码(从ICMP类型字段开始)。在计算校验和时,应首先将校验和字段清除为0。当数据包被传输时,计算校验和并插入此字段。在接收数据包时,再次计算校验和并与校验和字段进行验证。如果两个校验和不匹配,则发生错误。
你需要将ICMP报文头和数据拆分成16位字(使用0x0000作为校验和字段),获取这些字的总和,然后获取总和的一补数。然后将这个一补数插入到校验和字段中。图9.19显示了一个简单回显请求消息(参见图9.14)的校验和计算示例。我们随机选择标识符为1,序列号为9。将消息分成16位(2字节)字。将这些字相加,然后取补码。现在,发送方可以将此值放入校验和字段中。