欢迎来到天天文库
浏览记录
ID:39454247
大小:381.52 KB
页数:11页
时间:2019-07-03
《Ethernet帧结构解析..》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一Ethernet帧结构解析一.需求分析实验目的:(1)掌握Ethernet帧各个字段的含义与帧接收过程;(2)掌握Ethernet帧解析软件设计与编程方法;(3)掌握Ethernet帧CRC校验算法原理与软件实现方法。实验任务:(1)捕捉任何主机发出的Ethernet802.3格式的帧和DIXEthernetV2(即EthernetII)格式的帧并进行分析。(2)捕捉并分析局域网上的所有ethernetbroadcast帧进行分析。(3)捕捉局域网上的所有ethernetmulticast帧进行分析。实验环境:安装好Win
2、dows2000Server操作系统+Ethereal的计算机实验时间;2节课二.概要设计1.原理概述:以太网这个术语通常是指由DEC,Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。几年后,IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络;此三种帧的通用部分由802.2标准来定义,也就是我们熟悉的802网络共有的逻辑链路控制(LLC)。以
3、太网帧是OSI参考模型数据链路层的封装,网络层的数据包被加上帧头和帧尾,构成可由数据链路层识别的数据帧。虽然帧头和帧尾所用的字节数是固定不变的,但根据被封装数据包大小的不同,以太网帧的长度也随之变化,变化的范围是64-1518字节(不包括8字节的前导字)。帧格式EthernetII和IEEE802.3的帧格式分别如下。EthernetrII帧格式:--------------------------------------------------------------------------------------------
4、--
5、前序
6、目的地址
7、源地址
8、类型
9、数据
10、FCS
11、----------------------------------------------------------------------------------------------
12、8byte
13、6byte
14、6byte
15、2byte
16、46~1500byte
17、4byte
18、IEEE802.3一般帧格式-------------------------------------------------------------------------------------------
19、----------------
20、前序
21、帧起始定界符
22、目的地址
23、源地址
24、长度
25、数据
26、FCS
27、-----------------------------------------------------------------------------------------------------------
28、7byte
29、1byte
30、2/6byte
31、2/6byte
32、2byte
33、46~1500byte
34、4byte
35、EthernetII和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节的类型,而后者定义的是2字节的长
36、度;所幸的是,后者定义的有效长度值与前者定义的有效类型值无一相同,这样就容易区分两种帧格式2程序流程图:三.详细设计:1.CRC校验部分设计:为了对以太网帧的对错进行检验,需要设计CRC校验部分。采用以为相与的方式对帧的首部相继作8位CRC校验输入参数:chCurrByte低8位数据有效,记录了上一次CRC校验的余数chNextByte低8位数据有效,记录了本次要继续校验的一个字节传出参数:chCurrByte低8位数据有效,记录了本次CRC校验的余数voidcheckCRC(int&chCurrByte,intchNextBy
37、te){//CRC循环:每次调用进行8次循环,处理一个字节的数据。for(intnMask=0x80;nMask>0;nMask>>=1){if((chCurrByte&0x80)!=0)//首位为1:移位,并进行异或运算{chCurrByte<<=1;//移一位if((chNextByte&nMask)!=0)//补一位{chCurrByte
38、=1;}chCurrByte^=7;//首位已经移出,仅对低8位进行异或运算,7的二进制为0000,0111}else//首位为0,只移位,不进行异或运算{chCurrByte<<=1;
39、//移一位if((chNextByte&nMask)!=0)//补一位{chCurrByte
40、=1;}}}}2.部分变量的声明:intnSN=1;//帧序号intnCheck=0;//校验码intnCurrDataOffset=22;//帧头偏移量intnCur
此文档下载收益归作者所有