1 / 9
文档名称:

模拟的总线型以太网数据帧发送过程.docx

格式:docx   大小:162KB   页数:9页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

模拟的总线型以太网数据帧发送过程.docx

上传人:guoxiachuanyue015 2022/11/24 文件大小:162 KB

下载得到文件列表

模拟的总线型以太网数据帧发送过程.docx

文档介绍

文档介绍:该【模拟的总线型以太网数据帧发送过程 】是由【guoxiachuanyue015】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【模拟的总线型以太网数据帧发送过程 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实用标准方案
結彩文档
結彩文档
题目:
拟总线型以太网数据帧发送过
姓名:
学号:
班号:
时间:2016/10/03
实用标准方案
結彩文档
結彩文档
实用标准方案
結彩文档
結彩文档
计算机学院
时间:
目录
摘要
1目的1
要求1
相关矢口识1
4实现原理及流程图错误!未定义书签。
5程序代码4
6运行结果与分析4
7参考文献15
实用标准方案
結彩文档
結彩文档
实用标准方案
实用标准方案
緖彩文档
結彩文档
题目:模拟总线型以太网数据帧发送过程
1、目的
模拟总线型以太网数据帧发送过程,熟悉Ethernet的基本工作原理,特别是CSMA/CD介质访问控制方法。
2、要求
在一台计算机上模拟总线-台网发送过程,总线上连接的计算机个数两个,支持CSMACA协议(二进制指数退避算法)
已经实现了a计算机模拟发送过程,请完成b计算机模拟发送过程。
3、相关知识
Ethernet的核心技术是随机争用型介质访问方法,即带有冲突检测的载波监听多路访问()方法。
Ethernet的帧的发送流程
1)载波监听过程。Ethernet中每个结点利用总线发送数据,总线是每个结点共享的公共传输介质,所以结点在发送一个帧前,必须侦听总线是否空闲。由于Ethernet的数据采用曼彻斯特编码方式,所以可以通过判断总线电平是否跳变来确定总线是否空闲。若总线空闲,就可启动发送,否则继续侦听。
2)冲突检测。在数据发送过程中,可能会产生冲突(冲突是指总线上同时出现两个或两个以上的发送信号,它们叠加后的信号与波形与任何发送结点输出的信号波形不相同。因为可能有多个主机都在侦听总线,当他们侦听到总线空闲时,就会往总线上发送数据)。所以在发送数据的过程中,也应该进行冲突检测,只要发现冲突就应该停止发送数据。
3)随机延迟后重发。在检测到冲突,停止发送后,结点进行随机延迟后重发。若重发16次后还没成功,则宣告发送失败,取消该帧的发送。延迟计算的方法一般采用截止二进制指数后退算法•该算法可表示为:i-=2-k*R*,a为冲突窗II值(冲突窗II为总线最人长度和电磁波在介质中的传播速度比值的二倍),R为随机数,k的取值为k=min(11,10),n为该帧已被发送的次数。
Ethernet帧接收流程
帧接收流程大致可以分为以下三个步骤:
1)检查是否发生冲突,若发生冲突,则丢弃该帧;若没有冲突,进入下一步
2)检查该帧的目的地址是否可以接收该帧,若可以接收,则进入下一步。
3)检查CRC校验和LLC数据长度。若都正确,接收该帧,否则丢弃。
实用标准方案
实用标准方案
緖彩文档
結彩文档
4、实现原理及流程图
实现原理
重难点:1)模拟冲突的过程,在这个程序中不要使用任何线程同步机制
2)若程序不能模拟出冲突,可以在某些地方加入延时。
核心代码:
UINTaTluead(LPVOIDpPaiain)
{
〃初始化成功次数,冲突计数器,冲突窗II与随机数
mt1=0;
mtCollisionCountei-16;
doubleCollisionWindow=;
mtrandNum=iaiid()%3;
Loop:
〃总线空闲
if(Bus=0)
{
〃模拟发送Ethernet帧
Bus=Bus|IDl;
Sleep(12);
〃发送过程无冲突
if(Bus==IDl)
{
prmtf(H%dSendSuccess\n*\IDl);
Bus=0;
CollisionCountei-16;
Sleep(rand()%10);
i++;
pnntf("主机a发送成功次数=%dm”,i);
〃发送次数不够3次,开始下一次发送时5)gotoLoop;
}
〃发送过程有冲突
else
{
prmtf(H%dSendCollision^^IDl);
Bus=0;
CollisionCounter—;
if(CollisionCountei>0)
〃随机延迟重发,延迟算法用截||••二进制指数后退算法
实用标准方案
实用标准方案
緖彩文档
結彩文档
Sleep(randNum*(int)pow(2,(CollisionCounter>10)?10:CollisionCounter)*CollisionWindow);gotoLoop;
else
printf(H%ldSendFailure^.IDl);
}
}
〃总线忙
else
gotoLoop;
return0;
}
实用标准方案
实用标准方案
結彩文档
結彩文档
5、程序代码(以附件形式,编程环境:visualC++)
见附件SendFrame文件夹
5、运行结果与分析
运行结果截图:
实用标准方案
实用标准方案
結彩文档
結彩文档
在visualstudio中建立支持MFC的Win32consoleapplication时,会自动生成与项目同名的cpp文件,因为对MFC编程不太了解,所以一开始我是在项目中再新建一个cpp文件添加上述代码,导致的结果是编译能够通过,但是运行的时候只是黑框,没有任何结果。
,编译能够通过,但是链接的时候提示项目中定义了两个_mam函数,尝试将代码复制进自动生成的与项目同名的cpp文件中,运行通过。
检索到的关于MFC编程的概述如下:
MFC(MicrosoftFoundationClassLibrary)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接II的标准实现方法,程序员所要做的就是通过预定义的接II把具体应用程序特有的东西填入这个轮廓。MicrosoftVisualC++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等):资源编辑器用于帮助直观地设计用户接I】;Classwizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。MFC提供了一个Wmdows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了人部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。
MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的爭件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C++对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。
实用标准方案
实用标准方案
結彩文档
結彩文档
参考文献
Pioject3资料
计算机网络第六版谢希仁著