计算机网络课设-计算校验和

上传人:每**** 文档编号:68709225 上传时间:2022-04-04 格式:DOCX 页数:8 大小:22.31KB
收藏 版权申诉 举报 下载
计算机网络课设-计算校验和_第1页
第1页 / 共8页
计算机网络课设-计算校验和_第2页
第2页 / 共8页
计算机网络课设-计算校验和_第3页
第3页 / 共8页
资源描述:

《计算机网络课设-计算校验和》由会员分享,可在线阅读,更多相关《计算机网络课设-计算校验和(8页珍藏版)》请在装配图网上搜索。

1、目 录摘 要1 课程设计目的12 课程设计要求13相关知识14课程设计分析15程序代码16运行结果与分析17参考文献17 / 81 课程设计目的校验和是用于验证数据传输正确性的一种方法。在网络体系结构的各层协议中,很多网络协议都利用校验和来实现差错控制功能。本课程设计主要目的是通过完成一个简单例子,了解网络协议中的校验和计算过程。2 课程设计要求根据校验和的算法,编写程序为给定数据计算校验和1) 以命令行形式运行: Checksum input_file 其中Checksum为程序名,input_file为输入数据文件名2)输出内容:数据文件的校验和3 相关知识1校验和的概念 网络上的数据最终

2、都是通过物理传输线路进行传输的,如果高层没有采用差错控制,那么物理层传输的线路可能有差错。为了保证传输数据的正确性,在物理层的基础上设计了数据链路层。设计数据链路层的主要目的就是在原始的,有差错的物理传输线路的基础上,采用差错检测,差错控制和流量控制等方法。 目前,进行差错检测和控制的主要方法是:发送方在需要发送的数据后面增加一定的冗余信息,这些冗余信息通常是通过对发送的数据进行某种算法计算而得到的。接收方对接收数据进行同样的计算,然后与数据后面附加的冗余信息进行比较,如果比较结果不同就说明在传输中出现了差错,并要求发送方重新传送该数据,以此达到确保数据准确性的目的。在普遍使用的网络协议中,通

3、常都设置了校验和字段以保存这些冗余信息,计算这些校验和的算法,就是将被校验的数据按16位进行累加,然后取反码,如果数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。关于计算校验和算法的详细信息请参考RFC1071. 2计算校验和有很多数学方法可以提高校验和的速度。1) 交换性和结合性 因为校验和主要考虑被校验数据中所包含字节的数量是奇数还是偶数,所以校验和的计算可以以任意顺序进行,甚至可以把数据进行分组后再计算。例如,用A,B,C,D,Y,Z分别表示一系列八位组,用a,b这样的字节来表示a*256+b的整数,那么16位校验和就可以通过以下形式给出:A,B+C,D+Y,Z 1A,B+C,D

4、+Z,0 2在这里+代表1补数加法,即将前面的16位校验和和按位取反。1可以以A,B+C,D+J,0+(0,K+Y,Z) 3 的形式进行计算。2) 字节顺序的自主性 打破被校验数据中的字节顺序仍可以计算正确的16位校验和。例如,我们交换字节组中两字节的顺序,得到B,A+D,C+Z,Y所得到的结构与1式是相同的(当然结果也是要进行一次反转的)。为什么会是这样呢?我们发现两种顺序获得的进位是相同的,都是从第15位到第0位进位以及从第7位到第8位进位。这也就是说,交换字节位置只是改变高低位字节的排列顺序但并没有改变他们的内在联系。因此无论底层的硬件设置中对字节的接收顺序如何,校验和都可以被准确地校验

5、出来。例如,假设校验和是以主机序(高位字节在前低位字节在后)计算的数据帧,但以网络序(低位字节在前高位字节在后)存放在内存中。每一个16位的字中的字节在传送过程中都交换了顺序,在计算校验和之后仍会先交换位置再存入内存,这样就与接受到的原本以网络序存储的数据帧中的校验和项保持一致了。3) 并行计算 某些机器的字处理长度是16位的倍数,这样可以提高他的计算速度。由于加法所具有的结合性,我们没有必要按照顺序对每个字节进行累加。相反,我们可以利用这一特点对他们进行并行累加。并行地计算校验和只是增加了每次累加信息的长度,例如,在一个32 位的机器上,我们可以一次增加4个字节,即【A,B,C,D】+.。计

6、算结束后再把累加和“折叠”起来,把一个32位的数值变成16位,这样产生的新的进位也要循环累加起来。 此外,在此仍不需要考虑字节顺序问题,通过交换16位校验和中的字节序来得到正确的值。这些改变顺序的方法都是为了所有的偶数字节进入一个校验和字节,所有的奇数字节进入一个校验和字节。?3一些编码技术可以提高校验和的计算速度1) 延迟进位法这种方法在主要的累加循环结束之后再把进位累加进和值。?其实现方式就是用32位的累加器获得16位校验和,这样溢出就产生在高16位上。这种方法避免了累加器中进位传感器机构的设置,但是它要求的容量是原来的累加器容量的两倍,因此它更多地依赖于硬件条件。2) 反向循环法这种方法

7、可以减少由循环而产生的负荷,有效地展开内部的累加循环,把循环过程中的一系列加法命令复制下来。这种技术通常可以节省大量的时间,但是程序的逻辑设计会比较复杂。3) 合并数据拷贝法计算校验和以及读入数据都需要将数据从内存的一个位置转移到另一个位置,这样会占用内存总线的带宽,而内存总线的传输效率是提高校验和?计算速度的瓶颈,尤其是对于某些机器(如一些简单的慢速的微型机)来说,这一问题尤为严重。?为了解决这个问题,可以把数据读入的过程与校验的过程合二为一,也就是在读入数据的同时计算校验和,这样就可以省去一次数据移动的过程,从而提高校验和的计算速度。4 课程设计分析校验和的计算过程主要分为三个步骤:数据文

8、件的输入、校验和的计算和校验结果的输出。其中,主要的是输入和校验和的计算。数据输入的方式输入数据可能是由字符型式存储的,而校验和的计算则要采取数据形式,所以在文件读取数据时,都要进行字符到数据的相互转换。将读入的ASCII码转化为相应的整型变量。if(ch=0&ch=a&ch=A&ch0xff|lowbyte0xff)/高8位或低8位中的任何一方产生溢出(进位) Lowbyte+=(highbyte8);/低字节加上高字节超过8位的进位 H highbyte+=(lowbyte8);/高字节加上来自低字节的进位 lowbyte=lowbyte&0xff;/清除低字节的进位开始将文件中数据取出数

9、据有误,丢弃输出数据检验校验和是否为零结束程序流程图开始请输入数据计算校验和,取反码将数据存入文件结束是否图4-1图4-25 程序代码 /*发送端*/#include#include#include#include/打开文件操作using std:string;using std:cin;using std:cout;using std:endl;using std:fstream;int sum(int &ans, int& p, string str);/声明计算校验和函数void main()cout 请输入数据 in;int ans = 0, p = 0;sum(ans, p, in)

10、;ans = 65535 - ans;/计算校验和,取反码cout 校验和为 ans endl;/将数据输出到文件fstream file(, std:ios:binary|std:ios:out);if (!file)cout 打开文件失败 endl;return;file in endlans;file.close();cout 数据已存入文件中! endl;int sum(int &ans, int& p, string str)/定义计算校验和函数int deal;/记录单次计算结果int t1, t2;if (p = str.size()return ans;t1 = str+p;t

11、1 = t1 65536)ans -= 65536;return sum(ans, p, str);/*接收端*/#include#include#include#includeusing std:string;using std:cin;using std:cout;using std:endl;using std:fstream;int cal(int &ans, int& p, string str);void main()string in;int check;fstream file(, std:ios:binary | std:ios:in);if (!file)cout 打开文件

12、失败 incheck;file.close();int ans = 0, p = 0;cal(ans,p,in);ans += check;ans = 65535 - ans; /校验和为0,则没有错误;反之,则有if (ans)cout 数据有误,丢弃! endl;return;elsecout 数据为: endl;cout in endl;int cal(int &ans, int& p, string str)int deal;int temp1, temp2;if (p = str.size()/如果该次递归没有字符return ans;temp1 = str+p;temp1 = temp1 65536)/如果发生进位,则溢位ans -= 65536;return cal(ans, p, str);6 运行结果与分析 发送端: 输入数据图6-1将输入的数据存入文件 图6-2 图6-3接收端:输出数据图6-4 图6-5数据丢失 图6-67 参考文献1谢希仁 编着. 计算机网络 (第5版) .北京:电子工业出版社,20082吴宜功 吴英 编着. 计算机网络课程设计 (第2版). 北京: 机械工业出版社,2012文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!