欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机网络课程设计报告--帧封装.docx

    • 资源ID:1118544       资源大小:58.58KB        全文页数:10页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络课程设计报告--帧封装.docx

    计算机网络课程设计报告帧封装一、问题描述题目是帧封装,帧是在数据链路层数据进行传输与交换的基本单位。构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。将打einput文件中的数据封装成帧,封装好的帧写入到文件中。如果数据长度小于46字节,则补全到46字节,如果数据长度大于1500,则封装成多个帧。二、设计原理802.3标准帧结构前序目的地址源地址长度数据FCS8B6B6B2B461500B4B以太网Ethernet帧格式:a.前序字段前序字段由7个字节的交替出现的1和0组成,设置该字段的目的是指示帧的开始并便于网络中的所有接收器均能与到达帧同步。2.帧起始定界符字段它可以被看作前序字段的延续。实际上,该字段的组成方式继续使用前序字段中的格式,这个一个字节的字段的前6个比特位置由交替出现的1和0构成。该字段的最后两个比特位置是11,这两位中断了同步模式并提醒接收后面跟随的是帧数据。b.帧起始定界符字段它可以被看作前序字段的延续。实际上,该字段的组成方式继续使用前序字段中的格式,这个一个字节的字段的前6个比特位置由交替出现的1和0构成。该字段的最后两个比特位置是11,这两位中断了同步模式并提醒接收后面跟随的是帧数据。C.目的地址字段目的地址字段确定帧的接收者。6个字节的源地址和目的地址字段是局域网中的所有工作站必须使用同样的地址结构。目前,几乎所有的802.3网络使用6字节寻址.d.源地址字段源地址字段标识发送帧的工作站。和目前地址字段类似,源地址字段的长度六个字节。当使用六个字节的源地址字段时,前三个字节表示由IEEE分配给厂商的地址,将烧录在每一块网络接口卡的ROM中。而制造商通常为其每一网络接口卡分配后节。e.长度字段用于IEEE802.3的两字节长度字段定义了数据字段包含的字节数。从前序到FCS字段的帧长度最小必须是64字节。基于最小帧长为64字节和使用六字节地址字段的要求,意味着每个数据字段的最小长度为46字节。如果传输数据少于46个字节,应将数据字段填充至46字节。不过,填充字符的个数不包括在长度字段值中,数据字段的最大长度为1500字节。f.数据字段数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段:如果填入该该字段的信息少于46字节,该字段的其余部分也必须进行填充零。数据字段的最大长度为1500字节。g.校验序列字段帧校验序列字段提供了一种错误检测机制,每一个发送器均计算一个包括了地址字段、长度字段和数据字段的循环冗余校验(CRC)码。发送器于是将计算出的CRC填入4字节的FCS字段。2. CRC的基本实现循环冗余编码(CRe)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。利用CRC进行检错的过程可简单描述如下:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息的后边,构成一个新的二进制码序列(共k+r位),然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则在差错控制理论中称为“生成多项式二循环冗余校验码的特点:(1)CRC校验码可检测出所有单个错误。(2)CRC校验码可检测出所有奇数位错误。(3)CRC校验码可检测出所有双位的错误(4)CRC校验码可检测出所有小于、等于校验位长度的突发错误。(5)CRC校验码可以(12H11-k的概率检测出长度为(K+1)位的突发错误。三、概要设计抽象类型定义intUastDataPacketQffsetNum;记录最后一个帧,记录偏移量FI1E*fi1e1nfi1eut;1ongStartCa1ibration,endca1ibration;开始检验位置,结束检验位置shortdataTota1Num;记录校验字节个数程序流程图四、详细设计主要算法fseek函数设置文件指针Stream的位置。如果执行成功,Stream将指向以fromwhere(偏移起始位置:文件头0,当前位置1,文件尾2)为基准,偏移OffSet(指针偏移量)个字节的位置。如果执行失败仕匕如offset超过文件自身大小),则不改变stream指向的位置。fopecout.txt)文件打开函数函数间的调用关系主函数调用帧封装函数frameEncapsu1ation(fi1einput);五、调试分析1. vc6.0安装不上是因为电脑是Win8系统不兼容,解决方法,安装虚拟机安装WinXP系统2. errorC2065:,exit,:undec1aredidentifier修改方法添加#inc1ude<std1ib.h>3. 有一次出现保存失败是因为保存的位置不存在,修改方法为把位置改成正确的原来封装的数据不能大于1500,现在如果大于1500就封装成两个4. errorC2143:syntaxerror:missing'before'',修改方法增加i;fo5. 其他小问题看了一下提示就改过来了。六、心得体会成员分工:赵亚飞(组长)编写主程序,以及程序的整合,程序调试孙泽鹏(组员)查找资料,以及流程图及程序调试邵亚启(组员)-编写程序设计报告,及后期程序修改及调试。在此次的课程设计中,我们小组做的题目是帧封装。在最开始两天收集资料的过程中,我们查阅了很多帧的封装的知识,对帧及其封装的方法有了一定程度的了解和掌握。从最开始对帧的一个模糊的印象到对帧的结构的七个部分的完全掌握,有了很大的收获,并且使帧的封装得以实现。在编写程序的过程中,用到了很多的函数,这些函数的运用使得程序简便而且正确的运行出来。为了正确的实现这些函数,我们查阅了很多相关的资料,从中获得了大量的有用的信息,收获也颇丰富。七、用户手册a.运行程序出现PIeaSeinputse1ectionnumber:输入1转"b)",输入2退出。b.出现P1easeenterpathtothefi1e:的提示,输入需要封装的数据的文件路径以及名字,转“C)"0c.按下enter,输出结果以及结果文件默认存放在c:out.txt的文件中,"转a").附录:(程序源码)/* 将fi1einput文件中的数据封装成帧,封装好的帧写入到文件中.* 如果数据长度小于46字节,则补全到46字节,如果数据长度大于1500,则封装成多个帧* ©Author:zhaoyafei* ©Time:2015年4月1日* /inc1ude<stdio.h>#inc1ude<std1ib.h>#defineMAXSIZE1500* 帧封装函数,完成把给* 定的文件封装成帧的功能* /intframeEncapsu1ation(char*fi1einput)inti,IastDataPacket,OffsetNum;记录最后一个帧,记录偏移量FI1E*fi1e1n,*fi1eut;1ongStartCa1ibration,endCa1ibration;开始检验位置,结束检验位置shortdataTota1Num;记录校验字节个数printfC,n封装后的文件保存地址:E:out.txt");if(fi1e1n=fopen(fi1einput,z*r+,z)=NU11)Printf("%s","打开文件失败);return1;)if(fi1eut=fopen(zzE:out.txtzz,z,wb+z,)=二NU11)Printf("%s","写入文件失败);return1;/* 先把fp1n指针退回到文件结尾处。再得到文件位置指针* 当前位置相对于文件首的偏移字节数,即可得到内容的长度* /fseek(fi1e1n,0,SEEK_END);OffsetNum=fte11(fi1e1n);计算整1500数据包个数intdataPacketNum=offsetNum/1500;把文件指针重新回到文件开头。rewind(fiIeIn);/* for循环处理大于1500B的情况,当大于1500时* 自动转换到下一个数据帧中* /for(intj=0;j<=dataPacketNum;j+)chardataMXSIZE;数据临时存储数组写入帧前导码,十六进制OxaaPrintf("n帧的前导码:");for(i=0;i<7;i+)fputc(0xaa,fiIeOut);printf(,%X”,Oxaa);写入帧定界符fputc(0xab,fiIeOut);printf(z,%X”,Oxab);charObjectiveMac6=0xff,Oxff,Oxff,Oxff,Oxff,Oxff;模拟目的MAC地址charSourceMac6=0x10,0x16,0x76,0xb4,0xe4,0x77;模拟源MAC地址记录开始进行校验的位置,因为校验是从前导码以后开始的StartCa1ibration=fte11(fiIeOut);printf(z,帧的目的MAC地址:);for(i=0;i<6;i+)fputc(objectiveMaci,fiIeOut);写入目的MACprintf(,%X,z,ObjectiveMaci);)printfn帧的源MAC地址:");for(i=0;i<6;i+)fputc(sourceMaci,fiIeOut);写入源MACprintf(z,%X,z,SourceMaci);不是最后一个数据,则前面的数据都应该是1500,所以按最大数据数算if(j!=dataPacketNum)添加长度字段fputc(char(1500/256),fiIeOut);fputc(char(1500%256),fi1eut);fread(data,sizeof(char),1500,fi1e1n);fwrite(data,sizeof(char),1500,fi1eut);记录开插入校验码的位置endCa1ibration=fte11(fi1eut);fputc(0x00,fiIeOut);添加辅助检验字段dataTota1Num=short(fte11(fiIeOut)-(short)StartCa1ibration;计算检验的字段长度e1se得到最后一个数据块的位置IastDataPacket=fte11(fi1e1n);剩下有多少字节inthas1ongs=OffsetNum-dataPacketNum*1500;还有多少不够46BintSurp1us1ongs=46-has1ongs;记录长度字段fputc(char(has1ongs/256),fi1eut);fputc(char(has1ongs%256),fi1eut);先读取剩余的所有数据fread(data,s

    注意事项

    本文(计算机网络课程设计报告--帧封装.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

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



    收起
    展开