计算机网络课程设计_模拟以太网帧封装

计算机网络课程设计_模拟以太网帧封装

ID:46929865

大小:426.00 KB

页数:15页

时间:2019-11-30

计算机网络课程设计_模拟以太网帧封装_第1页
计算机网络课程设计_模拟以太网帧封装_第2页
计算机网络课程设计_模拟以太网帧封装_第3页
计算机网络课程设计_模拟以太网帧封装_第4页
计算机网络课程设计_模拟以太网帧封装_第5页
资源描述:

《计算机网络课程设计_模拟以太网帧封装》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.计算机通信网络报告—以太网帧封装模拟学生1:叶健12122268贡献比:20%学生2:赵思晨12121461贡献比:20%学生3:刘赟12122549贡献比:20%学生4:王晨浩12122090贡献比:20%学生5:游赛夫12160006贡献比:20%组长:赵思晨组长电话:18221796781指导老师:冯玉田完成时间:2015年10月..目录1.设计任务和要求21.1课程设计任务21.2课程设计要求22.设计原理22.1802.3标准帧结构22.2CRC的基本实现33.设计实现33.1设计思

2、路33.1.1填充帧头部字段33.1.2填充数据字段33.1.3计算填充CRC43.2流程图43.2.1程序流程图43.2.2CRC计算流程图54.程序源码65.运行结果86.总结体会11..1.设计任务和要求1.1课程设计任务帧是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如IP数据包。本项目设计软件,实现以太网帧的封装、传输、解析。1.2设计要求 1.编写程序

3、,从文件中读取数据;2.将数据组装成IEEE802.3格式的帧;3.通过两台计算机的通信,把帧从一台计算机传输到另一台计算机。2.设计原理2.1802.3标准帧结构以太网Ethernet帧格式:前序(P)目的地址(SD)源地址(SA)长度数据FCS8B6B6B2B46~1500B4B 1.前序字段前序字段由7个字节的交替出现的1和0组成,设置该字段的目的是指示帧的开始并便于网络中的所有接收器均能与到达帧同步。2.帧起始定界符字段..它可以被看作前序字段的延续。实际上,该字段的组成方式继续使用前序

4、字段中的格式,这个一个字节的字段的前6个比特位置由交替出现的1和0构成。该字段的最后两个比特位置是11,这两位中断了同步模式并提醒接收后面跟随的是帧数据。3.目的地址字段目的地址字段确定帧的接收者。6个字节的源地址和目的地址字段是局域网中的所有工作站必须使用同样的地址结构。4.源地址字段源地址字段标识发送帧的工作站。和目前地址字段类似,源地址字段的长度六个字节。5.长度字段用于IEEE802.3的两字节长度字段定义了数据字段包含的字节数。从前序到FCS字段的帧长度最小必须是64字节。基于最小帧长

5、为64字节和使用六字节地址字段的要求,意味着每个数据字段的最小长度为46字节。如果传输数据少于46个字节,应将数据字段填充至46字节。不过,填充字符的个数不包括在长度字段值中,数据字段的最大长度为1500字节。6.数据字段数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段:如果填入该该字段的信息少于46字节,该字段的其余部分也必须进行填充零。数据字段的最大长度为1500字节。7.校验序列字段将计算出的CRC填入32位的FCS校验字段。帧校

6、验序列字段提供了一种错误检测机制,包括了地址字段、长度字段和数据字段的循环冗余校验(CRC)码。..2.2CRC的基本实现利用CRC进行检错的过程可简单描述如下:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息的后边,构成一个新的二进制码序列(共k+r位),然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则在差错控制理论中称为“生成多项式”。3.设计实现3.1设计思路3.1.1填充帧头部字段在

7、这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。写入前四个部分相对简单,而写入长度字段时需要计算输入文件的长度。所以计算输入文件长度的方法如下:ioBuffer.put(head);ioBuffer.put(Common.getLocalMac("127.0.0.1"));ioBuffer.put(Common.UMAC);ioBuffer.put(Common.TYPE);3.1.2填充数据字段在程序中是用以下方法实现的:ioBuffer.putString(s,ch

8、arsetEncoder);}3.1.3计算填充CRC帧封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。本程序中实现的是CRC32校验算法,方法如下所示:..ioBuffer.put(Common.getCRC32(s.getBytes()));ioBuffer.flip();3.2程序流程图3.2.1程序流程图..3.2.2CRC计算流程图4.程序源代码(主要代码)主要函数publicvoidupdate(byte[]b,intoff,intlen){if(b==null){th

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。