计算机网络课程设计报告--帧封装.docx
《计算机网络课程设计报告--帧封装.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告--帧封装.docx(7页珍藏版)》请在第一文库网上搜索。
1、计算机网络课程设计报告题目:帧封装一、问题描述帧是在数据链路层数据进行传输与交换的基本单位。构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。二、概要设计(抽象数据类型定义)编写程序,根据给出的原始数据,组装一个IEEE802.3格式的帧(题目默认的输入文件为二进制原始数据(文件名为input1)。D要求程序为命令行程序。比如,可执行文件名为framer,exe,则命令行形式如下:fr
2、amerinputfi1eoutputfi1e其中,inputfi1e为原始数据文件,OUtPUtfi1e为输出结果。2)输出:对应input1的结果分别为OUtPUt1。三、详细设计1 .填充帧头部字段在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。写入前四个部分十分简单,而写入长度字段时需要计算输入文件的长度。所以计算输入文件长度的方法如下所示:intIength=O;infi1e.seekgOiOS:end);将读指针移到文件末尾。Iength=infi1e.te11g();计算指针偏移量,即为输入文件的长度。unsignedchar*data=newunsi
3、gnedChar1ength;创建字符指针并根据文件长度初始化。infi1e.seekg(07ios:beg);将读指针移到文件开始。infi1e.read(datajength);将文件数据读入到字符指针data中。fi1e.put(char(1ength8);fi1e.put(char(1ength&Oxff);将文件长度值按照逆序写入到输出文件的长度字段中Ofi1e.write(data,1ength);将data内容写入到输出文件中。这种方法采用的是使用文件流相关函数的办法,简单明了,可以先获得文件数据长度,再申请相同大小的空间,不会造成空间上的浪费。2 .填充数据字段在数据字段中,数
4、据字段的最小长度为46B。如果帧的11C数据少于46B,则应将数据字段填充至46B。填充字符是任意的,不计入长度字段值中。在程序中是用一下方法实现的:如果输入文件长度不足B,则用补足Bif(1ength46)for(intj=1ength;j46;j+)fi1e.put(char(0x00);)3 .计算CRC校验码并填充帧封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。本程序中实现的是CRC-8校验算法,方法如下所示:fi1e,put(char(OxOO);/将数据字段后添加个fi1e,seekg(8,ios:beg);将读指针指向目的地址字段,从此处开始CRC计算unsign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 报告 封装