计算机网络课程设计校验码的计算.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
重庆师范大学 计算机网络课程设计 课程名:计算校验和 院系:计算机科学与技术 专业:计算机科学与技术(师范) 姓名:罗鹏 学号:20090512145 指导教师:余磊 完成时间:2011年12月18日 课程设计名称:计算校验和 一.程设计目的: 2 二.设计要求 3 三.设计分析(流程图、模块功能) 3 1.数据的输入方式 3 2.校验和的计算及代码 3 四.结果(截图): 8 五.设计总结 8 一.程设计目的: 网络上的信号最终都是通过物理传输线路进行传输的,如果高层没有采用差错控制,那么物理层传输的数据信号是可能有差错的。为了保证数据的正确性,在物理层的基础上设计了数据链路层。设计数据链路层的主要作用就是在原始的、有差错的物理传输线路的基础上,采用差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以向网络层提供高质量的服务。本课程设计主要通过一个简单例子使学生了解网络协议中校验和的计算过程,以及设置校验和的作用。 目前,进行差错检测和差错控制的主要方法是:在需要传输ude数据分组后面加上一定的冗余信息,这样的冗余信息通常都是通过对所发送的数据应用某种算法进行计算而得到的。数据的接收方在接收到数据后进行同样的计算再与收到的冗余信息进行比较,如果结果不同就说明出现了差错,此时可以要求发送方重传该组数据,以此达到保证数据准确性的目的。 在普遍使用的网络协议中都设置了校验和项以保存这些冗余信息,例如Ipv4、ICMPv4、IGMPV4、UDP和TCP等等 二.设计要求 根据前面介绍的算法,编制程序为给定数据计算校验和。 (1)建立合法的ip数据文件。 (2)输出:数据文件的校验和。 三.设计分析(流程图、模块功能) 校验和的计算主要分三个步骤:数据文件的输入,校验和的计算和校验结果的输出,主要的是数据的输入和校验和的计算过程。 1.数据的输入方式:数据源是以文档的的形式提供,文档中是一些十进制的数字。使用C++编程时直接打开输入文件。 ifstream in(aaa.txt);//打开外部的aaa.txt文档(ip数据报文) 文档如: 2.校验和的计算及代码 校验和的算法是本程序的核心算法,这里我采用的是一种最为简单的算法,算法的主要思想如下:(1).将所得的十进制文件转换为二进制编码 (2)#includeiostream #includefstream #includesstream #includestdio.h #includestdlib.h #includemath.h //#includevector using namespace std; void xiaoyanmahe(int b[10]) //效验码函数 { int x=0,c[1000],g[1000]; for(int i=0;i16;i++) { c[x++]=b[10]%2; b[10]/=2; } --x; cout转换为二进制:; while(x=0) coutc[x--]; coutendl 取反码:; for(int j=0;j16;j++) { if(c[j]==0) g[j]=1; if(c[j]==1) g[j]=0; } j--; while(j=0) coutg[j--]; } void erzhuanshi(int f[]) //二进制转换为十进制求和 { int b[10],j=0; b[10]=0; for(int k=0;k10;k++) { j=k*16; b[k]=f[j]*pow(2,(j-16*k))+f[j+1]*pow(2,(j+1-16*k))+f[j+2]*pow(2,(j+2-16*k))+f[j+3]*pow(2,(j+3-16*k))+f[j+4]*pow(2,(j+4-16*k)) +f[j+5]*pow(2,(j+5-16*k))+f[j+6]*pow(2,(j+6-16*k))+f[j+7]*pow(2,(j+7-16*k))+f[j+8]*pow(2,(j+8-16*k))+f[j+9]*pow(2,(j+9-16*k))+ f[j+10]*pow(2,(j+10-16*k))+f[j+11]*pow(2,(j+11-16*k))+f[j+12]*pow(2,(j+12-16*k))+f[j+13]*pow(2,(j+13-16*k))+ f[j+14]*pow(2,(j+14-16*k))+f[j+15]*pow(2,(j+

文档评论(0)

lyxbb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档