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

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

ID:11000059

大小:151.50 KB

页数:10页

时间:2018-07-09

计算机网络课程设计报告-- 帧封装_第1页
计算机网络课程设计报告-- 帧封装_第2页
计算机网络课程设计报告-- 帧封装_第3页
计算机网络课程设计报告-- 帧封装_第4页
计算机网络课程设计报告-- 帧封装_第5页
资源描述:

《计算机网络课程设计报告-- 帧封装》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、设计报告课程计算机网络设计名称帧封装专业班级同组人姓名同组人学号实验日期2011-6-9指导教师成绩2011年6月9日10一、设计目的和要求1、实验目的帧是在数据链路层数据进行传输与交换的基本单位。构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。2、实验要求本程序的功能是进行帧封装。以命令行形式运行:framerinputfileoutputfile

2、其中framer为程序名;inputfile为输入文件;outputfile为输出文件;成功封装后显示“帧文件outputfile封装完成”。二、设计说明(包括设计分析,系统运行环境,设计中的重点和难点,输入和输出条件等)程序共分三个部分:填充帧头部字段,填充数据字段,计算CRC校验码并填充。1.填充帧头部字段在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。写入前四个部分十分简单,而写入长度字段时需要计算输入文件的长度。所以计算输入文件长度的方法如下所示:intlength=0;infile.seekg(0,ios::end);//

3、将读指针移到文件末尾。length=infile.tellg();//计算指针偏移量,即为输入文件的长度。unsignedchar*data=newunsignedchar[length];//创建字符指针并根据文件长度初始化。infile.seekg(0,ios::beg);//将读指针移到文件开始。infile.read(data,length);//将文件数据读入到字符指针data中。file.put(char(length>>8));file.put(char(length&0xff));//将文件长度值按照逆序写入到输出文件的长度字段中。file.w

4、rite(data,length);//将data内容写入到输出文件中。这种方法采用的是使用文件流相关函数的办法,简单明了,可以先获得文件数据长度,再申请相同大小的空间,不会造成空间上的浪费。102.填充数据字段在数据字段中,数据字段的最小长度为46B。如果帧的LLC数据少于46B,则应将数据字段填充至46B。填充字符是任意的,不计入长度字段值中。在程序中是用一下方法实现的://如果输入文件长度不足B,则用补足Bif(length<46){for(intj=length;j<46;j++)file.put(char(0x00));}3.计算CRC校验码并填充帧

5、封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。本程序中实现的是CRC-8校验算法,方法如下所示:file.put(char(0x00));//将数据字段后添加个file.seekg(8,ios::beg);//将读指针指向目的地址字段,从此处开始CRC计算unsignedcharch;//ch用来保存读入的字符。unsignedcharcrc=char(0x00);//余数初始值为。while(1)//进行CRC计算{file.get(ch);if(ch==0xff)//判断是否到了文件结尾,如果是,则退出循环。break;for(i=0;i<

6、8;i++)//对入读入的字符的位分别处理。{if(0x80==(crc&(0x80)))//当前余数最高位为,需要进行除法运算。{crc=(crc<<1)&(0xff);//crc左移位,最低位补。crc=crc

7、((ch&0x80)>>7);//将输入数据相应的值递补到余数末位。crc=crc^(0x07);//进行除法运算,即与除数的低位相异或。}else//当前余数的最高位为,不需要进行除法运算。{crc=(crc<<1)&(0xff);//crc左移位,最低位补。crc=crc

8、((ch&0x80)>>7);//将输入数据相应位的值递补到余数末位。}

9、ch=ch<<1;//读到的字符左移位,使数据下一位作为输入位。}}10三、程序流程图程序流程图10CRC计算流程图10四、程序源代码及注释#include#include#includevoidmain(intargc,char*argv[]){//如果输入命令行不正确,则输出提示后退出。if(argc!=3){cout<

10、件存在,则清除其内容。fstreamf

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

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

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