实验1.解析Ethernet帧

上传人:飞*** 文档编号:47841160 上传时间:2018-07-05 格式:PDF 页数:6 大小:270.77KB
返回 下载 相关 举报
实验1.解析Ethernet帧_第1页
第1页 / 共6页
实验1.解析Ethernet帧_第2页
第2页 / 共6页
实验1.解析Ethernet帧_第3页
第3页 / 共6页
实验1.解析Ethernet帧_第4页
第4页 / 共6页
实验1.解析Ethernet帧_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《实验1.解析Ethernet帧》由会员分享,可在线阅读,更多相关《实验1.解析Ethernet帧(6页珍藏版)》请在金锄头文库上搜索。

1、网络软件开发技术实验报告实验一解析 Ethernet帧1实验目的:(1) 根据局域网MAC 子层的基本原理, 通过解析Ethernet帧,掌握帧结构的各个字段含义以及帧的接收过程,加深对MAC 子层设计思想与设计方法的理解(2) 掌握 Ethernet帧结构解析软件设计与编程实现的方法(3) 掌握帧 CRC 校验算法原理与编程实现方法2 实验环境:(1)Linux 操作系统(2)局域网能连接Internet。3实验报告中应包含如下内容:1)搭建和配置开发环境的方法,重点介绍使用了哪些软件,其功能及其配置;先搭建 VMware,然后安装linux系统。安装 gcc 编译器,安装加载libpcap

2、包,2)解析帧的相关知识,包括帧结构和CRC工作原理;帧结构分为5 部分:、前导码和帧前定界符字段字段前导码由56 位( 7B)的 101010.1010比特序列组成,帧前定界符由一个8 位的字节组成,其比特序列为10101011。如果将前导码与帧前定界符一起看,那么在 62 位 101010.1010比特序列之后出现 11。 在这个 11 之后便是Ethernet帧的目的地址字段。 从 Ethernet物理层角度看,接收电路从开始接收比特到进入稳定状态,需要一定的时间。设计前62 位 1和 0 的交替比特序列的目的是保证接收电路在帧的目的地址到来之前到达正常状 态。接收端在收到最后两位11

3、时,标志在他之后应该是帧的目的地址。前导码与帧前定界符主要起到接收同步的作用,这 8 个字节接收后不需要保留,也不计入帧头长度。、目的地址DA和源地址 SA 网络软件开发技术实验报告目的地址与源地址分别表示帧的接收节点与发送节点的硬件地址。硬件地址一般称作 MAC 地址,物理地址或Ethernet地址。地址长度为6B(即 48 位)。为了方便起见,通常使用十六进制数字书写。Ethernet帧的目的地址可分为3 种:单播地址( unicast address):目的地址的第一位为0 表示单播地址。目的地址是单播地址,则表示该帧只被与目的地址相同的节点所接收。多播地址( multicast add

4、ress):目的地址第一位为1 表示多播地址。目的地址是多播地址,则表示该帧被一组节点所接收。broadcast address):目的地址全为1 表示广播地址。目的地址是广播地址,则表示该帧被所有所有节点接收。、类型字段类型字段表示的是网络层使用的协议类型。常见的协议类型:0800 表示网络层使用 IP 协议, 0806 表示网络层使用ARP协议, 8137 表示网络层使用Novell IPX协议, 809b 表示网络层使用Apple Talk协议。、数据字段IEEE 802.3协议规定数据的长度在461500B 之间。如果数据的长度少于46B,需要加填充字节,补充到46B。填充字节是任意的

5、,不计入长度字段中。帧头部分长度为18B,包括 6B 的目的地址字段,6B 的源地址字段,2B 的类型字段和4B的帧校验和字段,而前导码与帧前界定符不计入帧头长度中,那么, Ehternet帧的最小长度为64B(46B+18B ),最大长度为1518B(1500B+18B)。设置最小帧长度的一个目的是使每个接收节点能够有足够的时间检测到冲突、帧校验字段FCS 帧校验字段FCS采用 32 位 CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。在接收端进行校验,如果发现错误,帧将被丢弃。在本次作业中,为了简便起见,采用8 位的 CRC 校验。 8 位 CRC校验的生成多

6、项式为:CRC 工作原理: 将要发送的数据比特序列当做一个多项式f(x)的系数,在发送端用收发双方预先约定好的生成多项式G (x)去除,求得一个余数多项式。将余数多项式附在数据多项式后发送到接收端。在接收端用同样的生成多项式G(x)去除接受数据多项式f (x),得到计算余数多项式。如果计算余数多项式与接受余数多项式相同,则表示传输无差错;反之则表示传输有差错。3)使用 UML画出程序的流程图;网络软件开发技术实验报告4)程序中的关键代码和注释;、用户输入参数错误时输出错误提示信息,程序强制退出If(argc!=2) Cout=nFileEnd) CoutnFileEnd) Cout”没有找到完

7、整的帧头,解析终止“endl; File.close(); Exit(0); 、帧头信息的解析输出目的地址:Coutendl ”目的地址 :t ”; For(int i=0; i6; i+) C=file.get(); Cout.width(2); Couthexcdec(i=5?” :”- ”); 输出源地址字段:Coutendl ”源地址 :t”; For(int i=0; i6; i+) C=file.get(); Cout.width(2); Couthexcdec(i=5?” :”- ”); 输出类型字段Int EthertType; 网络软件开发技术实验报告Coutendl ”类型

8、字段 :t ”; C=file.get(); Cout.width(2); Couthexcdec ” ; EthertType=c; C=file.get(); Cout.width(2); Couthexc; EthertType=8; EthertType|=c; 、 CRC校验算法把 register8中的值置0;在原始数据Input后添加 8 个 0;While(数据未处理完) If(register8首位是 1) Register8中的数据左移1 位; If(从 input中读入的新数据为1) 将 register8的最低位置1; Register8=register8 XOR 0

9、0000111; Else Register8中的数据左移1 位; If(从 input中读入新数据为1) 将 register8的最低位置1; 5)程序健壮性保障措施;程序分为3 个主要部分:、安全性检测部分检测用户输入的参数是否正确。检测输入文件是否存在并可以打开?、初始化及解析准备部分定位输入文件中第一个有效Ethernet帧。查看剩余文件是否可能包含完整的帧头、解析的主控循环部分安全性检测部分和初始化及解析准备部分都属于程序健壮性保护措施。6)给出 Ethernet帧头的解析算法;网络软件开发技术实验报告输出目的地址:Coutendl ”目的地址 :t ”; For(int i=0;

10、i6; i+) C=file.get(); Cout.width(2); Couthexcdec(i=5?” :”- ”); 输出源地址字段:Coutendl ”源地址 :t”; For(int i=0; i6; i+) C=file.get(); Cout.width(2); Couthexcdec(i=5?” :”- ”); 输出类型字段Int EthertType; Coutendl ”类型字段 :t ”; C=file.get(); Cout.width(2); Couthexcdec ” ; EthertType=c; C=file.get(); Cout.width(2); Couthexc; EthertType=8; EthertType|=c; 7)判断下一个Ethernet帧的方法。处理完帧头信息之后,文件指针所指的位置就是数据字段的起始位置。每帧的最后一个字节是CRC校验码, 倒数第二个字节就是数据字段的最后一个字节。所以要确定数据字段的结束位置,就归结为定位下一个帧的其实位置,即寻找下一个连续的“ AA AA AA AA AA AA AA AB ”比特串。如果直到文件结束仍没找到这样的比特串,则视该帧为最后一个需要处理的帧,数据字段结束于文件的倒数第二个字节。

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

当前位置:首页 > 行业资料 > 其它行业文档

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