计算机网络帧封装课程设计报告_第1页
计算机网络帧封装课程设计报告_第2页
计算机网络帧封装课程设计报告_第3页
计算机网络帧封装课程设计报告_第4页
计算机网络帧封装课程设计报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-PAGE . z.- - - z -TOC o 1-3 h u HYPERLINK l _Toc29059 一、课程设计的目的和意义 PAGEREF _Toc29059 1 HYPERLINK l _Toc25507 一、 课程设计的容和要求 PAGEREF _Toc25507 1 HYPERLINK l _Toc15513 二、 课程设计的相关技术 PAGEREF _Toc15513 1 HYPERLINK l _Toc18923 1.帧 PAGEREF _Toc18923 1 HYPERLINK l _Toc9925 2.CRC校验 PAGEREF _Toc9925 2 HYPERLIN

2、K l _Toc22898 三、 课程设计过程 PAGEREF _Toc22898 4 HYPERLINK l _Toc7856 1.填充帧头部字段 PAGEREF _Toc7856 4 HYPERLINK l _Toc19547 2.填充数据字段 PAGEREF _Toc19547 4 HYPERLINK l _Toc19353 3.CRC校验 PAGEREF _Toc19353 4 HYPERLINK l _Toc29647 4. 相关扩展 PAGEREF _Toc29647 5 HYPERLINK l _Toc3403 1.比特型运算法 PAGEREF _Toc3403 5 HYPERL

3、INK l _Toc16042 2.字节型算法 PAGEREF _Toc16042 65. HYPERLINK l _Toc21639程序流程图: PAGEREF _Toc21639 76. HYPERLINK l _Toc27316 CRC根本实现 PAGEREF _Toc27316 87. HYPERLINK l _Toc24532 程序代码 PAGEREF _Toc24532 9 HYPERLINK l _Toc23725 8运行结果与分析 PAGEREF _Toc23725 11 HYPERLINK l _Toc2018 五、 课程设计小结 PAGEREF _Toc2018 12一、课

4、程设计的目的和意义 目的:点对点信道的数据链路层的协议数据单元是帧。熟悉帧构造对于理解网络协议的概念、网络层次构造与协议执行过程具有重要意义。本课程设计的主要目的的是通过封装Ethernet帧,了解Ethernet帧中各个字段的含义和用途。 意义:帧是在数据链路层中进展数据传输的单位。让学生理解帧的每个字段的含义和用途,透彻理解网络协议的概念。课程设计的容和要求本次课程设计我负责的主要容为:封装Ethernet帧中的CRC校验。 对于帧的封装:首先填充帧头部字段。其次便是填充帧的数据的字段注意数据字段的长度。最后便是CRC校验了。对于CRC校验,我们需要将校验结果记入帧校验字段。其实现过程详细

5、见课程设计过程 根据后面介绍的IEEE802.3帧构造,编写程序将指定数据封装为Ethernet帧。1以命令行形式运行: EncapFrame input_file output_file 其中,EncapFrame为程序名,input_file为输入数据文件,output_file为输出文件。2) 输出容:Ethernet帧的各字段容。课程设计的相关技术1.帧 术语帧来源于串行线路上的通信。其中,发送者在发送数据的前后分别添加特殊的字符,使它们成为一个帧。Ethernet从*种程度上可以被看做是机器之间的数据链路层连接。首先我们来认识一下帧构造,EthernerV2.0规和IEEE802.3

6、标准中的Ethernet帧构造有一些差异,这里我们按802.3标准的帧构造进展讨论。图为帧构造图前导码帧前定界符目的地址源地址长度字段数据字段校验字段7B1B2/6B2/6B2B长度可变4B如上图所示,802.3标准的Ethernet帧构造由7局部组成。前导码与帧前定界符字段前导码由56位7B的1010101010101010位序列组成。帧前定界符可以视为前导码的延续。1B的帧前定界符构造为10101011.如果将前导码与帧前定界符一起看,则在62位1010101010位序列之后出现11。在11之后是Ethernet帧的目的地址字段。前导码与帧前定界符主要是保证接收同步,这8B接收后不需要保存

7、,也不记入帧头长度中。目的地址和源地址目的地址DA与源地址SA分别表示帧的接收结点地址与发送结点的硬件地址。在Ethernet帧中,目的地址和源地址字段长度可以是2B或6B。目前的Ethernet都使用6B长度的地址。Ethernet帧的目的地址可以是单播地址、多播地址与播送地址,目的地址的第一位为0表示单播地址,为1表示多播地址,目的地址为全1则表示播送地址。长度字段Ethernet帧用2B定义数据字段包含的字节数。协议规定,帧数据的最小长度为46B,最大长度为1500B。设置最小帧长度的目的是使每个接收结点能够有足够时间检测到冲突。数据字段帧数据字段的最小长度为46B。如果帧的LLC数据少

8、于46B,则应将数据字段填充只46B。填充字符是任意的,不计入长度字段值中。校验字段帧校验字段FCS采用32位的CRC校验。校验的围包括目的地址字段、源地址字段、长度字段、LLC数据字段。此处,为了简便起见,采用8位的CRC校验。CRC校验的生成多项式为:G(*)=*8+*2+*+1*些帧构造中还会包括帧类型字段,用来识别此帧所承载的数据的类型。当一个帧到达指定的计算机时,操作系统根据帧类型决定用哪个协议软件模块对它进展处理。自识别帧的主要优点是,可以在同一物理网络中使用多个协议而互不干扰。2.CRC校验循环冗余编码的编码方式。循环冗余编码是一种重要的线性分组编码、解码和编码的方式,具有简单的

9、检错和纠错能力。过程:在发送端,根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监视码CRC码,附在原始信息的后边,构成一个新的二进制码序列共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进展检验,以确定传送中是否出错。这个规则在过失理论中称为生成多项式。CRC编码的代数学原理将一个码组表示为一个多项式,码组中的各码元作为多项式的系数。设编码前的原始信息多项式为P*,P*最高次幂加1等于k;生成多项式为G(*),它的最高次幂等于r;CRC多项式为R(*);编码后的带CRC的信息多项式为T(*)。发送方编码的方法是:P(*)乘以*r,再除以G(*),得余式即

10、为R(*)。接收方得解码方法是:将T(*)除以G(*),如果余数为0,则说明传输中无错误发生,否则说明传输有错误。CRC的根本实现以CRC-8*8+*2+*1为例,它由多个移位存放器和加法器组成。编码、解码前将各存放器初始化为0,输入位作为最右边异或操作的输入之一。三个存放器上的移位操作同时进展,均为左移一位,左边的存放器的最左一位作为三个异或操作的输入之一。每次移位时,最右边的存放器容作为中间异或操作的输入之一,中间的存放器的容作为最左边异或操作输入之一,各个异或操作的结果作为与它左边那个存放器的移入位。重复以上步骤,每输入一位就做一次移位操作,直到输入了所有要计算的数据为止。这时,这个存放

11、器组中的数据就是CRC-8的结果。CRC运算通用电路方框图:CRC的工作原理是:CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(*)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(*),r位冗余位对应于一个r-1次多项式R(*),由r位冗余位组成的n=k+r位码对应于一个(n-1)次多项式T(*)=*r*K(*)+R(*)。循环冗余校验码的特点CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误.CRC校验码具有以下的检错能力:CRC校验码可检测出所有单个错误,所有奇数位错误,所有双位的错误,所有小于、等于校验位长度的突发错误。课程设计过程1.填

12、充帧头部字段要完成一次帧封装的过程,首先要完成的是帧头部的装入,这一过程只要将前导码、定界符、目的地址、源地址、长度字段的相应数值按顺序写入就可以了。其中,长度字段的值即为要发送的数据的实际长度。有以下两种方式来获得长度字段的值。方法一:While(!in.eof()in.get(a);bufj=a;j+;方法二:infile.open(argv1,ios:binary);infile.seekg(0,ios:end);short length=(short)infile.tellg();file.put(char(length/256);file.put(char(length%256);2

13、.填充数据字段在填充数据字段的过程中要注意的主要问题是数据字段的长度。802.3标准中规定了帧数据字段的最小长度为46B,最大长度为1500B。如果数据缺乏46B,则需要通过填充0来补足;假设数据长度超过1500B,则将超过局部封装入下一个帧进展发送。由于帧头局部应该包括6B目的地址、6B源地址、2B长度字段以及4B帧校验字段,因此帧头局部长度为18B。前导码与帧前定界符不计入帧头长度中。则,Ethernet帧的最小长度为64B,最大长度为1518B。填充数据字段的代码如下:if(len=1500) len=0;if(len46)for(i=len;i1;if(a) regs.val=0*84

14、08;2.字节型算法数字通信系统一般是对一帧数据进展CRC校验,而字节是帧的根本单位。最常用的是一种按字节查表的快速算法。该算法基于这样一个事实:计算本字节后的CRC码,等于上一字节CRC右移8位和本字节之和再与上一字节余式CRC码的低8位左移8位相加后所求得的CRC码。如果我们把8位二进制序列数的CRC全部计算出来,放在一个表里,则编码时只要从表中查找对应的值进展处理即可。算法如下:存放器组初始化为全1。存放器组向右移动一个字节。刚移出的那个字节与数据字节进展异或运算,得出一个指向值表的索引。将索引所指的表值与存放器组做异或运算。数据指针加1,如果数据没有全部处理完,则重复步骤2.存放器组取

15、反,得到CRC,附加在数据之后。验证算法:存放器组初始化为全1.存放器组向右移动一个字节。刚移出的那个字节与数据字节进展异或运算,得出一个指向值表的索引。将索引所指的表值与存放器组做异或运算。数据指针加1,如果数据没有全部处理完,则重复步骤2.判断存放器组的值是否等于Magic Value,假设相等则通过,否则失败。5.程序流程图:6.CRC根本实现除法电路实现CRC7.程序代码#include#include#include#includevoid main(int argc,char*argv) /如果输入命令行不正确,则输出提示后退出。 if(argc!=3) coutendl请按以下格

16、式输入:framer inputfile outputfileendl; e*it(0); /翻开指定的输出文件,以二进制方式翻开并可读可写,如文件存在,则去除其容。 fstream file(argv2,ios:out|ios:in|ios:binary|ios:trunc,0); for(int i=0;i8); file.put(char(length&0*ff);/将文件长度值按照逆序写入到输出文件的长度字段中。 file.write(data,length);/将data容写入到输出文件中。 /如果输入文件长度缺乏B,则用补足B。 if(length46) for(int j=len

17、gth;j46;j+) file.put(char(0*00); file.put(char(0*00);/将数据字段后添加个 file.seekg(8,ios:beg);/将读指针指向目的地址字段,从此处开场CRC计算 unsigned char ch;/ch用来保存读入的字符。 unsigned char crc=char(0*00);/余数初始值为。 while(1)/进展CRC计算 file.get(ch); if(ch=0*ff)/判断是否到了文件结尾,如果是,则退出循环。 break; for(i=0;i8;i+)/对入读入的字符的位分别处理。 if(0*80=(crc&(0*80

18、)/当前余数最高位为,需要进展除法运算。 crc=(crc7);/将输入数据相应的值递补到余数末位。 crc=crc(0*07);/进展除法运算,即与除数的低位相异或。 else/当前余数的最高位为,不需要进展除法运算。 crc=(crc7);/将输入数据相应位的值递补到余数末位。 ch=ch1;/读到的字符左移位,使数据下一位作为输入位。 file.clear(); file.seekp(-1,ios:end);/将写指针移到输出文件的最后。 file.put(crc);/写入crc码。 file.close(); infile.close();/关闭输入文件和输出文件。 coutendlfileargv2 pleteendl;8.运行结果与分析课程设计小结本次课程设计主要是实现帧的封装。在本次课程设计中,我们组首先是将封装的大致流程实现了。实现帧的封装,主要是将帧的七个局部前导码、帧前定界符、目的地址、源地址、长度字段、数据字段和校验字段,一个一个按顺序封装的,最后使得一个帧的封装得以完成。在此同时,我们组采用分工的方式将封装帧的代码进展了编写。在编写的过程中,我们遇到的问题有:1.我们是以文件流的形式实现的案例的输入与输出。在c语言中,我们经常采用的是freopenin.t*t,r,stdin;以及freopen(out.t*t,w,stdout);这两个语句使得sc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论