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

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

ID:31826536

大小:313.50 KB

页数:8页

时间:2019-01-20

模拟的总线型以太网数据帧发送过程_第1页
模拟的总线型以太网数据帧发送过程_第2页
模拟的总线型以太网数据帧发送过程_第3页
模拟的总线型以太网数据帧发送过程_第4页
模拟的总线型以太网数据帧发送过程_第5页
资源描述:

《模拟的总线型以太网数据帧发送过程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准方案题目:模拟总线型以太网数据帧发送过程姓名:学号:班号:时间:2016/10/03精彩文档实用标准方案计算机学院时间:目录摘要1目的12要求13相关知识14实现原理及流程图错误!未定义书签。5程序代码46运行结果与分析57参考文献15精彩文档实用标准方案题目:模拟总线型以太网数据帧发送过程1、目的模拟总线型以太网数据帧发送过程,熟悉Ethernet的基本工作原理,特别是CSMA/CD介质访问控制方法。2、要求在一台计算机上模拟总线-台网发送过程,总线上连接的计算机个数两个,支持CSMA/CA协议(二进制指数退避算法)已经实现了a计算机模拟发送过程,请完成b计算机模拟发送

2、过程。3、相关知识Ethernet的核心技术是随机争用型介质访问方法,即带有冲突检测的载波监听多路访问(CSMA/CD)方法。1.Ethernet的帧的发送流程1)载波监听过程。Ethernet中每个结点利用总线发送数据,总线是每个结点共享的公共传输介质,所以结点在发送一个帧前,必须侦听总线是否空闲。由于Ethernet的数据采用曼彻斯特编码方式,所以可以通过判断总线电平是否跳变来确定总线是否空闲。若总线空闲,就可启动发送,否则继续侦听。2)冲突检测。在数据发送过程中,可能会产生冲突(冲突是指总线上同时出现两个或两个以上的发送信号,它们叠加后的信号与波形与任何发送结点输出的信号波

3、形不相同。因为可能有多个主机都在侦听总线,当他们侦听到总线空闲时,就会往总线上发送数据)。所以在发送数据的过程中,也应该进行冲突检测,只要发现冲突就应该停止发送数据。3)随机延迟后重发。在检测到冲突,停止发送后,结点进行随机延迟后重发。若重发16次后还没成功,则宣告发送失败,取消该帧的发送。延迟计算的方法一般采用截止二进制指数后退算法.该算法可表示为:r=2^k*R*a.其中r为结点重新发送需要后退的延迟时间,a为冲突窗口值(冲突窗口为总线最大长度和电磁波在介质中的传播速度比值的二倍),R为随机数,k的取值为k=min(n,10),n为该帧已被发送的次数。2.Ethernet帧接

4、收流程帧接收流程大致可以分为以下三个步骤:1)检查是否发生冲突,若发生冲突,则丢弃该帧;若没有冲突,进入下一步2)检查该帧的目的地址是否可以接收该帧,若可以接收,则进入下一步。3)检查CRC校验和LLC数据长度。若都正确,接收该帧,否则丢弃。精彩文档实用标准方案1、实现原理及流程图实现原理重难点:1)模拟冲突的过程,在这个程序中不要使用任何线程同步机制2)若程序不能模拟出冲突,可以在某些地方加入延时。核心代码:UINTaThread(LPVOIDpParam){//初始化成功次数,冲突计数器,冲突窗口与随机数inti=0;intCollisionCounter=16;double

5、CollisionWindow=0.005;intrandNum=rand()%3;Loop://总线空闲if(Bus==0){//模拟发送Ethernet帧Bus=Bus

6、ID1;Sleep(12);//发送过程无冲突if(Bus==ID1){printf("%dSendSuccess",ID1);Bus=0;CollisionCounter=16;Sleep(rand()%10);i++;printf("主机a发送成功次数=%d",i);//发送次数不够3次,开始下一次发送if(i<5)gotoLoop;}//发送过程有冲突else{printf("%dSendCol

7、lision",ID1);Bus=0;CollisionCounter--;if(CollisionCounter>0)精彩文档实用标准方案{//随机延迟重发,延迟算法用截止二进制指数后退算法Sleep(randNum*(int)pow(2,(CollisionCounter>10)?10:CollisionCounter)*CollisionWindow);gotoLoop;}elseprintf("%ldSendFailure",ID1);}}//总线忙elsegotoLoop;return0;}精彩文档实用标准方案流程图5、程序代码(以附件形式,编程环境:visua

8、lc++6.0)见附件SendFrame文件夹1、运行结果与分析运行结果截图:精彩文档实用标准方案在visualstudio中建立支持MFC的win32consoleapplication时,会自动生成与项目同名的cpp文件,因为对MFC编程不太了解,所以一开始我是在项目中再新建一个cpp文件添加上述代码,导致的结果是编译能够通过,但是运行的时候只是黑框,没有任何结果。在vc++6.0中重新尝试,编译能够通过,但是链接的时候提示项目中定义了两个_main函数,尝试将代码复制进自动

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。