版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈阳理工大学课程设计专用纸Noi学生姓名林娟班级学号1103050401专业计算机科学与技术课程设计题目计算校验和评语组长签字:成绩日期2012年12月3日111沈阳血工大学I沈阳理工大学课程设计专用纸Noh课程设计任务书学院信息科学与工程学院计算机科学与技术学生姓名林娟班级学号1103050401课程设计题目计算校验和实践教学要求与任务:本课程设计的主要意图是,通过计算机网络中的计算校验和来了解计算机是怎么样判断接 收数据的正确与错误。同时也让我们更进一步的了解计算机的一般思想,从而了解计算校验和的 目的与作用。最后我们要学会计算校验和,了解和扩展计算机网络的知识面。校验和的作用就是 保证数
2、据传送的正确性。本次课程设计的主要内容包括以下几个方面:课程设计目的,通过这一点我们可以了解我们 为什么要计算校验和,它的作用和目的是什么,从而学会计算校验和。课程设计的要求,根据下 面课程设计中的计算方法编制程序为给定数据计算检验和。计算校验和的相关知识,如交换性与 结合性,字节顺序的自主性,并行计算以及实例,以及给出一些编码技术可以提高校验和的速度。 课程设计分析,主要是从数据的输入方式,校验和的计算流程图。工作计划与进度安排:第15周星期一:设计任务分析和总体设计星期二:软件算法和流程设计星期三:软件编码实现星期四:软件总体调试星期五:交课程设计报告、答辩、验收程序指导教师:2012年1
3、2月 日专业负责人:2012 年12月 日学院教学副院长:2012年12月 日沈阳理工大学沈阳理工大学课程设计专用纸Nom1课程设计目的2课程设计要求13相关知识54课程设计分析错误!未定义书签。15程序代码错误!未定义书签。6运行结果与分析1237实验体会138参考文献133沈阳理工大学沈阳理工大学课程设计专用纸Nol1课程设计目的1IIII网络上的信号最终,都是通过物理传输进行传输线路进行传输的,如果高层没有采用差弟控制,那I么物理层传输的数据信号是可能有差错的。为了保证数据的正确性,在物理层的基础,计了如据层。设I计数据链路层的主要作用就是在原始的、有差错的线路改进成逻辑上无差错的数据链
4、路,以厲网络层提I供高质量的服务。本课程设计主要通过一个简单例子使学生了解网络协议中校驰和的计算过电,以及设I置校验和的作用。1I目前,进行了差错检测和差错控制的主要方法是:在需要传输的数据分组后面加上一定呂冗余信息I通常都是通过对所发送的数据应用某种算法进行计算而得到的。数据的接收方在接收到数据后进行同样I的计算再与收到的冗余信息进行比较不,如果结果不同说明出现了差错,此时可以要求发送才重传该组I数据,以此达到保证数据准确性的目的。1I在普通使用的网络协议中都设置了校验和项以保存冗余信息,例如IPV4、ICMPV4、lbIPV4、IIICMPV6、UDP 和 TCP 等等。I计算校验和算法称
5、为网际协议和算法,简单来说,就是把被校验的数据按16位进行累丿加,然后取 I反码。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。关于计算更详细M信息请参I考 RFC1071o;IIIIIIIIII2课程设计要求iIIII根据前面介绍的算法,编制程序为给定数据计算校验和。:I(1)、以命令行形式运行:check_sum iiifile:I I 其中check-sum为程序名,uifile为输入数据文件名。IIII I(2)、输出:数据文件的校验和。;I3 相关知识|IIII3.1校验和的概念1沈阳理工大学沈阳理工大学课程设计专用纸No2网络上的数据最终都是通过物理传输线路进行传输的
6、,如果高层没有采用差错控制,那么物理层传 输的数据的正确性,在物理层的基础上设计了数据链路,以向网络层提高质量的服务。目前,进行差错检测和控制的主要方法是发送方在需要发送的数据后面增加一定的冗余信息,这 些兀余信息通常是通过对发送的数据进行某种算法计算而得到的。接收方对接收数据进行同样的计算, 然后与数据后面附加的冗余信息进行比较,如果比较结果不同就说明在传输中出现了差错,并要求发送 方重新传送该数据,以此达到确保数据准确性的目的。在普通使用的网络协议(例如IP,ICMPJGMP,UDP与TCP等)中,通常都设置了校验和字段以保 存这些冗余信息。计算这些校验和的算法称为网络校验和算法,就是将被
7、校验的数据按16位进行累加, 然后取反码,如呆数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。关于计算校验和算法 的详细信息请参考R F C 1 0 7 1 o2计算校验和(1)交换性与结合性因为校验和主要考虑被校验数据中所包含字节数量的是奇数还是偶数,所以校验和的计算町以以任 意顺序进行,甚至可以把数据进行分组后再计算。例如,用A、B、C、D,Y, Z分别表示一系列八位组,用a, b这样形式的字节来表示a*256+b 的整数,那么16位校验和就可以通过以下形式给出:A,B + C,D + + Y,Z1A,B + C,D + + Z,02在这里,+代表1补数加法,即将前面的16位校验和
8、按位取反。1可以以(A,B + C,D + + J,O + (0,K + + Y, Z)3的形式进行计算。(2)字节顺序的自主性打破被校验数据中的字节顺序仍可以计算出正确的16位校验和。例如,我们交换字节组中两字节的顺序,得到B,A+ D,C + + Z,Y4所得到的得结构与1式是相同的(当然结果也是要进行一次反转的)。为什么会是这样呢?我们发 现两种顺序获得的进位是相同的,都是从第15位到第0位进位以及从第7位到第8位进位。这也就是 说,交换字节位置只沈阳理工大学沈阳理工大学课程设计专用纸No3是改变高低位字节的排列顺序,但并没有改变它们的内在联系。因此,无论底层的硬件设置中对字节的接收顺序
9、如何,校验和都可以被准确地校验出来。例如,假 设校验和是以主机序(高位字节在前低位字节在后)计算的数据帧,但以网络序(低位字节在前高位字 节在后)存放在内存中。每一个16位的字中的字节在传送过程中都交换了顺序,在计算校验和之后仍 会先交换位置再存入内存,这样就与接受到的原本以网络序存储的数据帧中的校验和项保持一致了。=, O &二a,&ch二f9 )ch二ch a +10;elseif(ch二A &ch二V9 )ch二ch- 5 +10;2)在使用C+编程时直接使用16进制的方式打开输入文件。Ifstream in(argvl, ios::nocreate);i setf(ios::hex);
10、4.2校验和的计算校验和算法是本程序的核心部分,在2. 5节中我们介绍了一些相关的算法,而应用最为普遍的是端 循环进位法。端循环进位的算法如下:将数据按一定数位进行累加,最高位的进位则循环加入最低位。待校验的数据按16位为一个单位相加,采用端循环进位,最后对所得16位的数据取反码。因为待 校验的数据是以字节方式分隔的,所以为了方便,将16位的数据分成高8位和低8位分别处理。该算 法的代码如下:沈阳理工大学沈阳理工大学课程设计专用纸No7图2-1给出了一个流程的参考方案。endaroundcarry(int &highyte,int &lowbyte)wh订e(highbyteOxff lowb
11、yt 化e0xff)0位)lowbyte+= (highbyte8);hi ghbyte=hi ghbutr&Oxff;highbyte+=(lowbyte8);lowbyte=lowbyte&Oxff; count/高8位或低8位中的任何一方产生了溢出(进/低字节加上高字节超过8位的进位/清除高字节的进位/高字节加上来自低字节的进位/清除低字节的进4. 3程序流程图图2-1给出了一个流程的参考方案沈阳理工大学沈阳理工大学课程设计专用纸NoS沈阳理工大学沈阳理工大学课程设计专用纸No94. 4相关扩展前面我们提到,校验和还有其他一些计算方法,下面我们就来简要介绍以下利用延迟进位法进行计 算的方
12、法。延迟进位法的算法描述:将进位累加的过程延迟到整个累加循坏结束之后进行,这样可以提高计算 速度。3.1主要的实现过程while(! infile, eof ()则对被校验的16位数据进行累加int h, 1;和低8位infilehexh;示的数据,作为高8位if (infile, eof () 1=0;将0作为低8位else infilehexl;作为低8位sum+二(h*256+l);sum中/判断文件是否结束,若否分别表示16位数据的高8位/从文件中读入一个16进制表若后面没有其他数据,若后面还有数据,读入下一个将组合好的16位数据累加到infile, close ();关闭文件沈阳理工
13、大学沈阳理工大学课程设计专用纸NolOcheck_sum=short(sum&Oxffff) + (sum16);/将32位累加和转换为16位数据/若累加过程中有向高16位的进位,则要将进位部分加到低16位上check_sum=check_sum:/对累加和取反码沈阳理工大学沈阳理工大学课程设计专用纸Noll5 程序代码#iiiclude#iiicludevoid niain(int arga, char *argb)指钊澈组作为主函数参数,用于函数带参数入 定义并初始化变量FILE *fp;char ch;unsigned chai i l,r2;unsigned mt count=0.ch
14、ecksum=0dp=0;unsigned long int sum=0;打开文件argblif(fp=fopen(nd:jiaoyan.txtn,nrH)=NULL)File cant be opened1*);exit(l);printf(niinthe type of output:data一sumiiVn”);从txt文件读取字符,并进行数据处理while(l)if(ch=etc(ft)! =EOF)count+;if(ch!= Jif(count%12=0)pnntffXn”);将字符转换成相应的整形变量if(ch=0&chv=9)chT:elseif(ch=,a,&ch=fA&ch
15、=F)ch=ch-Ar+10;计算8字节数的累加值,将奇数位累加到长整形sum的158位,偶数位累加到低80位沈阳理工大学沈阳理工大学课程设计专用纸No12这样就避免了数据个数为奇偶的处理操作 if(count%2=l)r2=ch4;elseil=ch&OxOf;ip=r2|rl;if(count%4=2) sum+=ip8;elseif(count%4=0) sum+=ip;pnntf(H%x-%lx ”、rp,sum);elsecount;elsebreak;将sum由32位折合成16位if(sum16)checksum=(long(sum 16)+long(sum&0x0000fffi); checksum=checksum&0x0000flffiF;结果输出printf(Hiiiisum:%lx一checksum:%x,sum.checksum); priiitf(Miinsource:aiga=%dAtaigb=%snM,arga,argbl);fclose(ft);6运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届云南省云南名校联盟高三上学期第四次联考模拟预测语文试题
- 跨境电商独立站服务器安全责任协议2025
- 跨境电商2025年海外市场推广协议
- 口罩生产供应协议2025年保密义务
- 2025 小学六年级语文上册排比句结构层次设计课件
- 居家养老服务评估协议2025年
- 深度解析(2026)《GBT 39269-2020电压暂降短时中断 低压设备耐受特性测试方法》
- 二级会计面试题库及答案
- 深度解析(2026)《GBT 37507-2025项目、项目群和项目组合管理 项目管理指南》(2026年)深度解析
- 深度解析(2026)《GBT 34630.3-2017搅拌摩擦焊 铝及铝合金 第3部分:焊接操作工的技能评定》
- 2025年下半年国家教师资格幼儿园《综合素质》考试真题及参考答案
- 评审委托协议书
- 黑龙江中医药大学《无机化学》2025 学年第二学期期末试卷
- 研学基地课程书籍或课件
- 杭州市西湖区人民政府西溪街道办事处公开招聘编外合同制工作人员5人考试笔试备考试题及答案解析
- 【《四川省鹤林中学学生宿舍楼施工组织设计》12000字】
- 西安市2024陕西西安市专职消防员管理中心招聘事业编制人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025年盐城港控股招聘面试题库及答案
- 浙江省宁波市海曙区2023-2024学年一年级上学期数学期末试卷(含答案)
- 江西省九江市2024-2025学年上学期期末考试 七年级 数学试题
- 品牌商户入驻大型购物中心流程
评论
0/150
提交评论