资源描述:
《《计算机网络》校验和_文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机网络课程设计实验报告题目:计算校验和班级:2009级教育技术学一班作者:郭建勋200930680106林泽涛200930680113张丽丽200930680127指导老师:完成时间:2011年12月16日华南农业大学信息学院目录1、题目概述31.1题目:31.2题目要求32、开发的基础知识32.1计算校验和32.2一些编码技术可以提高校验和的计算速度43、设计思路53.1数据的输入方式53.2校验和的计算54、程序流程图75、程序源代码86、开发过程117、程序运行情况118、总结128.1林泽涛的心得体会128.2郭建勋的心得体会121、题目概述1.1题目:校验和的计
2、算过程分为三个步骤:数据文件的输入,校验和的计算以及效验结果的输出。计算校验和应用最为普遍的是端循环进位法:将数据按一定数位进行累加,最高位的进位则循环加入最低位。待教研的数据按16位为一个单位相加,采用端循环进位,最后对所得16位的数据取反码。因为待教研的数据是以字节方式分隔的,所以为了方便,将16位的数据分成高8位和低8位分别处理。该算法的代码如下:endaroundcarry(int&highbyte,int&lowbyte){while(highbyte>0xff
3、
4、lowbyte>0xff){lowbyte+=(highbyte>>8);highbyte=highb
5、yte&0xff);highbyte+=(lowbyte>>8);lowbyte=lowbyte&0xff);}}1.2题目要求课程设计要求:根据上面介绍的算法,编制程序为给定数据计算校验和。1)以命令行形式运行:check_suminfile其中check_sum为程序名,infile为输入数据文件名。2)输出:数据文件的校验和。2、开发的基础知识2.1计算校验和有很多数学方法可以用来提高校验和的计算速度,下面我们将就此展开讨论。2.1.1交换性与结合性因为校验和主要考虑被校验数据中所包含字节数量的是奇数还是偶数,所以校验和的计算可以以任意顺序进行,甚至可以把数据进行分组后
6、再计算。例如,用A、B、C、D,……,Y,Z分别表示一系列八位组,用[a,b]这样形式的字节来表示a*256+b的整数,那么16位校验和就可以通过以下形式给出:[A,B]+’[C,D]+’……+’[Y,Z][1][A,B]+’[C,D]+’……+’[Z,0][2]在这里,+’代表1补数加法,即将前面的16位校验和按位取反。[1]可以以([A,B]+’[C,D]+’……+’[J,0]+’([0,K]+’……+’[Y,Z])[3]的形式进行计算。2.1.2字节顺序的自主性打破被校验数据中的字节顺序仍可以计算出正确的16位校验和。例如,我们交换字节组中两字节的顺序,得到[B,A]+
7、’[D,C]+’……+’[Z,Y][4]所得到的得结构与[1]式是相同的(当然结果也是要进行一次反转的)。为什么会是这样呢?我们发现两种顺序获得的进位是相同的,都是从第15位到第0位进位以及从第7位到第8位进位。这也就是说,交换字节位置只是改变高低位字节的排列顺序,但并没有改变它们的内在联系。因此,无论底层的硬件设置中对字节的接收顺序如何,校验和都可以被准确地校验出来。例如,假设校验和是以主机序(高位字节在前低位字节在后)计算的数据帧,但以网络序(低位字节在前高位字节在后)存放在内存中。每一个16位的字中的字节在传送过程中都交换了顺序,在计算校验和之后仍会先交换位置再存入内存
8、,这样就与接受到的原本以网络序存储的数据帧中的校验和项保持一致了。2.1.3并进行计算某些机器的字处理长度是16位的倍数,这样可以提高它的计算速度。由于加法所具有的结合性,我们没有必要按照顺序对每个字节进行累加。相反,我们可以利用这一特点对它们进行并行累加。并行地计算校验和只是增加了每次累加的信息长度。例如,在一个323位的机器上,我们可以一次增加4个字节,即[A,B,C,D]+’……。计算结束后再把累加和“折叠”起来,把一个32位的数值变为16位,这样产生的新的进位也要循环累积起来。此外,在此仍不考虑字节顺序的问题,我们可以用’[D,C,B,A]+’……或[B,A,D,C]
9、+;……这样的顺序来计算校验和,最终再通过交换16位校验和中的字节序来得到正确的值。这些改变顺序的方法都是为了让所有的偶数字节进入一个校验和字节,所有的奇数字节进入一个校验和字节。2.2一些编码技术可以提高校验和的计算速度2.2.1延迟进位法这种方法在主要的累加循环结束之后再把进位累加进和值。其实现方式就是用32位的累加器获得16位校验和,这样溢出就产生在高16位上。这种方法避免了累加器中进位传感器机构的设置,但是它要求的容量是原来的累加器容量的两倍,因此它更多地依赖于硬件条件。2.2.2反向循环法这种