您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 优秀完整论文-模拟Ethernet帧的发送过程
《计算机网络》课程设计报告xxx学院xxx专业通信工程班级通信xxxx班学号20108xxxxx学生姓名xxxx指导教师xxxx课程成绩完成日期2013年7月5日长沙理工大学课程设计成绩评定学院xxx专业通信工程班级通信xxx班学号20108525xxxx学生姓名xxxx指导教师xxx完成日期2013年7月5日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩指导教师签字2013年7月10日课程设计任务书xxx学院通信工程专业课程名称计算机网络课程设计时间2012~2013学年第二学期18~19周学生姓名xxx指导老师xxx题目模拟Ethernet帧的发送过程主要内容:设计一个模拟Ethernet帧的发送过程的程序,并根据这个程序,说明模拟Ethernet帧的发送过程的结构及相关问题,从而对模拟Ethernet帧的发送过程工作原理有更好的理解和认识。要求:(1)按要求编写课程设计报告书,能正确阐述设计结果。(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。应当提交的文件:(1)课程设计报告。(2)课程设计附件(各类图纸、设备配置清单、报告等)长沙理工大学城南学院模拟Ethernet帧的发送过程第1页共25页模拟Ethernet帧的发送过程学生姓名:xxx指导老师:xxxx摘要:此次课程设计是基于计算机网络帧的工作原理以及C语言的模块实现方式,编辑设计一个模拟Ethernet帧的发送过程的程序,并根据这个程序,说明模拟Ethernet帧的结构及协议的相关问题,从而对模拟Ethernet帧的发送过程的工作原理有更好的理解和认识。通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。关键字:模拟Ethernet帧;c语言;网络协议。长沙理工大学城南学院模拟Ethernet帧的发送过程第2页共25页1引言帧是在数据链路层数据进行传输与交换的基本单位。构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。1.1课程设计的目的明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成能力拓展训练任务。设计报告:要求层次清楚,整洁,规范,不得相互抄袭1.2课程设计的要求题目:编写程序模拟Ethernet结点的数据发送流程设计要求:(1)用两个线程a,b来模拟Ethernet上的两台主机。(2)用一个双字类型变量Bus来模拟总线(将其初始化为“/0”,并且总线等于“/0”时表示总线空闲)。(3)两个子线程向总线发送自己的数据。数据用该线程的线程信号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即Bus=Bus|ID,ID为该线程的线程号)。(4)每台主机须向总线成功发送10次数据,如果其中某次数据发送失败,则该线程结束。(5)发送流程须遵循CSMA/CD(载波监听多路访问/冲突检测)。随机延迟算法中的冲突窗口取0.005。在数据发送成功(即Bus==ID)后,报告“IDsendsuccess”,长沙理工大学城南学院模拟Ethernet帧的发送过程第3页共25页产生冲突(即Bus!=ID)后,报告“IDsendcollision”,发送失败(即冲突计数器值为0)后报告“IDsendfailure”。随着主机发送成功次数的增加,报告其已发送成功的次数,如“主机A发送成功次数=3”。1.3课程设计平台MicrosoftvisualC++6.02设计原理2.1可行性分析1.技术可行性技术可行性分析包括:风险分析、资源分析和技术分析。风险分析的任务是,在给定的约束条件下,判断能否设计并实现系统所需功能和性能。资源分析的任务是,论证是否具有系统开发所需的各类人员(管理人员和各类专业技术人员)、软件、硬件资源和工作环境等。技术分析的任务是,论证当前的科学技术是否支持系统开发的全过程。其中最主要的是分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。2.功能分析基本功能(1).在一台计算机上实现,用多个程序或线程来模拟多个计算机(2).使用一个共享数据区来模拟总线(3).模拟实现载波监听的过程(4).模拟实现发生冲突的过程和冲突的处理机制2.2帧结构分析1.帧的介绍术语“帧”来源于串行线路上的通信。其中,发送者在发送数据的前后各添加特殊的字符,使它们成为一个帧。Ethernet从某种程序上可以被看作是机器这间的数据链路层连接。长沙理工大学城南学院模拟Ethernet帧的发送过程第4页共25页首先我们来认识一下Ethernet帧结构,EthernetV2.0规范和IEEE802.3标准中的Ethernet帧结构有一些差别,这里我们按802.3标准的帧结构进行讨论,2.1一给出了Ethernet帧结构图。前导码帧前定界符目的地址源地址长度字段数据字段校验字段(7B)(1B)(2/6B)(2/6B)(2B)(长度可变)(4B)图2.1Ethernet帧结构如图2.1所示,802.3标准的Ethernet帧结构由6部分组成。(1)前导码与帧前定界符字段前导码由56位(7B)的1010101…101010位序列组成。帧前定界符可以视为前导码的延续。1B的帧前定界符结构为10101011。如果将前导码与帧定界符一起看,那么在62位101010…1010位序列之后出现11。在11之后是Ethernet帧的目的地址字段。前导码与帧前定界符主要是保证接收同步,这8B接收后不需要保留,也不记入帧头长度中。(2)目的地址和源地址目的地址(DA)与法制地址(SA)分别表示帧的接收结点地址与发送结点的硬件地址。在Ethernet帧中,目的地址和法制地址字段长度可以是2B或6B。目前的Ethernet都使用6B(即48位)长度的地址。Ethernet帧的目的地址可以是单播地址(unicastaddress)、多播地址(multicastaddress)与广播地址(broadcastaddress),目的地址的第一位为0表示单播地址,为1表示多播地址,目的地址为全1表示广播地址。(3)长度字段802.3标准中的帧用2B定义数据字段包含的字节数。协议规定,帧数据的最小长度为46B,最大长度为1500B。设置最小帧长度的目的是使每个接收结点能够有足够的时间检测到冲突。(4)数据字段帧数据字段的最小长度为46B。如果帧的LLC数据少于46B,则应将数据字段填充至46B。填充字符是任意的,不计入长度字段值中。长沙理工大学城南学院模拟Ethernet帧的发送过程第5页共25页(5)检验字段帧校验字段(FCS)采用32位的CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。此处,为了简便起见,采用8位的CRC校验。CRC校验的生成多项式为:G(x)=x8+x2+x+1某些帧结构中还会包括帧类型字段,用来识别些帖所承载的数据的类型。当一个帧到达指定的计算机时,操作系统根据帧类型决定用哪个协议软件模块对它进行处理。自识别帧的主要优点是,可以在同一物理网络中使用多个协议而互不干扰。3系统设计3.1Ethernet帧的发送1Ethernet帧的发送流程1)载波侦听过程。Ethernet中每个结点利用总线发送数据,总线是每个结点共享的公共传输介质。所以结点在发送一个帧前,必须侦听总线是否空闲。由于Ethernet的数据采用曼彻斯特编码方式,所以可以通过判断总线电平是否跳变来确定总线是否空闲。若总线空闲,就可以启动发送,否则继续侦听。2)冲突检测。在数据发送过程中,可能会产生冲突(冲突是指总线上同时出现两个或两个以上的发送信号,他们叠加后的信号波形与任何发送结点的输出波形都不相同)。因为可能有多个主机都在侦听总线,当它们侦听到总线空闲时,就会往总线上发送数据。所以在发送数据的过程中,也应该进行冲突检测,只要发现冲突就应该立即停止发送数据。3)随即延迟后重发。在检测到冲突、停止发送后,结点进行随机延迟后重发。若发16次后还没成功,则宣告发送失败,取消该帧的发送。随机延迟的算法一般采用截断的二进制指数退避算法。当出现线路冲突时,如果冲突的各站点都采用同样的退避间隔时间,则很容易产生二次、三次的碰撞。因此,要求各个长沙理工大学城南学院模拟Ethernet帧的发送过程第6页共25页站点的退避间隔时间具有差异性。这要求通过退避算法来实现。当一个站点发现线路忙时,要等待一个延时时间M,然后再进行侦听工作。延时时间M由以下算法决定:M=2k*R*a。其中a为冲突窗口值(冲突窗口为总线最大长度和电磁波在介质中传播速度比值的2倍),R为随机数,k的取值为k=min(n,16),n为该帧已被发送的次数。图3.1给出了Ethernet帧的发送流程。3.2Ethernet帧的接收流程帧的接收流程大致可以分为以下三个步骤:1)检查是否发生冲突,若发生冲突,则丢弃该帧;若没有冲突,进入下一步。2)检查该帧的目的地址看是否可以接收该帧,若可以接收,则进入下一步。3)检查CRC检验和LLC数据长度。若都正确,接受该帧长沙理工大学城南学院模拟Ethernet帧的发送过程第7页共25页图3.1Ethernet帧的发送流程3.3封装过程1.设计中的重点及难点1)模拟冲突过程,在这个程序中不要使用任何线程同步机制。2)若程序中不能模拟出冲突,可以在某些地方加入延时。YNYY发送帧装配帧总线忙启动发送冲突?发送完成?发送成功冲突加强冲突次数加1等待后退延迟时间计算后退延迟发送失败冲突次数16?YNNN长沙理工大学城南学院模拟Ethernet帧的发送过程第8页共25页2.核心代码inti=0;//发送成功次数intCollisionCounter=16;//冲突计数器初始值为16doubleCollisionWindow=0.005;//冲突窗口值取值0.005intrandNum=rand()%3;//随机数loop:if(Bus==0)//总线空闲{Bus=Bus|ID1;//模拟发送包Sleep(12);if(Bus==ID1)//无冲突{printf(%dSendSuccess\n\n,ID1);//发送成功Bus=0;//内存清零CollisionCounter=16;//复原冲突计数器Sleep(rand()%10);//随即延时i++;printf(主机a发送成功次数=%d\n\n,i);if(i10)gotoloop;//发送次数不够10次,开始下一次发送}else{printf(%dSendCollision\n\n,ID1);//发生冲突CollisionCounter--;Bus=0;if(CollisionCounter0){//随即延迟重发,延迟算法用截断的二进制指数退避算法Sleep(randNum*(int)pow(2,(CollisionCounter10)?10:CollisionCounter)*CollisionWindow);gotoloop;//下一次尝试发送doubleCollisionWindow=0.005intrandNum=rand()%3;loop:if(Bus==0){Bus=Bus|ID1if(Bus==ID1)Sleep(12);printf(%dSendSuccess\n\n,ID1);{Bus=0;CollisionCounter=16
本文标题:优秀完整论文-模拟Ethernet帧的发送过程
链接地址:https://www.777doc.com/doc-4482746 .html