ICMP回声校验和

Ros*_*one 8 checksum network-programming icmp

当校验和应该包含数据部分,数据部分可以是可变大小的,并且无法预测数据大小时,如何计算ICMP回应请求或回复的校验和?

这是关于如何计算ICMP头的校验和的文档.

ICMP标题校验和.16位.从ICMP类型字段开始,ICMP消息的一个补码和的16位补码.当计算校验和时,校验和字段应首先被清除为0.当传输数据包时,计算校验和并将其插入该字段.当接收到数据包时,再次计算校验和并根据校验和字段进行验证.如果两个校验和不匹配则发生错误.

And*_*ndy 8

当发送方计算校验和时,该值将插入到零字段中.然后接收器执行相反的操作,它拉出校验和,将字段归零并计算校验和,并将此字段设置为零.它将计算出的值与其提取的值进行比较.

传输的两侧计算校验和,其中字段为零.

更新

从幻灯片44开始,此Scribd演示文稿中存在如何执行此计算的示例.我还包括下面的相关示例幻灯片.

图9.19显示了一个简单的echo-r​​equest消息的校验和计算示例(见图9.14).我们随机选择标识符为1,序列号为9.消息分为16位(2字节)字.这些单词加在一起,总和得到补充.现在发件人可以将此值放在校验和字段中.

Ping校验和计算

将ICMP头和数据拆分为16位字(校验和字段使用0x0000),得到这些字的总和,然后求和的补码.然后将其插入校验和字段.