1、摘要IP协议为提高数据传输效率,简化了协议,舍弃了许多为提供可靠性所需要的工作(如建立连接、维护连接、拆除连接、确认应答、时间片处理等)。其唯一的正确性检验即依靠头部校验和,以保证头部数据的完整性。为了研究IP 首部校验算法,查看了相关的RFC文档并利用wireshark工具进行了抓包,并对抓包取得的数据进行了计算验证。研究发现了一些算法存在一定的问题并对它的改进算法进行了研究。关键字: 计算校验和 并行计算 字节顺序 延迟 进位前言 本课程设计的主要意图是,通过计算机网络中的计算校验和来了解计算机是怎么样判断接收数据的正确与错误。同时也让我们更进一步的了解计算机的一般思想,从而了解计算校验和
2、的目的与作用。最后我们要学会计算校验和,了解和扩展计算机网络的知识面。校验和的作用就是保证数据传送的正确性。本次课程设计的主要内容包括以下几个方面:课程设计目的,通过这一点我们可以了解我们为什么要计算校验和,它的作用和目的是什么,从而学会计算校验和。课程设计的要求,根据下面课程设计中的计算方法编制程序为给定数据计算检验和。计算校验和的相关知识,如交换性与结合性,字节顺序的自主性,并行计算以及实例,以及给出一些编码技术可以提高校验和的速度。课程设计分析,主要是从数据的输入方式,校验和的计算流程图。对知识进行了一些扩展。给出了自己做课程设计的心得体会,和一些参考资料。本次课程设计的适用范围是,所有
3、在校大学生和一些对计算机网络感兴趣的人都可以指导和参观。课程设计分工:杨忠书负责设计设计目的、设计要求、以及相关知识的收索。王琼伍主要负责本课程设计的课程设计的分析、程序流程图设计、和一些相关知识的扩展。鲁阳主要负责本课程设计的相关文献的查找、序言和目录的设定、文档排版及整个课程设计报告的整理。审校人:鲜乾坤、陈超相关的说明:本课程设计由于设计人的经验不足其中的一些内容可能有许多不完整的地方。希望读者在阅读的时候能结合我们提供的文献一起参考。第一章 概述.1 设计综述.1 设计目的.1 设计要求.1 设计原理.2 计算校验和.3 交换性和结合性.3 字节顺序的自主性.4 并进行计算.4 示例.
4、5 一些编码技术可以提高校验和的计算速度.7 延迟进位法.7 反向循环法.7 合并数据拷贝法.7第二章 设计分析.9 数据的输入方式.9 校验和的计算.10 程序流程图.11第三章 相关扩展.12 主要实现过程.12 程序流程图.13第四章 编程实现.14 程序源代码.14 程序运行截图.17设计总结.18参考文献.20 第一章 概述设计综述设计目的网络上的信号最终,都是通过物理传输进行传输线路进行传输的,如果高层没有采用差错控制,那么物理层传输的数据信号是可能有差错的。为了保证数据的正确性,在物理层的基础,计了数据层。设计数据链路层的主要作用就是在原始的、有差错的线路改进成逻辑上无差错的数据
5、链路,以向网络层提供高质量的服务。本课程设计主要通过一个简单例子使学生了解网络协议中校驵和的计算过程,以及设置校验和的作用。 目前,进行了差错检测和差错控制的主要方法是:在需要传输的数据分组后面加上一定的冗余信息通常都是通过对所发送的数据应用某种算法进行计算而得到的。数据的接收方在接收到数据后进行同样的计算再与收到的冗余信息进行比较不,如果结果不同说明出现了差错,此时可以要求发送方重传该组数据,以此达到保证数据准确性的目的。 在普通使用的网络协议中都设置了校验和项以保存冗余信息,例如IPV4、ICMPV4、IGMPV4、ICMPV6、UDP 和TCP等等。计算校验和算法称为网际协议和算法,简单
6、来说,就是把被校验的数据按16位进行累加,然后取反码。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。关于计算更详细的信息请参考RFC1071。设计要求根据前面介绍的算法,编制程序为给定数据计算校验和。(1)、以命令行形式运行:check_sum infile其中check_sum为程序名,infile为输入数据文件名。 (2)、输出:数据文件的校验和。设计原理采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数则补一字节0。当收到数据后,同样对有效
7、数据范围中每个16位数进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全0或全1(具体看实现了,本质一样) 。如果结果不是全0或全1,那么表示数据错误。IPv4IPv4层中的校验和只包括IPv4头部分,不包括上层协议头和应用层数据,校验和是必须计算的。 IPv6IPv6头本身已经不包括校验和字段,只靠上层协议的校验和。 ICMP/IGMPICMP/IGMP校验和计算范围为从ICMP/IGMP开始到数据结束,不包括IP头部分,校验和是必须计算的。 TCP/UDPTCP/UDP的校验和计算有点特殊,所
8、计算的数据范围除了包括TCP/UDP头开始到数据结束外,还要包括一个IP伪头部分,所谓伪头,只有12字节数据,包括源地址(4字节)、目的地址(4字节)、协议(2字节,第一字节补0)和TCP/UDP包长(2字节)。TCP的校验和是必须的,而UDP的校验和是可选的,如果UDP中校验和字段为0,表示不进行校验和计算,因此对于UDP协议数据的修改后想偷懒的话直接将校验和设为0 就可以了。计算校验和 有很多数学方法可以用来提高校验和的计算速度,下面我们将就此展开讨论。 交换性与结合性因为校验和主要考虑被校验数据中所包含字节数量的是奇数还是偶数,所以校验和的计算可以以任意顺序进行,甚至可以把数据进行分组后再计算。例如,用A、B、C、D,Y,Z分别表示一系列八位组,用a,b这样形式的字节来表示a*256+b的整数,那么16位校验和就可以通过以下形式给出:A,B+C,D+Y,Z
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1