付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈阳理工大学课程设计专用纸Noiii学生姓名林娟班级学号1103050401专业计算机科学与技术课程设计题目计算校验和评语组长签字:成绩日期2012年12月3日1II|<审>|>441I|kI 丄课程设计任务书学院信息科学与工程学院专业计算机科学与技术学生姓名林娟班级学号1103050401课程设计题目计算校验和实践教学要求与任务:本课程设计的主要意图是,通过计算机网络中的计算校验和来了解计算机是怎么样判断接 收数据的正确与错误。同时也让我们更进一步的了解计算机的一般思想,从而了解计算校验和的 目的与作用。最后我们要学会计算校验和,了解和扩展计算机网络的知识面。校验和的作用就
2、是 保证数据传送的正确性。本次课程设计的主要内容包括以下几个方面:课程设计目的,通过这一点我们可以了解我们 为什么要计算校验和,它的作用和目的是什么,从而学会计算校验和。课程设计的要求,根据下 面课程设计中的计算方法编制程序为给定数据计算检验和。计算校验和的相关知识,如交换性与 结合性,字节顺序的自主性,并行计算以及实例,以及给出一些编码技术可以提高校验和的速度。 课程设计分析,主要是从数据的输入方式,校验和的计算流程图。工作计划与进度安排:第15周星期一:设计任务分析和总体设计星期二:软件算法和流程设计星期二:软件编码实现星期四:软件总体调试星期五:交课程设计报告、答辩、验收程序指导教师:2
3、012年12月 日专业负责人:2012年12月 日学院教学副院长:2012年12月 日沈阳理工大学15错误!未定义书签。1错误!未定义书签。212313133摘要1课程设计目的2课程设计要求3相关知识4课程设计分析5程序代码6运行结果与分析7实验体会8参考文献沈阳理工大学课程设计专用纸No91课程设计目的IIII网络上的信号最终,都是通过物理传输进行传输线路进行传输的,如果高层没有采用差错控制,那II么物理层传输的数据信号是可能有差错的。为了保证数据的正确性,在物理层的基础,计了数据层。设I计数据链路层的主要作用就是在原始的、有差错的线路改进成逻辑上无差错的数据链路,以向网络层提I供高质量的服
4、务。本课程设计主要通过一个简单例子使学生了解网络协议中校驵和的计算过程,以及设i置校验和的作用。N<1目前,进行了差错检测和差错控制的主要方法是:在需要传输的数据分组后面加上一定的冗余信息:II通常都是通过对所发送的数据应用某种算法进行计算而得到的。数据的接收方在接收到数据后进行同样I的计算再与收到的冗余信息进行比较不,如果结果不同说明出现了差错,此时可以要求发送方重传该组Iii 数据,以此达到保证数据准确性的目的。1I在普通使用的网络协议中都设置了校验和项以保存冗余信息,例如IPV4、ICMPV4 > IGMPV4、I ICMPV6、UDP 和 TCP 等等。1I计算校验和算法称
5、为网际协议和算法,简单来说,就是把被校验的数据按16位进行累加,然后取II反码。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。关于计算更详细的信息请参II 考 RFC1071。:II|>II|<liI*|>I2课程设计要求i|<I根据前面介绍的算法,编制程序为给定数据计算校验和。:IV(1)、以命令行形式运行:check_sum infile:I其中check_sum为程序名,in file为输入数据文件名。:iViIIl(2)、输出:数据文件的校验和。:I93.相关知识IIIII3.1校验和的概念网络上的数据最终都是通过物理传输线路进行传输的,如果高层没
6、有采用差错控制,那么物理层传 输的数据的正确性,在物理层的基础上设计了数据链路,以向网络层提高质量的服务。目前,进行差错检测和控制的主要方法是发送方在需要发送的数据后面增加一定的冗余信息,这 些冗余信息通常是通过对发送的数据进行某种算法计算而得到的。接收方对接收数据进行同样的计算, 然后与数据后面附加的冗余信息进行比较,如果比较结果不同就说明在传输中出现了差错,并要求发送方重新传送该数据,以此达到确保数据准确性的目的。在普通使用的网络协议(例如 IP,ICMP,IGMP,UDP与TCP等)中,通常都设置了校验和字段以保 存这些冗余信息。计算这些校验和的算法称为网络校验和算法,就是将被校验的数据
7、按 16位进行累加,然后取反码,如果数据字节长度为奇数,则数据尾部补一个字节的 0以凑成偶数。关于计算校验和算法的详细信息请参考RFC1071。2 .计算校验和(1) 交换性与结合性因为校验和主要考虑被校验数据中所包含字节数量的是奇数还是偶数,所以校验和的计算可以以任意顺序进行,甚至可以把数据进行分组后再计算。例如,用A、B C D,Y, Z分别表示一系列八位组,用a,b这样形式的字节来表示 a*256+b的整数,那么16位校验和就可以通过以下形式给出:A,B+ 'C,D+ '+' Y,Z1A,B+ 'C,D+ '+' Z,02在这里,+
8、9;代表1补数加法,即将前面的16位校验和按位取反。1可以以(A,B+ ' C,D+ '+' J,0+ ' (0,K+'+' Y,Z)3的形式进行计算。(2) 字节顺序的自主性打破被校验数据中的字节顺序仍可以计算出正确的16位校验和。例如,我们交换字节组中两字节的顺序,得到B,A+ ' D,C+ '+' Z,Y4所得到的得结构与1式是相同的(当然结果也是要进行一次反转的)。为什么会是这样呢?我们发现两种顺序获得的进位是相同的,都是从第15位到第0位进位以及从第 7位到第8位进位。这也就是说,交换字节位置只是改变高低位字节的
9、排列顺序,但并没有改变它们的内在联系。因此,无论底层的硬件设置中对字节的接收顺序如何,校验和都可以被准确地校验出来。例如,假设校验和是以主机序 (高位字节在前低位字节在后)计算的数据帧,但以网络序(低位字节在前高位字 节在后)存放在内存中。每一个16位的字中的字节在传送过程中都交换了顺序,在计算校验和之后仍会先交换位置再存入内存,这样就与接受到的原本以网络序存储的数据帧中的校验和项保持一致了。(3)并进行计算某些机器的字处理长度是 16位的倍数,这样可以提高它的计算速度。由于加法所具有的结合性,我们没有必要按照顺序对每个字节进行累加。相反,我们可以利用这一特点对它们进行并行累加。并行地计算校验
10、和只是增加了每次累加的信息长度。例如,在一个323位的机器上,我们可以一次增加4个字节,即A,B,C,D+ '。计算结束后再把累加和“折叠”起来, 把一个32位的数值变为16位,这样产生的新的进位也要循环累积起来。此外,在此仍不考虑字节顺序的问题,我们可以用D,C,B,A+ '或B,A,D,C+;这样的顺序来计算校验和,最终再通过交换16位校验和中的字节序来得到正确的值。这些改变顺序的方法都是为了让所有的偶数字节进入一个校验和字节,所有的奇数字节进入一个校验和字节。3.3示例下面将通过一个简单的例子来演示通过上述的几种方法所得到的校验和的情况16位按字节累加“正常”顺序交换顺序
11、字节0/1 :00 0100010100字节2/3 :f2 03F20303f2字节4/5 :f4 f5f4f5f5f4字节6/7 :f6 f7f6f7f7f6合计1:2dc 1f02ddf01f2dcde f0ddf0f2dc进位:1 221合计2:最终结果:dd f2dd f2ddf2f2ddddf2dd f232位按字节累加“正常”顺序交换顺序字节 0/1/2/3 :0001f203010003f203f20100字节 4/5/6/7 :f4f5f6f7f5f4f7f6f7 f6 f5f4合计1:0f4f7e8fa0f6f4fbe80fbe8f6f4进位:000前半段:f4f7f6f4f
12、be8后半段:e8fafbe8f6f4合计2:1ddf11f2dc1f2dcddflf2dcf2dc进位:111合计3:ddf2f2ddf2dd最终结果:ddf2ddf2ddf2还有一个例子是把计算工作分为两组,第二组是以奇数边界起始的。按字节累加“正常”顺序字节0/1 :00 010001字节2/ :f2 (00)f200合计:f2 01f201字节4/5 :03 f403f4字节6/7 :f5 f6f5f6字节8/ :f7 (00)f700合计2:1f0ea合计2:f0ea进位:1合计3:f0eb合计1:f201合计3 (交换字节序):ebfO合计4合计4进位:1ddf1 ddfl1合计5
13、:ddf23.4 些编码技术可以提高校验和的计算速度(1) 延迟进位法这种方法在主要的累加循环结束之后再把进位累加进和值。其实现方式就是用 32位的累加器获得16位校验和,这样溢出就产生在高 16位上。这种方法避免 了累加器中进位传感器机构的设置, 但是它要求的容量是原来的累加器容量的两倍, 因此它更多地依赖 于硬件条件。(2) 反向循环法这种方法可以减少由循环而产生的负荷,有效地展开内部的累加循环,把循环过程中的一系列加法命令复制下来。这种技术通常可以节省大量的时间,但是程序的逻辑设计会比较复杂。(3) 合并数据拷贝法这样会占用内存总线计算校验和以及读入数据都需要将数据从内存的一个位置转移到
14、另一个位置,的带宽,而内存总线的传输效率是提高校验和计算速度的瓶颈,尤其是对于某些机器(如一些简单的慢速的微型机)来说,这一问题尤为严重。为了解决这个问题, 可以把数据读入的过程与校验的过程合二为一,也就是在读入数据的同时计算校验和,这样就可以省去一次数据移动的过程,从而提高校验和的计算速度。4课程设计分析校验和的计算过程主要分为三个步骤:数据文件的输入,校验和的计算和校验结果的输出。其中, 主要的是数据的输入和校验和的计算过程。4.1数据的输入方式输入数据可能是以字符形式存储的,而校验和的计算则要采用数据形式,所以在从文件读取数据时,都要进行字符到数据的相互转换。1) 将读入的ASCII码转
15、化为相应的整型变量。if(ch>= ' O' &&<= 9')ch- =' O'elseif(ch>= ' a' &&ch<= f')ch=ch- 'a' +10;elseif(ch>= ' A &&ch<= F')ch=ch- ' A +10;2) 在使用C+编程时直接使用16进制的方式打开输入文件。Ifstream in( argv1,ios: no create);i.setf(ios:hex);4.2
16、校验和的计算校验和算法是本程序的核心部分,在2.5节中我们介绍了一些相关的算法,而应用最为普遍的是端循环进位法。端循环进位的算法如下:将数据按一定数位进行累加,最高位的进位则循环加入最低位。待校验的数据按16位为一个单位相加,采用端循环进位,最后对所得16位的数据取反码。因为待校验的数据是以字节方式分隔的,所以为了方便,将16位的数据分成高 8位和低8位分别处理。该算法的代码如下:图2-1给出了一个流程的参考方案。en daro un dcarry(i nt &highyte,i nt &lowbyte)while(highbyte>Oxff|lowbyt化 e>0
17、xff)0位)lowbyte+=(highbyte>>8);highbyte=highbutr&0xff;highbyte+=(lowbyte>>8);lowbyte=lowbyte&Oxff;Cou nt/高8位或低8位中的任何一方产生了溢出/低字节加上高字节超过8位的进位/清除高字节的进位/高字节加上来自低字节的进位/清除低字节的进(进4.3程序流程图图2-1给出了一个流程的参考方案沈阳理工大学沈阳理工大学课程设计专用纸沈阳理工大学沈阳理工大学课程设计专用纸No11将进位累加的过程延迟到整个累加循环结束之后进行,4.4相关扩展前面我们提到,校验和还有
18、其他一些计算方法, 算的方法。延迟进位法的算法描述: 速度。3.1主要的实现过程while(!i nfile.eof()则对被校验的16位数据进行累加int h, 1;和低8位in file>>hex>>h;示的数据,作为高8位if(in file.eof() l=0;将0作为低8位else in file>>hex>>1;作为低8位sum+=(h*256+l);sum中F面我们就来简要介绍以下利用延迟进位法进行计 这样可以提高计算/判断文件是否结束,若否/分别表示16位数据的高8位/从文件中读入一个16进制表/若后面没有其他数据,/若后面还有数
19、据,读入下一个/将组合好的16位数据累加到沈阳理工大学in file.close();/关闭文件check_sum二short(su m&0 xffff)+(sum>>16);/将32位累加和转换为16位数据16位上/若累加过程中有向高16位的进位,则要将进位部分加到低check_sum=-check_sum;/ 对累加和取反码沈阳理工大学课程设计专用纸Noll5程序代码#in clude<stdio.h>#in clude<stdlib.h>void main(int arga, char *argb) 指针数组作为主函数参数,用于函数带参数入/定
20、义并初始化变量FILE *fp;char ch;un sig ned char r1,r2;un sig ned int coun t=0,checksum=0,rp=0;un sig ned long int sum=0;/打开文件argb1if(fp=fope n("d:jiaoya n.txt","r")=NULL)prin tf("nn File can't be ope ned");exit(1);prin tf("nn the type of output:data-su mnn ”);/从txt文件读取
21、字符,并进行数据处理while(1)if(ch=etc(ft)!=EOF)coun t+;if(ch!='')if(cou nt%12=0)prin tf("n");将字符转换成相应的整形变量if(ch>='0'&&ch<='9')ch-='0'elseif(ch>='a'&&ch<='f)ch=ch-'a'+10;elseif(ch>='A'&&ch<='F')ch=ch-'A'+10;/计算8字节数的累加值,将奇数位累加到长整形sum的158位,偶数位累加到低80位沈阳理工大学沈阳理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福州市台江区幼儿园教师招聘笔试参考试题及答案解析
- 2026年广东省湛江市幼儿园教师招聘笔试参考试题及答案解析
- 2026年内蒙古自治区巴彦淖尔市幼儿园教师招聘笔试参考题库及答案解析
- 2026年广东省珠海市幼儿园教师招聘笔试备考试题及答案解析
- 2026年兰州市安宁区街道办人员招聘笔试模拟试题及答案解析
- 2025年化工高温危害防控真题及答案解析
- 2026年湖南省湘潭市街道办人员招聘笔试参考题库及答案解析
- 2026年浙江省绍兴市幼儿园教师招聘笔试参考题库及答案解析
- 2026年南宁市青秀区幼儿园教师招聘笔试参考题库及答案解析
- 2026年大连市金州区街道办人员招聘考试模拟试题及答案解析
- 化工工艺管道施工焊接方案
- 出口退税管理培训课件
- 2024中国电信集团限公司采购事业部专业岗位员工招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 高新技术产品进出口统计目录
- 仿生蝴蝶设计说明书
- 《台湾省的地理环境与经济发展》示范课教学设计【湘教版八年级地理下册】
- 2024年安徽交控集团招聘笔试参考题库含答案解析
- (协议书)建房安全责任协议书
- 公务员考试常识考试题库1000题(含参考答案)
- 衢州市根宫佛国5A级旅游景区暗访报告
- 基本公共卫生专项资金的核算与管理
评论
0/150
提交评论