模拟以太网帧的发送.docx

上传人:b****5 文档编号:3348405 上传时间:2022-11-22 格式:DOCX 页数:14 大小:534.76KB
下载 相关 举报
模拟以太网帧的发送.docx_第1页
第1页 / 共14页
模拟以太网帧的发送.docx_第2页
第2页 / 共14页
模拟以太网帧的发送.docx_第3页
第3页 / 共14页
模拟以太网帧的发送.docx_第4页
第4页 / 共14页
模拟以太网帧的发送.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

模拟以太网帧的发送.docx

《模拟以太网帧的发送.docx》由会员分享,可在线阅读,更多相关《模拟以太网帧的发送.docx(14页珍藏版)》请在冰豆网上搜索。

模拟以太网帧的发送.docx

模拟以太网帧的发送

 

软件学院综合训练项目报告

模拟以太网帧的发送与解析

 

专业

班级

姓名

学号

1、训练目的

1.掌握以太网mac帧的发送与解析过程。

2.巩固以太网的相关知识。

3.通过训练以太网中mac帧的发送与解析,更加深刻理解局域网知识。

 

2、训练方案

1.原理

1)载波侦听过程。

Ethernet中每个结点利用总线发送过程,总线是每个结点共享的公共传输介质。

所以结点在发送一个帧前,必须侦听总线是否空闲。

由于Ethernet的数据采用曼彻斯特方式,所以可以通过判断总线电平是否跳变来确定总线是否空闲。

若总线空闲,就可以启动发送,否则继续侦听。

  2)冲突检测。

在数据发送过程中,可能会产生冲突(冲突是指总线上同时出现两个或两个以上的发送信号,它们叠加后的信号波形与任何发送结点输出的信号波形不相同。

因为可能有多个主机都在侦听总线,当它们侦听到总线空闲时,都会往总线上发送数据)。

所以在发送数据的过程中,也应该进行冲突检测,只要发现冲突就应该停止发送数据。

3)随机延迟后重发。

在检测到冲突、停止发送后,结点进行随机延迟后重发。

若重发16次后还没成功,则宣告发送失败,取消该帧的发送。

随机延迟的计算方法一般采用截止二进制指数后退算法。

该算法可表示为:

τ=2k*R*a。

其中τ为结点重新发送需要的后退延迟时间,a为冲突窗口值(冲突窗口为总线最大长度和电磁波在介质中的传播速度比值的2倍),R为随机数,k的取值为k=min(n,10),n为该帧已被发送的次数。

下图给出了Ethernet帧的发送流程。

2.以太网

1)以太网:

以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。

以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以特定速率运行在多种类型的电缆上。

2)以太网的分类:

数据速率为10Mbps的以太网称为标准以太网,数据速率为100Mbps的以太网称为快速以太网,数据速率为1000Mbps的以太网称为千兆以太网。

3)以太网的媒体访问控制:

CSMA/CD(带有冲突检测的载波侦听多路访问)

在CSMA中,由于信道传播时延的存在,即使总线上两个站点没有监听到载波信号而发送帧时,仍可能会发生冲突。

由于CSMA算法没有冲突检测功能,即使冲突已发生,仍然将已破坏的帧发送完,使总线的利用率降低。

CSMA/CD是一种CSMA的改进方案。

发送站点在传输过程中仍继续监听媒体,以检测是否存在冲突。

如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在。

一旦检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其它各有关站点。

这样,通道容量就不致因白白传送已受损的帧而浪费,可以提高总线的利用率。

2.MAC帧

1)以太网的MAC帧格式

以太网的MAC帧格式有两种标准,一种是DIXEthernetV2标准,另一种是IEEE的802.3标准。

但两种帧格式可以在同一以太网络共存。

两种帧格式都具有7个域:

前导码、帧首定界符、目的地址、源地址、长度/类型、数据、帧校验序列。

如下图所示。

7

1

6

6

2

46-1500

4

前导码

帧首定界符

目的地址

源地址

类型/长度

数据

帧校验序列

  

3.MAC帧的解析方案

1)模拟(vc6)

在MicrosoftVisualC++V6环境下用C++程序代码模拟MAC帧的发送解析。

2)CMSA/CD仿真

在WINDOS环境下利用ipv4,进行CMSA/CD仿真,实现MAC帧的发送。

3)抓包软件

利用软件进行MAC帧的发送解析模拟。

4.训练方案

利用上述方法对MAC帧的发送解析进行模拟。

3、训练内容

1.模拟(VC6)

1)编写C++程序代码

1 校验部分

voidcheckCRC(int&chCurrByte,intchNextByte)

{

//CRC循环:

每次调用进行8次循环,处理一个字节的数据。

for(intnMask=0x80;nMask>0;nMask>>=1)

{

if((chCurrByte&0x80)!

=0)//首位为1:

移位,并进行异或运算

{

chCurrByte<<=1;//移一位

if((chNextByte&nMask)!

=0)//补一位

{

chCurrByte|=1;

}

chCurrByte^=7;//首位已经移出,仅对低8位进行异或运算,7的二进制为0000,0111

}

else//首位为0,只移位,不进行异或运算

{

chCurrByte<<=1;//移一位

if((chNextByte&nMask)!

=0)//补一位

{

chCurrByte|=1;

}

}

}

}

2 文件检测部分

intargc,

char*argv[]

//检测命令行参数的正确性

if(argc!

=2)

{

cout<<"请以帧封装包文件为参数重新执行程序"<

exit(0);

}

//检测输入文件是否存在,并可以按所需的权限和方式打开

ifstreamfile(argv[1],ios:

:

in|ios:

:

binary|ios:

:

nocreate);

if(!

file.is_open())

{

cout<<"无法打开帧封装包文件,请检查文件是否存在并且未损坏"<

exit(0);

}

3 数据检索部分

intnSN=1;//帧序号

intnCheck=0;//校验码

intnCurrDataOffset=22;//帧头偏移量

intnCurrDataLength=0;//数据字段长度

boolbParseCont=true;//是否继续对输入文件进行解析

intnFileEnd=0;//输入文件的长度

//计算输入文件的长度

file.seekg(0,ios:

:

end);//把文件指针移到文件的末尾

nFileEnd=file.tellg();//取得输入文件的长度

file.seekg(0,ios:

:

beg);//文件指针位置初始化

cout.fill('0');//显示初始化

cout.setf(ios:

:

uppercase);//以大写字母输出

//定位到输入文件中的第一个有效帧

//从文件头开始,找到第一个连续的“AA-AA-AA-AA-AA-AA-AA-AB”

while(true)

{

for(intj=0;j<7;j++)//找7个连续的0xaa

{

if(file.tellg()>=nFileEnd)//安全性检测

{

cout<<"没有找到合法的帧"<

file.close();

exit(0);

}

//看当前字符是不是0xaa,如果不是,则重新寻找7个连续的0xaa

if(file.get()!

=0xaa)

{

j=-1;

}

}

if(file.tellg()>=nFileEnd)//安全性检测

{

cout<<"没有找到合法的帧"<

file.close();

exit(0);

}

if(file.get()==0xab)//判断7个连续的0xaa之后是否为0xab

{

break;

}

}

//将数据字段偏移量定位在上述二进制串之后14字节处,并准备进入解析阶段

nCurrDataOffset=file.tellg()+14;

file.seekg(-8,ios:

:

cur);

 

//主控循环

while(bParseCont)//当仍然可以继续解析输入文件时,继续解析

{

//检测剩余文件是否可能包含完整帧头

if(file.tellg()+14>nFileEnd)

{

cout<

file.close();

exit(0);

}

4 判断输出部分

从整体数据中依次输出帧的序号、前导码、帧前界定符、目的地址、原地址、类型字段、数据字段、CRC校验及状态。

2)input二进制文件

2.CSMA/CD仿真

1)配置训练环境

Ipv4网络拓扑搭建

确保各主机之间通信连接正常

2)编辑并发送MAC广播帧

 

主机E启动仿真编辑器。

主机E编辑一个MAC帧,

目的MAC地址:

FFFFFF-FFFFFF。

源MAC地址:

主机E的MAC地址。

协议类型或数据长度:

大于0x0600。

数据字段:

编辑长度在46—1500字节之间的数据。

主机A、B、C、D、F启动协议分析器,打开捕获窗口进行数据捕获并设置过滤条件(源MAC地址为主机E的MAC地址)。

主机E发送已编辑好的数据帧。

主机A、B、C、D、F上停止捕获数据,察看捕获到的数据中是否含有主机E所发送的数据帧。

3)再次仿真实验,理解MAC帧的发送与解析。

3.抓包软件

1)下载并安装wireshark网络抓包软件。

2)利用该软件实现MAC帧的发送解析模拟。

 

4、训练项目测试

1.模拟(VC6)运行测试

1)启动CMD

2)将执行文件与input文件拷贝至指定文件夹,并运行

3)运行结果

2.CSMA/CD仿真运行测试

3.抓包软件运行测试

五、结论

本次训练主要是对以太网MAC帧的发送与解析过程进行模拟,以太网(Ethernet)指的是开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。

以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以特定速率运行在多种类型的电缆上。

CSMA/CD即带冲突检测的载波监听多路访问技术。

在传统的共享以太网中,所有的节点共享传输介质。

保证传输介质有序、高效地为许多节点提供传输服务,是以太网的介质访问控制协议要解决的问题。

MAC帧是数据帧的一种。

而所谓数据帧,就是数据链路层的协议数据单元,它包括三部分:

帧头,数据部分,帧尾。

其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据。

本次模拟分别运用3种方式进行,第一种是在vc6环境下通过程序实现,这种模拟局限性比较大,第二种是常见的在实验室环境下通过ipv4网络拓扑环境进行实时仿真,这种比较麻烦,工作量比较大,第三种是通过软件模拟,这种仿真更真实。

本次训练涉及到网络,局域网,以太网的相关知识,通过灵活运用,融会贯通,才能更好的实现训练目标。

 

六、心得体会

这次的项目主要是研究模拟以太网mac帧的发送与解析,其中CSMA/CD协议是一种很重要的协议,其主要思想就是当一个节点发送数据时,首先监听信道,如果信道空闲就发送数据,并且继续监听;如果在数据发送过程中监听到了冲突,则立刻停止数据发送,等待一段随机的时间后,并重新开始尝试发送数据。

在本次试验中,考验了我们的学习水平与动手能力。

也在本次试验中更加加深了对局域网知识的理解,但有很大的学习空间。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1