




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验1:网络编程设计与实现帧的封装 姓名:成凯 学号:2015122665实验一:网络编程设计与实现帧的封装姓名:成凯,学号:2015122665,专业:计算机技术成凯2015/11/13目录1程序开发的基础知识21.1帧的描述21.2CRC校验32设计思路52.1数据填充52.2CRC校验码的计算53程序流程图64程序代码75实验结果91 程序开发的基础知识1.1 帧的描述术语“帧”来源于串行线路上的通信。其中,发送者在发送数据的前后各添加特殊的字符,使它们成为一个帧。Ethernet从某种程度上可以被看作是机器之间的数据链路层连接。按802.3标准的帧结构如表1.1所示,802.3标准的E
2、thernet帧结构由6部分组成:表1.1 802.3标准的帧结构前导码帧前定界符目的地址源地址长度字段数据字段校验字段7B1B(2/6B)(2/6B)(2B)(长度可变)(4B)(1) 前导码与帧前定界符字段前导码由56位(7B)的10101010101010位序列组成。帧前定界符可以视为前导码的延续。1B的帧前定界符结构为10101011。如果将前导码与帧前定界符一起看,那么在62位1010101010位序列之后出现11。在11之后是Ethernet的目的地址字段。前导码与帧前定界符主要是保证接收同步,这8B接收后不需要保留,也不记入帧头长度中。(2) 目的地址和源地址目的地址(DA)与源
3、地址(SA)分别表示帧的接收结点地址与发送结点的硬件地址。在Ethernet帧中,目的地址和源地址字段长度可以是2B或6B。目前的Ethernet都使用6B(即(48位)长度的地址。Ethernet帧的地址可以是单播地址(unicast address)、多播地址(multicast adderss)与广播地址(broadcast address),目的地址的第一位为0表示单播地址,为1表示多播地址,目的地址为全1则表示广播地址。(3) 长度字段8023标准中的帧用2B定义数据字段包含的字节数。协议规定,帧数据的最小长度为46B,最大长度为1500H。设置最小帧长度的目的是使每个接收结点能够有
4、足够的时间检测到冲突。(4) 数据字段帧数据字段的最小长度为46B,最大为1500B。如果帧的LLC数据少于46B,则应将数据字段填充至46B。设置最小帧长度的目的是使每个接收点能够由足够的时间检测到冲突。填充字符是任意的,不计入长度字段值中。(5) 校验字段帧校验字段(FCS)彩位的CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。在这个程序实现中,彩位的CRC校验。CRC校验的生成多项式为:某些帧结构中还会包括帧类型字段,用来识别此帧所承载的数据的类型。当一个帧到达指定的计算机时,操作系统根据帧类型决定用哪个协议软件模块对它进行处理。自识别帧的主要优点是,可以在
5、同一物理网络中使用多个协议而互不干扰。1.2 CRC校验循环冗余编码(Cyclic Redundanry Code,CRC)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。利用CRC进行检错的过程可简单描述如下:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息的后边,构成一个新的二进制码序列(共k+r位),然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则在差错控制理论中称为“生成多项式”。(1) CRC编码的代数学原理在代数编码理
6、论中,将一个码组表示为一个多项式,码组中的各码元作为多项式的系数。例如,1100101表示为,即。设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k;生成多项式为G(x),G(x)的最高幂次等于r;CRC多项式为R(x);编码后的带CRC的信息多项式为T(x)。发送方编码的方法是:将P(x)乘以(即对应的二进制码序列左移r位),再除以G(x),即用二进制的模2运算进行乘M的运算,得余式即为R(x)。用模2运算进行加法时不进位,如,1111+1010=0101。减法和加法一样,按加法规则计算。用公式可以表示为: 2接收方解码的方法是:将T(x)除以G(x),如果余数为0,则说明传输
7、中无错误发生,否则说明传输有误。例如,信息码为1100,生成多项式为1011,即,则可以用以下方法计算CRC:即R(x)=x。注意到G(x)的最高幂次r=3,得出CRC为010。如果用竖式除法,计算过程为:因此,即1100000+010=1100010。如果传输无误,无余式。看一下上面的竖式除法,如果被除数是1100010,显然在商第3个1时,就能除尽。(2) CRC的基本实现以CRC-8为例(如图1.1所示),它由多个移位寄存器和加法器组成。编码、解码前将各寄存器初始化为0,输入位作为最右边异或操作的输入之一。三个寄存器上的移位操作同时进行,均为左移一位,左边寄存器的最左一位作为三个异或操作
8、的输入之一。每次移位时,最右边的寄存器内容作为中间异或的输入之一,中间的寄存器的内容作为最左边异或操作输入之一,各个异或操作的结果作为与它左边那个寄存器的移入位。重复心目步骤,每输入一个位就做一次移位操作,直到输入了所有要计算的数据为止。这时,这个寄存器组中的数据就是CRC-8的结果。图1.1 CRC基本实现CRC的工作原理是,CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(x)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(x),r位冗余位则对应于(r-1)次多项式R(x),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式。(3) 循环冗余校验
9、码的特点CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。CRC校验码具有以下检错能力:CRC校验码可检测出所有单个错误。CRC校验码可检测出所有奇数位错误。CRC校验码可检测出所有双位的错误。CRC校验码可检测出所有小于、等于校验位长度的突发错误。CRC校验码可以的概率检测出长度为(K+1)位的突发错误。2 设计思路程序共分三个部分:填充帧头部字段,填充数据字段,计算CRC校验码并填充。填充帧头部字段及数据字段。由于帧封装要求输入文件数据最大长度为1500B,那么当输入文件长度超过1500B时要进行分割,以每1500B为单位进行帧封装。这个程序就是初步实现了这一功能。2.
10、1 数据填充在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。写入前四个部分十分简单,而写入长度字段时需要计算输入文件的长度。2.2 CRC校验码的计算帧封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。本程序中实现的是CRC-8校验算法,由于CRC-8的生成多项式为即100000111,则生成的CRC校验码就是8位,所以CRC-8校验码的计算过程就是逐位填入并进行异或运算的过程:先构造一个8位的寄存器crc,初始值为0,数据依次移入crc的0位,同时crc的7位移出。当移出的数据为1时,crc才和0x07进行异或运算;移出的数据为0时,不做运算。实现的程
11、序为:unsigned char ch;/ch用来保存读入的字符。unsigned char crc=char(0x00);/余数初始值为0。while(1) /进行CRC计算outfile.get(ch); if(ch=0xff)/判断是否到了文件结尾,如果是,则退出循环。 break; for(j=0;j<8;j+) /对入读入的字符的8位分别处理。 if(crc&(0x80)=0x80) /当前余数最高位为1,需要进行除法运算。 crc=(crc<<1)&(0xff);/crc左移1位,最低位补0。 crc=crc|(ch&0x80)>&g
12、t;7);/将输入数据相应的值递补到余数末位。 crc=crc(0x07);/进行除法运算,即与除数的低8位相异或。 else /当前余数的最高位为0,不需要进行除法运算。 crc=(crc<<1)&(0xff);/crc左移1位,最低位补0。 crc=crc|(ch&0x80)>>7);/将输入数据相应位的值递补到余数末位。 ch=ch<<1;/读到的字符左移1位,使数据下一位作为输入位。 3 程序流程图程序流程图如图所示。4 程序代码#include<iostream.h>#include<fstream.h>#i
13、nclude<stdlib.h>#include<stdio.h>void main(int argc,char*argv) /如果输入命令行不正确,则输出提示后退出。if(argc!=3) printf("请按以下格式输入:framer inputfile outputfilen");exit(0);/打开指定的输入文件,以二进制方式打开并可读ifstream infile(argv1,ios:in|ios:binary,0); int length=0, i=1, j=0;infile.seekg(0,ios:end);/将读指针移到文件末尾。l
14、ength=infile.tellg();/计算指针偏移量,即为输入文件的长度。fstream outfile(argv2,ios:out|ios:in|ios:binary|ios:trunc,0); /打开输出文件for(int templength=0;templength<length;templength+=1500) /每1500个字符构成一个循环for(j=0;j<7;j+) outfile.put(char)0xaa);outfile.put(char)0xab);/写入7B的前导码和1B的帧前定界符。char des_add=char(0xB1), char(0x
15、B2), char(0xB3), char(0xB4), char(0xB5), char(0xB6);outfile.write(des_add, 6);/写入6B的目的地址。char sor_add=char(0xA1), char(0xA2), char(0xA3), char(0xA4), char(0xA5), char(0xA6);outfile.write(sor_add,6);/写入6B的源地址。unsigned char data1500;/创建字符数组。infile.seekg(templength,ios:beg);/将读指针移到文件指定地方。infile.read(da
16、ta,1500);/将文件数据读入到字符指针data中。int number=infile.gcount();/获取实际读得的数据数outfile.put(char(number>>8);outfile.put(char(number&0xff);/将读到的数据数写入到输出文件中。outfile.write(data,number);/将data内容写入到输出文件中。/如果输入文件长度不足46B,则用0补足46B。if(number<46) for(int j=number;j<46;j+)outfile.put(char(0x00);outfile.put(c
17、har(0x00);outfile.seekg(8,ios:beg);/将读指针指向目的地址字段,从此处开始CRC计算unsigned char ch;/ch用来保存读入的字符。unsigned char crc=char(0x00);/余数初始值为0。while(1) /进行CRC计算outfile.get(ch);if(ch=0xff)/判断是否到了文件结尾,如果是,则退出循环。break;for(j=0;j<8;j+) /对入读入的字符的8位分别处理。if(crc&(0x80)=0x80) /当前余数最高位为1,需要进行除法运算。crc=(crc<<1)&
18、;(0xff);/crc左移1位,最低位补0。crc=crc|(ch&0x80)>>7);/将输入数据相应的值递补到余数末位。crc=crc(0x07);/进行除法运算,即与除数的低8位相异或。 else /当前余数的最高位为0,不需要进行除法运算。crc=(crc<<1)&(0xff);/crc左移1位,最低位补0。crc=crc|(ch&0x80)>>7);/将输入数据相应位的值递补到余数末位。ch=ch<<1;/读到的字符左移1位,使数据下一位作为输入位。outfile.clear();outfile.seekp(-1,ios:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年巴音郭楞职业技术学院高职单招(数学)历年真题考点含答案解析
- 2025年山西职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年山东水利职业学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- ICU基础知识课件
- HR六大基础知识课件
- 2025年威海海洋职业学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- Flash多媒体课件基础知识
- 美国药学管理及启示
- 8S培训课件教学课件
- 环状混合痔手术护理常规
- 2024年郑州黄河护理职业学院单招职业适应性测试题库及答案解析
- 生产直通率记录表
- 2024年部编版五年级下册语文第七单元综合检测试卷及答案
- 医疗依法执业培训课件
- 施工现场安全围挡
- 拐杖及助行器的使用方法课件
- 中央环保督察迎战培训课件
- 风湿免疫科学教学设计案例
- 妊娠合并梅毒护理查房课件
- 2023小米年度报告
- 修大坝施工方案
评论
0/150
提交评论