Ethernet帧结构解析.doc_第1页
Ethernet帧结构解析.doc_第2页
Ethernet帧结构解析.doc_第3页
Ethernet帧结构解析.doc_第4页
Ethernet帧结构解析.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

计算机网络实验学 院:计算机科学与信息工程学院班 级: 学 号: 2姓 名:实验1 Ethernet帧结构解析 1. 需求分析实验目的: 掌握Ethernet帧各个字段的含义与帧接收过程; 掌握Ethernet帧解析软件设计与编程方法; 掌握Ethernet帧CRC校验算法原理与软件实现方法。实验任务:实现帧解析的软件编程实验环境:1台PC机操作系统:Windows 7开发环境:Visual Studio 2010 。1.1问题重述根据给出的IEEE802.3格式的Ethernet帧结构,编写程序来解析并显示帧的各个字段值,并将得到的数据字段值组合写入输出文件。Ethernet帧数据从输入文件获得,默认文件为二进制数据文件。2概要设计2.1原理概述TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如Ethernet,令牌环网,FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)等。基于不同的硬件的网络使用不同形式的帧结构,Ethernet是当今应用最广泛的局域网技术。Ethernet V2.0的帧结构:前导码帧前定界符目的地址DA源地址SA类型字段数据字段帧校验字段7B1B6B6B2B461500B4B1. 前导码和帧前定界符。字段前导码由56位(7B)的101010.1010比特序列组成,帧前定界符由一个8位的字节组成,其比特序列为10101011。 如果将前导码与帧前定界符一起看,那么在62位101010.1010比特序列之后出现11。在这个11之后便是Ethernet帧的目的地址字段。从Ethernet物理层角 度看,接收电路从开始接收比特到进入稳定状态,需要一定的时间。设计前62位1和0的交替比特序列的目的是保证接收电路在帧的目的地址到来之前到达正常状 态。接收端在收到最后两位11时,标志在他之后应该是帧的目的地址。前导码与帧前定界符主要起到接收同步的作用,这8个字节接收后不需要保留,也不计入帧 头长度。2. 目的地址和源地址。目的地址与源地址分别表示帧的接收节点与发送节点的硬件地址。硬件地址一般称作MAC地址,物理地址或Ethernet地址。地址长度为6B(即48位)。为了方便起见,通常使用十六进制数字书写。 Ethernet帧的目的地址可分为3种:l 单播地址(unicast address):目的地址的第一位为0表示单播地址。目的地址是单播地址,则表示该帧只被与目的地址相同的节点所接收l 多播地址(multicast address):目的地址第一位为1表示多播地址。目的地址是多播地址,则表示该帧被一组节点所接收。l 广播地址(broadcast address):目的地址全为1表示广播地址。目的地址是广播地址,则表示该帧被所有所有节点接收。3. 类型字段类型字段表示的是网络层使用的协议类型。常见的协议类型:0800表示网络层使用IP协议,0806表示网络层使用ARP协议,8137表示网络层使用Novell IPX协议,809b表示网络层使用Apple Talk协议。4. 数据字段IEEE 802.3协议规定数据的长度在461500B之间。如果数据的长度少于46B,需要加填充字节,补充到46B。填充字节是任意的,不计入长度字段中。 帧头部分长度为18B,包括6B的目的地址字段,6B的源地址字段,2B的类型字段和4B的帧校验和字段,而前导码与帧前界定符不计入帧头长度中,那 么,Ehternet帧的最小长度为64B(46B+18B),最大长度为1518B(1500B+18B)。设置最小帧长度的一个目的是使每个接收节点 能够有足够的时间检测到冲突5. 帧校验字段帧校验字段FCS采用32位CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。在接收端进行校验,如果发现错误,帧将被丢弃。8位CRC校验的生成多项式为:2. 2主要问题问题一:文件的读写操作由于Ethernet帧数据需要从输入文件获得,而数据字段内容也需要写入输出文件,因此首先要完成对文件的相关操作。问题二:解析帧的头部字段在完成Ethernet帧解析的过程中,首先要进行的是帧头部的解析。这是只需将前导码、帧前定界符、目标地址、眼地址、长度字段的值,根据每个字段的规定长度依次读取。问题三:解析数据字段在进行帧的数据字段的解析过程中,需要注意的问题是数据字段的长度。IEEE802.3标准规定帧数据字段的最小长度为46字节,最大长度为1500字节。如果数据长度小于46字节,需要填充“0”来补足46字节,但这些“0”不计入长度字段。3 详细设计#include stdafx.h#include #include #include using namespace std;int _tmain(int argc, _TCHAR* argv)if(argc!=3)coutendl请按一下格式输入命令行:FrameParse input_file output_fileendl;/return 1;fstream outfile;outfile.open(argv2,ios:in|ios:out|ios:binary|ios:trunc);fstream infile;infile.open(argv1,ios:in|ios:binary/*|ios:trunc*/);if(!infile.is_open()coutendl无法打开文件endl;return 1;bool bframe=1; int nframes=0;int nframenum=0;int nframelen=0;while(bframe)nframenum+;coutendl帧nframenum开始解析?endl;nframes=infile.tellg();for(int i=0;i7;i+)if(infile.get()!=0xaa)cout没找到合法的帧?endl;infile.close();return 1;if(infile.get()!=0xab)cout没找到合法的帧?endl;infile.close();return 1;infile.seekg(nframes,ios:beg);coutendl前导码:;for(int i=0;i7;i+)couthexinfile.get()dec;coutendl帧前定界符:;couthexinfile.get();coutendl目的地址:;for(int i=0;i6;i+)couthexinfile.get()dec;if(i!=5)cout-;coutendl源地址:;for(int i=0;i6;i+)couthexinfile.get()dec;if(i!=5)cout-;coutendl长度字段:;couthexinfile.get();nframelen=infile.get();coutendlnframelen;char* data=new charnframelen;infile.read(data,nframelen);outfile.write(data,nframelen);coutendl数据字段:;for(int i=0;inframelen;i+)coutdatai;delete data;if(nframelen100)bframe=false;if(nframelen46)for(int i=0;i46-nframelen;i+)infile.get();coutendl帧校验字段:;for(int i=0;i4;i+)couthexinfile.get()dec;coutendl;coutendl帧全部解析完成endl;outfile.close();infile.close();return 1;4测试报告由于没有封装帧,所以提示“无法打开输入文件”5.2 使用说明由于界面十分简单,

温馨提示

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

评论

0/150

提交评论