封装Ethernet帧课程设计

上传人:cn****1 文档编号:561545276 上传时间:2022-12-03 格式:DOCX 页数:14 大小:126.98KB
返回 下载 相关 举报
封装Ethernet帧课程设计_第1页
第1页 / 共14页
封装Ethernet帧课程设计_第2页
第2页 / 共14页
封装Ethernet帧课程设计_第3页
第3页 / 共14页
封装Ethernet帧课程设计_第4页
第4页 / 共14页
封装Ethernet帧课程设计_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《封装Ethernet帧课程设计》由会员分享,可在线阅读,更多相关《封装Ethernet帧课程设计(14页珍藏版)》请在金锄头文库上搜索。

1、目录1课程设计目的52课程设计要求 53相关知识54课程设计分析85相关扩展 106程序代码147运行结果与分析168参考文献171课程设计目的帧是在数据链路层中进行数据传输的基本单位。熟悉帧结构对于理解网络协议的概 念、网络层次结构与协议执行过程具有重要的意义。本课程设计的主要目的是通过封装 Ethernet 帧,了解 Ethernet 帧中各个字段的含义与用途。2 课程设计要求根据后面介绍的IEEE802.3帧结构,编写程序将指定数据封装为Ethernet帧。1)以命令行形式运行:EncapFrame input_file output_file其中, EncapFrame 为程序名, i

2、nput_file 为输入数据文件, output_file 为输出文件。2)输出内容:Ethernet帧的各字段内容。3 相关知识1.帧术语“帧”来源于串行线路上的通信。其中,发送者在发送数据的前后分别添加特殊 的字符,使它们成为一个帧。 Ethernet 从某种程度上可以被看做是机器之间的数据链路层 连接。首先我们来认识一下帧结构,EthernerV2.0规范和IEEE802.3标准中的Ethernet帧结构有一些差别,这里我们按802.3标准的帧结构进行讨论。图为帧结构图前导码帧前定界符目的地址源地址长度字段数据字 段校验字段(7B)(1B)(2/6B)(2/6B)(2B)(长度可变)(

3、4B)图1.帧结构图如上图所示,802.3标准的Ethernet帧结构由7部分组成。(1) 前导码与帧前定界符字段前导码由56位(7B)的10101010-10101010位序列组成。帧前定界符可以视为前导 码的延续。1B的帧前定界符结构为10101011.如果将前导码与帧前定界符一起看,那么在62位101010-1010位序列之后出现11。 在 11 之后是 Ethernet 帧的目的地址字段。前导码与帧前定界符主要是保证接收同步,这 8B 接收后不需要保留,也不记入帧头长度中。(2) 目的地址和源地址目的地址(DA)与源地址(SA)分别表示帧的接收结点地址与发送结点的硬件地址。 在Ethe

4、rnet帧中,目的地址和源地址字段长度可以是2B或6B。目前的Ethernet都使 用 6B 长度的地址。Ethernet帧的目的地址可以是单播地址、多播地址与广播地址,目的地址的第一位为0 表示单播地址,为 1 表示多播地址,目的地址为全 1 则表示广播地址。(3) 长度字段Ethernet帧用2B定义数据字段包含的字节数。协议规定,帧数据的最小长度为46B, 最大长度为1500B。设置最小帧长度的目的是使每个接收结点能够有足够时间检测到冲突。(4) 数据字段帧数据字段的最小长度为46B。如果帧的LLC数据少于46B,则应将数据字段填充只 46B。填充字符是任意的,不计入长度字段值中。(5)

5、 校验字段帧校验字段(FCS)采用32位的CRC校验。校验的范围包括目的地址字段、源地址 字段、长度字段、LLC数据字段。此处,为了简便起见,采用 8 位的 CRC 校验。 CRC 校验的生成多项式为: G(X)=XA8+XA2+X+1某些帧结构中还会包括帧类型字段,用来识别此帧所承载的数据的类型。当一个帧到 达指定的计算机时,操作系统根据帧类型决定用哪个协议软件模块对它进行处理。自识别 帧的主要优点是,可以在同一物理网络中使用多个协议而互不干扰。2.CRC 校验循环冗余编码的编码方式。过程:在发送端,根据要传送的 k 位二进制码序列,以一定的规则产生一个校 验用的 r 位监督码,附在原始信息

6、的后边,构成一个新的二进制码序列,然后发送出去。 在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。(1) CRC 编码的代数学原理将一个码组表示为一个多项式,码组中的各码元作为多项式的系数。设编码前的原始 信息多项式为P (x),P (x)最高次幂加1等于k;生成多项式为G(x),它的最高次幂等于 r; CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。发送方编码的方法是:P(x)乘以xAr,再除以G(x),得余式即为R(x)。接收方得解码方法是:将T(x)除以G(x),如果余数为0则说明传输中无错误发生, 否则说明传输有错误。(2) CRC 的基本

7、实现以 CRC-8(XA8+XA2+XA1 为例,它由多个移位寄存器和加法器组成。编码、解码前 将各寄存器初始化为 0,输入位作为最右边异或操作的输入之一。三个寄存器上的移位操 作同时进行,均为左移一位,左边的寄存器的最左一位作为三个异或操作的输入之一。每 次移位时,最右边的寄存器内容作为中间异或操作的输入之一,中间的寄存器的内容作为 最左边异或操作输入之一,各个异或操作的结果作为与它左边那个寄存器的移入位。重复 以上步骤,每输入一位就做一次移位操作,直到输入了所有要计算的数据为止。这时,这 个寄存器组中的数据就是CRC-8的结果。CRC 的工作原理是: CRC 在发送端编码和接收端校验时,都

8、可以利用事先约定的生 成多项式G(x)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(x),r位冗余位对 应于一个(r-1)次多项式R(x),由r位冗余位组成的n=k+r位码对应于一个(n-1)次多项式 T(x)=XAr*K(x)+R(x)。(3) 循环冗余校验码的特点CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误.CRC校验 码具有以下的检错能力:CRC 校验码可检测出所有单个错误,所有奇数位错误,所有双位的错误,所有小于、 等于校验位长度的突发错误。4 课程设计分析1. 填充帧头部字段要完成一次帧封装的过程,首先要完成的是帧头部的装入,这一过程只要将前导码

9、、 定界符、目的地址、源地址、长度字段的相应数值按顺序写入就可以了。其中,长度字段 的值即为要发送的数据的实际长度。有以下两种方式来获得长度字段的值。方法一: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.填充数据字段在填充数据字段的过程中要注意的主要问题是数据字段的长度。802.3

10、 标准中规定了帧 数据字段的最小长度为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人=0x8408;2. 字节型算法数字通信系统一般是对一帧数据进行 CRC 校验,而字节是帧的基本单位。最常用 的是一种按字节查表的快速算法。该算法基于这样一个事实:计算本字节后的CRC码, 等于上一字节CRC右移8位和本字节之和再与上一字节余式CRC码的低8位左移8 位相加后所求得的 CRC 码。如果我们把 8 位二进制序列数的 CRC 全部计算出来,放 在一个表里,那么编码时只要从表中查找对应的值进行处理即可。算法如下:1) 寄存器组初始化为全 1。2) 寄存器组向右移动一个字节。3) 刚移出

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

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