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

上传人:aa****6 文档编号:38387007 上传时间:2018-05-01 格式:DOC 页数:12 大小:320KB
返回 下载 相关 举报
计算机网络课程设计--模拟以太网帧封装_第1页
第1页 / 共12页
计算机网络课程设计--模拟以太网帧封装_第2页
第2页 / 共12页
计算机网络课程设计--模拟以太网帧封装_第3页
第3页 / 共12页
计算机网络课程设计--模拟以太网帧封装_第4页
第4页 / 共12页
计算机网络课程设计--模拟以太网帧封装_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《计算机网络课程设计--模拟以太网帧封装》由会员分享,可在线阅读,更多相关《计算机网络课程设计--模拟以太网帧封装(12页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告课程设计报告课程设计题目:课程设计题目: 模拟以太网帧封装模拟以太网帧封装专专 业:信息工程业:信息工程班班 级:级:姓姓 名:名:学学 号号:指导教师指导教师: 2013 年年 12 月月 20 日日1目目 录录1 1设计任务和目的设计任务和目的 .2 21 11 1 课程设计任务课程设计任务 .2 21 12 2 课程设计目的课程设计目的 .2 22 2设计原理设计原理 .2 22 21 1 802.3802.3 标准帧结构标准帧结构.2 22 22 2 CRCCRC 的基本实现的基本实现.3 33 3设计实现设计实现 .4 43 31 1 设计思路设计思路 .4 43.1.1

2、3.1.1 填充帧头部字段填充帧头部字段 .4 43.1.23.1.2 填充数据字段填充数据字段.4 43.1.33.1.3 计算填充计算填充 CRCCRC.4 43 32 2 流程图流程图 .5 53.2.13.2.1 程序流程图程序流程图 .6 63.2.23.2.2 CRCCRC 计算流程图计算流程图.7 74 4程序源码程序源码 .8 85 5运行结果运行结果 .1 10 06 6总结体会总结体会 .111121.1.设计任务和目的设计任务和目的1.11.1 课程设计任务课程设计任务根据给出的原始数据,组装一个 IEEE802.3 格式的帧。默认的输入文件为二进制原始数据。封装得到的帧

3、输出到二进制数据文件中。1.21.2 课程设计目的课程设计目的(1)使学生掌握网络通信协议的基本工作原理;(2)培养学生基本掌握网络编程的基本思路和方法;(3)能提高学生对所学计算机网络理论知识的理解能力;(4)能提高学生对所学知识的实际应用能力和创新能力;(5)提高学生的科技论文写作能力。 2.2.设计原理设计原理2.12.1 802.3802.3 标准帧结构标准帧结构以太网 Ethernet 帧格式:前序(P)目的地址(SD)源地址(SA)长度数据FCS8 B6B6B2B461500B4B1. 前序字段前序字段由 7 个字节的交替出现的 1 和 0 组成,设置该字段的目的是指示帧的开始并便

4、于网络中的所有接收器均能与到达帧同步。2.帧起始定界符字段它可以被看作前序字段的延续。实际上,该字段的组成方式继续使用前序字段中的格式,这个一个字节的字段的前 6 个比特位置由交替出现的 1 和 0 构成。该字段的最后两个比特位置是 11,这两位中断了同步模式并提醒接收后面跟随的是帧数据。3.目的地址字段目的地址字段确定帧的接收者。6 个字节的源地址和目的地址字段是局域网中的所有工作站必须使用同样的地址结构。4.源地址字段源地址字段标识发送帧的工作站。和目前地址字段类似,源地址字段的长度六个字节。5.长度字段3用于 IEEE802.3 的两字节长度字段定义了数据字段包含的字节数。从前序 到 F

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

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

7、段在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。写入前四个部分相对简单,而写入长度字段时需要计算输入文件的长度。所以计算输入文件长度的方法如下:int length=0; infile.seekg(0,ios:end);/将读指针移到文件末尾。/计算指针偏移量,即为输入文件的长度length=infile.tellg(); /创建字符指针并根据文件长度初始化unsigned char* data=new unsigned charlength; infile.seekg(0,ios:beg);/将读指针移到文件开始。4/将文件数据读入到字符指针 data 中inf

8、ile.read(data,length); /将 data 内容写入到输出文件中file.write(data,length);3.1.23.1.2 填充数据字段填充数据字段在数据字段中,数据字段的最小长度为 46B。如果帧的 LLC 数据少于 46B,则应将数据字段填充至 46B。填充字符是任意的,不计入长度字段值中。在程序中是用一下方法实现的:/如果输入文件长度不足 46B,则用补足 46Bif(length0;i=1) if(crci=1) if(crc if(temp/将输入数据相应位的值递补到余数末位 crc=0x07;/进行除法运算(即减去除数的低 8 位:) else crc=

9、1; if(temp/将输入数据相应位的值递补到余数末位 file.seekp(pCrc,ios:beg); length=sizeof(crc); switch(length) /若 CRC 不足 4B,将 CRC 补位至 4B case 1: file.put(char(0x00); file.put(char(0x00); file.put(char(0x00); file.put(crc); break; case 2: file.put(char(0x00); file.put(char(0x00); 11file.put(crc); break; case 3: file.put(

10、char(0x00); file.put(crc); break; MessageBox(“帧文件封装完成,封装后文件为 D:out.txt“); file.close(); 5.5.运行结果运行结果(1)输入数据和帧封装:(2)源文件如下:12(3)被封装后的文件如下:6.6.总结与体会总结与体会本次课程设计重点学习了帧封装。在查阅了很多帧的封装的知识后,对帧及其封装的方法有了一定程度的了解和掌握。在对帧的学习后,有了很大的收获,并且使帧的封装得以实现。在设计中实现了帧的封装,主要是将帧的七个部分-前导码、帧前定界符、目的地址、源地址、长度字段、数据字段和校验字段,按顺序封装的,最后形成一个完整的帧结构。同时,在编写程序的过程中,用到了很多的函数,这些函数的运用使得程序简便而且正确的运行出来。为了正确的实现这些函数,我查阅了很多相关的资料,从中获得了大量的有用的信息,收获也颇丰富。近一周的课程设计中,我的动手能力得到了很大的提高,而且将这学期所学的网络的知识和以前所学的编程的知识充分的联系起来,对这门课的认识又提高了一层。除此之外,在做课程设计的时候也遇到了很多的问题,最后在同学的帮助下正确的解决了。从最开始的遇到问题到最后的正确解决问题,我懂得了正确出来问题的方法,也知道了自己的不足之处,收获颇多。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号