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