运算机网络课程设计(模拟ethernet结点的数据发送流程)

上传人:奇异 文档编号:278356094 上传时间:2022-04-17 格式:DOCX 页数:13 大小:111.99KB
返回 下载 相关 举报
运算机网络课程设计(模拟ethernet结点的数据发送流程)_第1页
第1页 / 共13页
运算机网络课程设计(模拟ethernet结点的数据发送流程)_第2页
第2页 / 共13页
运算机网络课程设计(模拟ethernet结点的数据发送流程)_第3页
第3页 / 共13页
运算机网络课程设计(模拟ethernet结点的数据发送流程)_第4页
第4页 / 共13页
运算机网络课程设计(模拟ethernet结点的数据发送流程)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《运算机网络课程设计(模拟ethernet结点的数据发送流程)》由会员分享,可在线阅读,更多相关《运算机网络课程设计(模拟ethernet结点的数据发送流程)(13页珍藏版)》请在金锄头文库上搜索。

1、运算机网络课程设计报告系别:信息科学与技术系专业班级:学生姓名:指导教师:(课程设计时刻:2009年6月22日2009年6月26日)前言局域网技术的进展超级迅速,在企业、机关、学校的信息管理与服务领域取得普遍的应用。在初期,人们将局域网归为一种数据通信网络。随着局域网体系结构和协议标准研究的进展、操作系统的进展和光纤技术的引入,局域网技术取得了快速进展。目前,应用最普遍的局域网是总线型局域网,即以太网(Ethernet)o总线型局域网的核心技术是随机争用型介质访问控制方式,即带有冲突检测的载波侦听多路访问(CSMA/CD,CarrierSenseMultipleAccesswithCollis

2、ionDetection)方式。CSMA/CD方式用来解决多个结点共享公用总线的问题。在Ethernet中,任何结点都没有可预约的发送时刻,这种介质访问控制属于随机争用型方式。学习Ethernet技术对深切掌握局域网知识是超级重要的。本课程设计的目的是模拟Ethernet帧的发送进程,熟悉Ethernet帧的数据发送流程,即CSMA/CD工作流程。一、课程设计目的和意义4二、课程设计题目描述和要求4三、实验报告内容5(一)相关知识5(二)课程设计分析71 .设计中的重点及难点72 .核心代码7inti=0;序流程7(三)完整程序8四、总结13一、课程设计目的和意义局域网技术进展十分迅速,目前已

3、在企业、机关、学校的信息管理与信息服务领域中取得了普遍的应用。在初期,人们将局域网归为一种数据通信网络。随着局域网体系结构和协议标准研究的进展、操作系统的进展和光纤技术的引入,局域网技术取得了快速进展。目前Ethernet是应用最普遍的局域网。因此,学习Ethcrncl技术对深切掌握局域网知识是超级重要的。本课程设计的目的是模拟Ethernet帧的发送进程,熟悉巳thcmci帧的数据发送流程,即CSMA/CD工作流程。二、课程设计题目描述和要求题目:编写程序模拟Ethcmci结点的数据发送流程设计要求:(1)用两个线程a,b来模拟Ethcrnci上的两台主机。(2)用一个双字类型变量Bus来模

4、拟总线(将其初始化为“/()”,而且总线等于“/()”时表示总线空闲)。(3)两个干线程向总线发送自己的数据。数据用该线程的线程信号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即Bus二Bus|】D,ID为该线程的线程号)。(4)每台主机须向总线成功发送10次数据,若是其中某次数据发送失败,则该线程结束。(5)发送流程须遵循CSMA/CD。随机延迟算法中的冲突窗口取。在数据发送成功(即Bus=BD)后,报告IDsendsuccess,产生冲突(IPBus!=ID)后,报告“IDsendcollision”,发送失败(即冲突计数器值为0)后报告“IDsendfailure”。随着主机

5、发送成功次数的增加,报告其已发送成功的次数,如“主机A发送成功次数二3。三、实验报告内容(一)相关知识Ethernet的核心技术是随机争用型介质访问方式,即带有冲突检测的载波侦听多路访问(CSMA/CP)方式。1 .Ethernet帧的发送流程1)载波侦听进程。Ethernet中每一个结点利用总线发送数据,总线是每一个结点共享的公共传输介质。所以结点在发送一个帧前,必需侦听总线是不是空闲。由于Ethernet的数据采用曼彻斯特编码方式,所以能够通过判断总线电平是不是跳变来肯定总线是不是空闲。若总线空闲,就可以够启动发送,不然继续侦听。2)冲突检测。在数据发送进程中,可能会产生冲突(冲突是指总线

6、上同时出现两个或两个以上的发送信号,他们叠加后的信号波形与任何发送结点的输出波形都不相同)。因为可能有多个主机都在侦听总线,当它们侦听到总线空闲时,就会往总线上发送数据。所以在发送数据的进程中,也应该进行冲突检测,只要发觉冲突就应该当即停止发送数据。3)随即延迟后重发。在检测到冲突、停止发送后,结点进行随机延迟后重发。若发16次后还没成功,则宣告发送失败,取消该帧的发送。随机延迟的算法一般采用截断的二进制指数退避算法。当出现线路冲突时,若是冲突的各站点都采用一样的退避距离时刻,则很容易产生二次、三次的碰撞。因此,要求各个站点的退避距离时刻具有不同性。这要求通过退避算法来实现。当一个站点发觉线路

7、忙时,要等待一个延不时刻M,然后再进行侦听工作。延不时刻M由以下算法决定:M=2k*R*a。其中a为冲突窗口值(冲突窗口为总线最大长度和电磁波在介质中传播速度比值的2倍),R为随机数,k的取值为k=min(n,16),n为该帧已被发送的次数。图1给出了Ethernet帧的发送流程。2 Ethernet帧的接收流程帧的接收流程大致能够分为以下三个步骤:1)检查是否发生冲突,若发生冲突,则丢弃该帧;若没有冲突,进入下一步。2)检查该帧的目的地址看是否可以接收该帧,若可以接收,则进入下一步。3)检查CRC检验和LLC数据长度。若都正确,接受该帧,否则丢弃。图1Ethernet帧的发送流程(二)课程设

8、计分析1 .设计中的重点及难点1)模拟冲突进程,在那个程序中不要利用任何线程同步机制。2)若程序中不能模拟出冲突,能够在某些地方加入延时。2 核心代码inti=0;序流程图2主程序流程图(三)完整程序注意:编译时需设置工程属性(菜单中工程一一设置一一利用MFC作为静态链接库)#includc cmath”/#includcHn/#includc/#includc/CWinThrcad * thread 1, * thrcad2;/概念2个线程对象,别离代表a, bDWORD 1D1,102, Bus = 0;2线程ID,总线标志LUNT aThrcad(LPVOID pParam);线程a,代

9、表主机aUI NT bThrcad(LPVOID pParam);线程b,代表主机busing namespace std;int main(int argc, char* argv, char * cnvp)ininRctCodc=0;thread1=:AfxBcginThrcad(aThrcad,NULL);/启动线程a1D1=thread1-m_nThrcadID;thread2=:AfeBcginThrcad(bThread,NULL);/启动线程b102=lhrcad2-m_nThrcadID;getchO;主线程等待,按任意键退出程序returnnRctCodc;U1NTaThrc

10、ad(LPVOIDpParam)inii=0;发送成功次数int C()llisi()nC()untcr=2;double Collisi()nWindow=;int randNum=raiid()%3;/冲突计数器初始值为16冲突窗口值取值随机数/总线空闲while(l)if(Bus=0)if(Bus=0)总线空闲/模拟发送包Bus=Bus|lDl;Slecp(12);if(Bus=mi)/无冲突printf(n%dSendSucccssnn,D1);发送成功Bus=O;内存清零Collisic)nCounicr=2;恢复冲突计数器SlcCp(rand()%10);随即延时i+;printf

11、(主机a发送成功次数二%dnn,i);break;发送次数不够10次,开始下一次发送elseprintff,%dSendCoUisionnnHJDl);发生冲突CollisionCountcr-;冲突次数加1if(C()llisionC()untcr0)随即延迟重发,延迟算法用截断的二进制指数退避算法Sleep(randNum*(int)pow(2,(CollisionCountcr10)?10:C()nisi()nC()untcr)*C()llisi()nWind()w);condnuc;下一次尝试发送elseprintf(u%dSendFailurcnnH,IDl);Return0;LUN

12、TbThread(LPVOIDpParam)冲突计数器初始值为16冲突窗口值取值随机数inti=();发送成功次数intC()nisionC()untcr=16;doubleCollisic)nWindow=;intrandNum=rand0%3;while/模拟发送包Bus二Bus1102;Slcep(12);if(Bus=lD2)无冲突Sleep(rand0%10);printf(n%dSendSucccssnn,102);/发送成功Bus=0;内存清零CollisionCountcr=16;恢复冲突计数器SlCCp(rand()%10);/随即延时i+;printfd主机b发送成功次数二

13、%小17);if(i=10)break;发送次数不够1()次,开始下一次发送elseprintfC%dSendC()llisi()nnnn,lP2);发生冲突CollisionCountcr-;冲突次数加1if(C()llisionC()untcr0)随即延迟重发,延迟算法用截断的二进制指数退避算法Sleep(randNum*(int)pow(2,(CollisionCountcr10)?10:C()nisi()nC()untcr)*C()llisi()nWind()w);condnuc;下一次尝试发送elseprintf(M%dSendFailurcnnMJD2);return0;四、总结通过一个礼拜对运算机网络课程设计的学习和上机实际操作,我熟悉了模拟Ethernet帧的发送进程及数据发送流程;更好的理解了冲突产生、发送失败原因及如何解决此类问题,学到了在讲义上没有学到的知识与道理。在那个礼拜的学习实践中,有过成功的欣喜,也有出现问题的烦躁,但是当一个个问题通过看书查找,询问老师、同窗,慢慢解决后,也有了从未有过的自豪与自豪。困难固然恐怖,但冷静下来,撇开烦躁的情绪,各个击破,会出现柳暗花明那一刻!

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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