对于一个学习网络协议的新手来说,碰到校验和这个词的时候可能会存在疑惑,看书本上讲的左想右想不知道再讲什么;只要你弄明白IP校验和的原理,I C M P、I G M P、U D P和T C P的校验和也就很好理解了。
上图是一般IP数据报的格式,若仅仅去理解校验和就不必去看这些字段的细节。如果没有在‘选项’里面添加内容,那么前面20字节为IP数据包的首部,IP校验和就是对这10个字(也就是20个字节)求的校验和,校验和说白了就是各个二进制数按位取反再求和(或者求和再按位取反),要注意的是这里的数没有正负之分。求得的校验和放在16bit的校验和字段里面,由于该字段在计算校验和的时候也参与了,为保证校验和计算不受影响,计算之前必须将该字段设置成16bit的0。
当接收到整个IP数据报的时候,再对实际接收到的IP数据报的首部的20个字进行校验和计算,如果数据传输无误,则校验和所有位应该为1(因为除开校验和字段的16bit的校验和结果应该与校验和字段互为一对反码)。
时间: 2024-10-09 01:29:06