幻想小说网 酷文学 深夜书屋 叮当小说网 找小说网 无限小说网 红尘小说网

网际校验和算法(Internet CheckSum)

网际校验和算法

                                          佟强  2008.10.20

反码算数运算:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1

网际校验和算法

在发送方,先把被校验的数据划分为许多16位字的序列。如果数据的字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。用反码算数运算把所有16位字相加后,然后再对和取反码,便得到校验和。

在接收方,将收到的数据报(包括校验和字段),将所有16位字再使用反码算数运算相加一次,将得到的和取反,即得出校验和的计算结果。如果数据报在传输过程中没有任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。

“A,B,C,...,Y,Z”分别表示一系列8位组,用[A,B]这样形式的字节组来表示A*256+B的整数,那么该字节序列的反码和就可以通过以下两种表达式之一给出:

[A,B] +' [C,D] +' ... +' [Y,Z]

[A,B] +' [C,D] +' ... +' [Z,0]

其中,+' 表示反码算数运算相加,第一个公式适用于偶数个字节的校验和,第二个公式适用于计算奇数个字节的校验和。

posted on 2008-10-20 21:18  张云临  阅读(1679)  评论(0编辑  收藏  举报

导航