首部检验和怎么计算?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了首部检验和怎么计算?相关的知识,希望对你有一定的参考价值。
参考技术AIP首部校验和的计算方法:
把校验和字段清零,对每16位(2字节)进行二进制反码求和, 反码求和的意思是先对每16位求和,再将得到的和转为反码。
IP数据报校验只对首部进行校验,不对数据部分进行校验。把首部看成16位为单位的数字组成,依次进行二进制反码求和,再把结果依次存入校验和字段中即可。
扩展资料:
将发送的进行检验和运算的数据分成若干个16位的位串,每个位串看成一个二进制数,这里并不管字符串代表什么,是整数、浮点数还是位图都无所谓。将IP、UDP或TCP的PDU首部中的检验和字段置为0,该字段也参与检验和运算。
对这些16位的二进制数进行1的补码和(one's complement sum)运算,累加的结果再取反码即生成了检验码。将检验码放入检验和字段中。
其中1的补码和运算,即带循环进位(end round carry)的加法,最高位有进位应循环进到最低位。反码即二进制各位取反,如0111的反码为1000。
参考资料来源:百度百科-效验和
IP数据报的首部检验和
如图所示
按单位(半字节、字节、双字节)换算,然后以双字节(16位整型,Big Endian)为单位进行累加。最后取反。例如:
第一个域长度是4位,内容是十进制的4,二进制是0100;第二个域长度是4位,内容是十进制的5,二进制是0101;第三个域长度是8位,内容是十进制的0,二进制是0000 0000。
因此第一个16位值是 0100 0101 0000 0000。
第四个域长度是16位,内容是十进制的28,二进制是 0000 0000 0001 1100。
因此第二个16位值是 0000 0000 0001 1100。
……以此类推。 参考技术A 好处是,可以减少IP数据报的处理复杂度,提高数据报的处理速度。坏处是,这样做实际上把检验的任务交给了上层协议(如传输层),增加了上层协议的复杂性。
以上是关于首部检验和怎么计算?的主要内容,如果未能解决你的问题,请参考以下文章