第25卷 第4期
2003 年 4 月
武 汉 理 工 大 学 学 报
JOURN AL OF WUHAN UNIVERSITY OF TECHNOLOGY
Vol
.2 5
No
.4
Mar
. 2002
文章编号 :1671-4431(2002)03-0030-05
IPv
4 头部校验和的反码算法
张润宇
(仰恩大学)
张华新 张帆
(武汉理工大学)
摘 要 : 给出了正整数反码加法和补码加法间关系的 2 个定理。在此基础上 ,给出了
IPv
4 头部校验和 2 个反码算法。
关键词 :
IPv
4; 头部校验和 ; 反码算法
中图分类号 :
TP
301 .6 文献标识码 :
A
收稿日期 :2001-10-27 .
作者简介 :张润宇(1933-) ,男 ,副教授 ;泉州 ,仰恩大学(362014).
1 校验和综述
所谓校验和是把 8 位字节视为整数 ,然后把该 8 位字节构成的序列求和所计算出的小的整数值。校验
和用于检测当 8 位字节序列从一计算机向另一计算机传送时所产生的差错。一般校验和由协议软件计算 ,
当传送时把它附加在分组中。接收时协议软件重新计算校验和 ,并与发送的校验和进行比较 ,从而达到核对
分组内容的目的。许多
TCP
/
IP
协议采用反码运算计算 16 位校验和 ,分组中所有整数字段均按网络字节次
序存储。
头部校验和用于确保头部数值的完整性。
IP
校验和把头部视为按网络字节次序的 16 位整数序列 ,采
用反码运算把它们累加起来 ,然后再取结果的反码。为达到计算校验和的目的 ,假定头部校验和字段内容为
零。
指出下面一点是重要的 ,即校验和只适用于
IP
头部 ,而不适用于数据。把头部校验和和数据校验和分
开,有优点也有缺点。因为和数据相比头部通常只占较少 8 位字节 ,把校验和分开 ,路由器只需计算头部校
验和 ,从而缩短了路由器处理时间。把校验和分开也使高层协议可以选择自己的数据校验和模式。主要的
缺点是迫使高层协议加上其自己的校验和 ,不然就要冒损坏数据不被查出就放行的风险。
头部校验和可用来检测路由器内存坏字引起的差错。采用反码运算比标准加法更健壮。应该指出 ,头
部校验和每次跳跃(在每个路由器)必须重新计算 ,因为至少有一个字段总是改变(生命期字段) ,不过可以采
用技巧加速计算。
IPv
4 有头部校验和 ,但
IPv
6 是否要校验和有争议。反对校验和的人说 ,任何应用程序如果确实关心数
据的完整性 ,无论如何也要有传输层校验和 ,除了数据链路层校验和之外 ,在
IP
层再加另外一个校验和太过
分了。而且经验指出 ,
IP
校验和计算是
IPv
4 的主要开销。最后反校验和阵营取得了胜利 ,
IP v
6不再有校验
和。
2 补码加法和反码加法
补码加法和反码加法的例子如图 1 所示。先看补码加法。前 4 个例子得出正确结果 ,例(2)、(4)和(6)
有进位 ,在例(2)和例(4)中予以忽略。例(5)和例(6)溢出。发生溢出时 ,
ALU
须发出信号 ,以便不再采用给
出的结果。溢出的规则 :两数相加 ,它们俩或全为正或全为负 ,溢出发生在当且仅当结果为相反符号。例(5)