理论教育 2字节校验和计算,结果不超过65535

2字节校验和计算,结果不超过65535

时间:2023-11-22 理论教育 版权反馈
【摘要】:以2字节校验和为例,加法所得的和不会超过65535,即以65535为模进行加法。例中采用1字节校验和、循环进位法。结果取反的好处是,接收方收到IP数据报后,对其首部进行校验和计算,结果为0则正确,结果不为0则错误。图3-4IP数据报中的首部采用校验和进行校验计算IP数据报校验和的程序实例如下。

2字节校验和计算,结果不超过65535

校验和(Checksum)或称检查和,通常用于对数据块的校验,它把数据块中的每一个字节都按二进制加法求和,然后把所求得的和作为监督位。

由于加法求和所得的值可能超出1字节,因此就有各种变通方法,如扩大监督位所占的字节数,这样就有1字节校验和、2字节校验和、3字节校验和之分。但是,扩大监督位所占的字节数并不能解决根本问题。因此,在各字节校验和的基础上又有下面两种方法。

1)按模加,不考虑高位的进位。以2字节校验和为例,加法所得的和不会超过65535,即以65535为模进行加法。

2)循环进位,把高位的进位当做最低位再加进去。

下面以传送字符串“CA”的ASCII码为例,说明校验和的形成方法。例中采用1字节校验和、循环进位法。

978-7-111-31053-2-Chapter03-6.jpg

校验和方法是因特网网络协议TCP/IP使用的校验方法,不过采用了一些变通处理。IP数据报、TCP报文段和UDP包均采用16位相加,循环进位,其和再取反的方法。(www.daowen.com)

IP数据报的格式如图3-4所示,各字段的含义这里不作介绍。不包括数据字段的其他所有字段组成了IP数据报的首部。为方便计算,首部校验和字段的初始值先设置为0,然后对整个首部求和,不包括数据字段。计算方法是将首部按16bit一组(将整个首部看成是由一串16bit的字组成的)进行二进制求和,采用循环进位,最后所得的结果取反后放入16位的首部校验和字段中。结果取反的好处是,接收方收到IP数据报后,对其首部进行校验和计算,结果为0则正确,结果不为0则错误。处理器判断0要比两个数的比较运算快捷,尽管微不足道,但对路由器的性能提高有些帮助,因为每个路由器收到IP数据报后都要进行校验和运算,而路由器是网络的瓶颈。

978-7-111-31053-2-Chapter03-7.jpg

图3-4 IP数据报中的首部采用校验和进行校验

计算IP数据报校验和的程序实例如下。IP首部的长度不固定,而且可能不是16bit的整数倍,实际长度由首部长度字段给出,在程序中用size表示。整个IP数据报放在由指针buffer指向的缓冲区。

978-7-111-31053-2-Chapter03-8.jpg

978-7-111-31053-2-Chapter03-9.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈