您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 《计算机网络》计算校验和课程设计
目录一.课程设计的目的和意义......................................................................11.1课程设计的目的................................................................................................................12.2课程设计的意义................................................................................................................1二.程设计的内容和要求..........................................................................22.1课程设计的内容................................................................................................................22.2课程设计的要求................................................................................................................2三、课程设计的相关技术........................................................................23.1计算校验和.......................................................................................................................23.1.1交换性与结合性...................................................................................................23.1.2字节顺序的自主性...............................................................................................33.1.3并进行计算...........................................................................................................33.2一些编码技术可以提高校验和的计算速度...................................................................43.2.1延迟进位法............................................................................................................43.2.2反向循环法............................................................................................................43.2.3合并数据拷贝法....................................................................................................4四.课程设计过程......................................................................................54.1数据的输入方式...............................................................................................................54.2校验和的计算...................................................................................................................54.3程序流程图.......................................................................................................................7五.相关扩展..............................................................................................85.1主要的实现过程...............................................................................................................85.2程序流程图.......................................................................................................................9六.编程实现............................................................................................106.1程序源代码.....................................................................................................................10七.程序的调试及分析............................................................................13八.课设计小结........................................................................................14九.参考文献............................................................................................151一.课程设计的目的和意义1.1课程设计的目的网络上的信号最终都是通过物理传输线路进行传输的,如果高层没有采用差错控制,那么物理层传输的数据信号是可能有差错的。为了保证数据的正确性,在物理层的基础上设计了数据链路层。设计数据链路层的主要作用就是在原始的、有差错的物理传输线路的基础上,采用差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以向网络层提供高质量的服务。本课程设计主要通过一个简单例子使学生了解网络协议中校验和的计算过程,以及设置校验和的作用。目前,进行差错检测和差错控制的主要方法是:在需要传输ude数据分组后面加上一定的冗余信息,这样的冗余信息通常都是通过对所发送的数据应用某种算法进行计算而得到的。数据的接收方在接收到数据后进行同样的计算再与收到的冗余信息进行比较,如果结果不同就说明出现了差错,此时可以要求发送方重传该组数据,以此达到保证数据准确性的目的。在普遍使用的网络协议中都设置了校验和项以保存这些冗余信息,例如Ipv4、ICMPv4、IGMPV4、UDP和TCP等等。2.2课程设计的意义《计算机网络课程设计》是计算机网络课程的一个延续,是计算机网络工程专业的一门专业实践课,其主要内容是使用C++实现理论课讲授的网络技术,如校验和法的验证等。课程设计所涉及的工作过程主要包括熟悉网络知识的原理,逻辑设计,使用C++编码实现,调试和分析等。通过本课程设计,使学生全面了解和掌握计算机网络课程上讲述的相关原理,并提高使用C++解决相关问题的能力。该课程设计能够提高学生网络工程的应用能力,可以提高分析问题和解决问题的能力和团队协作的能力。2二.程设计的内容和要求2.1课程设计的内容计算校验和的算法称为网际校验和算法,简单来说,就是把被校验的数据按16位进行累加,然后取反码。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。关于计算校验和算法更详细的信息请参考RFC1071。2.2课程设计的要求根据前面介绍的算法,编制程序为给定数据计算校验和。(1)以命令行形式运行:check_suminfile其中check_sum为程序名,infile为输入数据文件名。(2)输出:数据文件的校验和。三、课程设计的相关技术3.1计算校验和有很多数学方法可以用来提高校验和的计算速度,下面我们将就此展开讨论。3.1.1交换性与结合性因为校验和主要考虑被校验数据中所包含字节数量的是奇数还是偶数,所以校验和的计算可以以任意顺序进行,甚至可以把数据进行分组后再计算。例如,用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]3在这里,+’代表1补数加法,即将前面的16位校验和按位取反。[1]可以以([A,B]+’[C,D]+’……+’[J,0]+’([0,K]+’……+’[Y,Z])[3]的形式进行计算。3.1.2字节顺序的自主性打破被校验数据中的字节顺序仍可以计算出正确的16位校验和。例如,我们交换字节组中两字节的顺序,得到[B,A]+’[D,C]+’……+’[Z,Y][4]所得到的得结构与[1]式是相同的(当然结果也是要进行一次反转的)。为什么会是这样呢?我们发现两种顺序获得的进位是相同的,都是从第15位到第0位进位以及从第7位到第8位进位。这也就是说,交换字节位置只是改变高低位字节的排列顺序,但并没有改变它们的内在联系。因此,无论底层的硬件设置中对字节的接收顺序如何,校验和都可以被准确地校验出来。例如,假设校验和是以主机序(高位字节在前低位字节在后)计算的数据帧,但以网络序(低位字节在前高位字节在后)存放在内存中。每一个16位的字中的字节在传送过程中都交换了顺序,在计算校验和之后仍会先交换位置再存入内存,这样就与接受到的原本以网络序存储的数据帧中的校验和项保持一致了。3.1.3并进行计算某些机器的字处理长度是16位的倍数,这样可以提高它的计算速度。由于加法所具有的结合性,我们没有必要按照顺序对每个字节进行累加。相反,我们可以利用这一特点对它们进行并行累加。并行地计算校验和只是增加了每次累加的信息长度。例如,在一个323位的机器上,我们可以一次增加4个字节,即[A,B,C,D]+’……。计算结束后再把累加和“折叠”起来,把一个32位的数值变为16位,这样产生的新的进位也要循环累积起来。此外,在此仍不考虑字节顺序的问题,我们可以用’[D,C,B,A]+’……或4[B,A,D,C]+;……这样的顺序来计算校验和,最终再通过交换16位校验和中的字节序来得到正确的值。这些改变顺序的方法都是为了让所有的偶数字节进入一个校验和字节,所有的奇数字节
本文标题:《计算机网络》计算校验和课程设计
链接地址:https://www.777doc.com/doc-6070971 .html