|||
为了进一步减小计算检验和的工作量,IP首部的检验和不再采用复杂的CRC检验码而采用下面简单的计算方法:在发送方,先把IP数据报划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报。否则,即认为出错,并将此数据报丢弃。
注:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位,加到下一列。若最高位相加后产生进位,则最后得到的结果要加1.(谢希仁 编著 计算机网络 第五版)
有些博文中说是进行异或运算,总觉得不严谨,不知道是怎么得出的这个结论。
比如:
11011
异或 01000
10011
但 11011
反码运算 01000
00011
+ 00001
00100
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-24 20:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社