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

上传人:ni****g 文档编号:508683732 上传时间:2023-12-26 格式:DOCX 页数:13 大小:105.58KB
返回 下载 相关 举报
计算机网络帧封装课程设计报告_第1页
第1页 / 共13页
计算机网络帧封装课程设计报告_第2页
第2页 / 共13页
计算机网络帧封装课程设计报告_第3页
第3页 / 共13页
计算机网络帧封装课程设计报告_第4页
第4页 / 共13页
计算机网络帧封装课程设计报告_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

1、一、课程设计的目的和意义1一、课程设计的内容和要求1二、课程设计的相关技术11. 帧12.CRC校验2三、课程设计过程31. 填充帧头部字段32. 填充数据字段43.CRC校验44.相关扩展51. 比特型运算法52. 字节型算法65. 程序流程图:76.CRC基本实现87. 程序代码98 运行结果与分析11五、课程设计小结12精品文档一、课程设计的目的和意义目的:点对点信道的数据链路层的协议数据单元是帧。熟悉帧结构对于理解网络协议的概念、 网络层次结构与协议执行过程具有重要意义。 本课程设计的主要目的的是通过封装 Ethernet 帧,了解 Ethernet 帧中各个字段的含义和用途。意义:帧

2、是在数据链路层中进行数据传输的单位。让学生理解帧的每个字段的含义和用途,透彻理解网络协议的概念。一、课程设计的内容和要求本次课程设计我负责的主要内容为:封装Ethernet帧中的 CRC校验。对于帧的封装: 首先填充帧头部字段。 其次便是填充帧的数据的字段(注意数据字段的长度)。最后便是CRC校验了。对于 CRC校验,我们需要将校验结果记入帧校验字段。(其实现过程详细见课程设计过程)根据后面介绍的IEEE802.3 帧结构,编写程序将指定数据封装为Ethernet帧。1)以命令行形式运行:EncapFrame input_file output_file其中,EncapFrame为程序名, i

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

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

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

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

7、一种重要的线性分组编码、 解码和编码的方式, 具有简单的检错和纠错能力。过程:在发送端,根据要传送的 k 位二进制码序列, 以一定的规则产生一个校验用的 r 位监督码( CRC码),附在原始信息的后边,构成一个新的二进制码序列(共 k+r 位),然后发送出去。在接收端,根据信息码和 CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则在差错理论中称为 “生成多项式”。(1) CRC编码的代数学原理将一个码组表示为一个多项式,码组中的各码元作为多项式的系数。设编码前的原始信息多项式为 P( x), P(x)最高次幂加 1 等于 k;生成多项式为 G(x), 它的最高次幂等于 r ;C

8、RC多项式为 R(x) ;编码后的带 CRC的信息多项式为 T(x) 。发送方编码的方法是: P(x) 乘以 xr ,再除以 G(x), 得余式即为 R(x) 。接收方得解码方法是: 将 T(x) 除以 G(x) ,如果余数为 0,则说明传输中无错误发生,否则说明传输有错误。(2) CRC的基本实现以 CRC-8(X8+X2+X1 为例,它由多个移位寄存器和加法器组成。编码、解码前将各寄存器初始化为 0,输入位作为最右边异或操作的.精品文档输入之一。三个寄存器上的移位操作同时进行,均为左移一位,左边的寄存器的最左一位作为三个异或操作的输入之一。每次移位时,最右边的寄存器内容作为中间异或操作的输

9、入之一,中间的寄存器的内容作为最左边异或操作输入之一, 各个异或操作的结果作为与它左边那个寄存器的移入位。 重复以上步骤,每输入一位就做一次移位操作,直到输入了所有要计算的数据为止。这时,这个寄存器组中的数据就是 CRC-8的结果。CRC 运算通用电路方框图:CRC的工作原理是: CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式 G(x) 来得到, K 位要发送的信息位可对应于一个(k-1) 次多项式 K(x),r 位冗余位对应于一个 (r-1 )次多项式 R(x) ,由 r 位冗余 位组 成的 n=k+r 位码 对应 于一 个 (n-1) 次多 项式T(x)=Xr*K(x)+

10、R(x) 。(3) 循环冗余校验码的特点CRC校验码的检错能力很强 , 不仅能检查出离散错误 , 还能检查出突发错误 .CRC校验码具有以下的检错能力:CRC校验码可检测出所有单个错误,所有奇数位错误,所有双位的错误,所有小于、等于校验位长度的突发错误。三、课程设计过程1. 填充帧头部字段要完成一次帧封装的过程,首先要完成的是帧头部的装入,这一过程只要将前导码、定界符、目的地址、源地址、长度字段的相应数值按顺序写入就可以了。其中,长度字段的值即为要发送的数据的实际长度。 有以下两种方式来获得长度字段的值。方法一:While(!in.eof()in.get(a);bufj=a;.精品文档j+;方

11、法二: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 标准中规定了帧数据字段的最小长度为 46B,最大长度为 1500B。如果数据不足 46B,则需要通过填充 0 来补足;若数据长度超过 1500B,则将超过部分封装入下一个帧进行发送。由于帧头部分应该包括 6B 目的地址、 6B

12、 源地址、 2B 长度字段以及 4B 帧校验字段,因此帧头部分长度为 18B。前导码与帧前定界符不计入帧头长度中。那么, Ethernet 帧的最小长度为 64B,最大长度为 1518B。填充数据字段的代码如下:if(len=1500)len=0;if(len46)for(i=len;i46;i+)fr.datai=0x00;data_len=len;3.CRC校验帧封装的最后一步就是对数据进行校验, 并将校验结果记入帧校验字段。 CRC 编码实际上就是一个循环移位的模二运算。流程描述为:把 CRC中的值置为 0在原始数据 input 后添加 8 个 0while( 数据未处理完 )begin

13、if( crc 首位是 1)crc=crc XOR 100000111把 crc 中的值左移一位, 从 input中读取一位新的数据并置于crc 的 0 位crc 中的后 8 位就是经过 CRC-8校验的余数。这样,我们只需要看后8 位即可,因此上面流程可以简化。构造一个 8 位的寄存器 crc ,初始值为 0,数据依次移入 crc 的 0 位,同时 crc 的 7 位移出。当移出的数据为 1 时,crc 才和 00000111 进行 XOR运算;移出数据为 0 时,不做运算。 每次 crc 中数据位为 1 时还需要对 crc0 位进行处理伪代码:while( 数据未处理完 ).精品文档beginif(crc的首位是 1)crc左移 1位crc=crc XOR 00000111elsecrc左移 1位if(从 input中读入的新的数据为1)将 crc 0位置 1end4 相关扩展1. 比特型运算法定义一个寄存器组, 初始化为全 1. 依照电路图,每输入一个信息位,相当于一个时钟脉冲到来, 从高到低依次移位。 移位前信息位与 bit0 相加产生临时位,其中 bit15 移入临时位, bit10 、bit3 还要加上临时位。当

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

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