您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 暑期实训模拟CSMACD协议
学校代码:10410序号:本科毕业论文题目:模拟EHTERNET帧的发送与接收学院:软件学院姓名:余弘扬学号:20081531专业:软件工程年级:08级指导教师:余鹰二0一0年9月4日第一章题目要求:用C++或者是JAVA语言设计一个程序模拟EHERNET的发送和接收要求有友好的界面.完整显示发送接收过程需求分析:具体实现:1)用两个线程A和B来模拟Ehernet上的两台主机.2)用一个int类型变量road[]数组来模拟数据总线(将其初始化为"0".并且总线等于"0"时表示总线空闲).3)两个子线程向总线发送数据.数据用该线程的线程号进行模拟,发送数据用线程度号和road[i]的"或"操作进行模拟(即BUS=BUS|ID,ID为线程的线程度号)..4)发送的流程须遵循CSMA/CD.随机延迟的算法中的冲突窗口取0.005.在数据发送成功(即BUS=ID)后,报告"ID成功发送",产生冲突(即BUS!=ID)后报告"ID发送时发生冲突",发送失败后(即冲突计数器值为0)后报告"ID发送失败".随着主机发送成功的次数的增加,报告其已经发送成功的次树,如"主机A发送的成功数为3"第二章原理分析2.1.1CSMA/CD是一种争用型的介质访问控制协议。它起源于美国夏威夷大学开发的ALOHA网所采用的争用型协议,并进行了改进,使之具有比ALOHA协议更高的介质利用率。另一个改进是,对于每一个站而言,一旦它检测到有冲突,它就放弃它当前的传送任务。换句话说,如果两个站都检测到信道是空闲的,并且同时开始传送数据,则它们几乎立刻就会检测到有冲突发生。它们不应该再继续传送它们的帧,因为这样只会产生垃圾而已;相反一旦检测到冲突之后,它们应该立即停止传送数据。快速地终止被损坏的帧可以节省时间和带宽。CSMA/CD控制方式的优点是:原理比较简单,技术上易实现,网络中各工作站处于平等地位,不需集中控制,不提供优先级控制。但在网络负载增大时,发送时间增长,发送效率急剧下降。CSMA/CD应用在OSI的第二层数据链路层它的工作原理是:发送数据前先监听信道是否空闲,若空闲则立即发送数据.在发送数据时,边发送边继续监听.若监听到冲突,则立即停止发送数据.等待一段随机时间,再重新尝试.CSMA/CD采用IEEE802.3标准。Ehernet帧的核心技术是随机争用型介质访问方法.即带有冲突检测的载波监听多路访问(CSMA/CD)方法2.2Ehernet帧的发送流程1)载波监听的过程.Ehernet中的每一个结点利用总线发送的过程,总线是每个结点共享的公共传输介质.所以结点在发送一个帧前,必须侦听总线是否空闲.由于Ehernet的数据采用的曼切斯特的方式,所以可以通过判断总线电平是否跳变来确定总线是否空闲.若总线空闲,就可以启动发送,否则继续侦听.2)冲突检测.在数据的发送过程中,可能回产生两个以上的发送信息,它们叠加之后的信号波形与任何发送的结点输出的信号波形不相同.因为可能有多个主机在侦听总线,当它们侦听的到总线空闲的时,都会往总线上发送数据).所以在发送数据的过程中,也应该进行冲突检测,只要发现冲突就应该停止发送数据.3)以太网使用的截断二进制指数退避算法来解决碰撞问题.截断二进制指数退避算法并不复杂.这种算法让发生碰撞的站在停止发送数据后,不等待信道变为空闲后就立即再发送数据,而是推迟(这也叫作退避)一个随机的时间.这样做是为了使重传时再次发送的冲突的概率减少.具体的退避算法如下:①确定基本的退避时间,它就是争用期为2t.以太网把争用期定为:51.2微秒.对于10M/S的以太网,在争用期内可以发送512bit.即64字节,也可以说争用期是512比特的时间.1比特的时间就是发送1比特所需要的时间.所以这种时间单位和数据率密切相关.②从离散的整数集合【0,1,...,(2的K次方-1)】中随机取出一个整数,记为r.重传应推后的时间r倍的争用期.上面的参数K按照下面的公式来计算K=MIN【重传次数.10】可见当重传次数不超过10的时候,参数K等于重传次数;但当重传次数超过10次时,K就不再增大而一直都等于10.③当重传16次都不能成功的时候(这表明打算要发送的数据太多,以致于连续发生冲突.)则丢弃该帧,并向高层报告.第三章开发环境3.1.1MyEclipse6.5集成开发环境MyEclipse6.5是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。MyEclipse6.5附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展MyEclipse6.5的软件开发人员,因为它允许他们构建与MyEclipse6.5环境无缝集成的工具。Jdk1.6.0_13。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。第四章需求分析4.1可行性分析4.1.1技术可行性分析技术可行性分析包括:风险分析、资源分析和技术分析。风险分析的任务是,在给定的约束条件下,判断能否设计并实现系统所需功能和性能。资源分析的任务是,论证是否具有系统开发所需的各类人员(管理人员和各类专业技术人员)、软件、硬件资源和工作环境等。技术分析的任务是,论证当前的科学技术是否支持系统开发的全过程。其中最主要的是分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。4.2功能分析4.2.1功能概述模拟EHTERNET帧的发送与接收4.2.2基本功能1.在一台计算机上实现,用多个程序或线程来模拟多个计算机2.使用一个共享数据区来模拟总线3.模拟实现载波监听的过程4.模拟实现发生冲突的过程和冲突的处理机制第五章系统实现与详细设计5.1系统界面简介:输入主机1与主机2所需发送的数据包数.发送数据包按钮后的文本域显示实时发送信息重置按钮将输入域置空其下连续十个文本框模拟信道的十个片段当正确输入数据包,点击发送之后由主机1探测信道空闲,以1标志信道,并向前行进,表示发送数据包,主机2同理.以2标志信道,并向前行进,表示发送数据包,每次只能发送一个如果1与此2相遇,表示信道发生碰撞,打印提示信息.执行退避算法,之后进行下一次发送程序运行如图所示5.2详细设计:全部代码主程序Csmacd.javapackagecsma;publicclassCsmacd{publicstaticvoidmain(Stringargs[]){FrameCsmafc=newFrameCsma();FrameCsma.text5.append(信道空闲);fc.setTitle(---模拟以太帧的发送过程----);}}FrameCsma.java功能:构建界面packagecsma;importjava.awt.*;importjava.awt.event.*;importjava.util.Random;importjava.lang.Thread;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JProgressBar;classFrameCsmaextendsjavax.swing.JDialogimplementsActionListener{staticTextAreatext1;staticTextFieldtext2;staticTextAreatext3;staticTextFieldtext4;staticTextAreatext5;staticTextFieldtext10;staticTextFieldtext11;staticTextFieldtext12;staticTextFieldtext13;staticTextFieldtext14;staticTextFieldtext15;staticTextFieldtext16;staticTextFieldtext17;staticTextFieldtext18;staticTextFieldtext19;Labellabel1;Labellabel2;Labellabel3;JLabelpicture;staticJProgressBarjProgressBar1;staticJProgressBarjProgressBar2;JButtontitle;JButtonstart;JButtonreset;JButtonone;JButtontwo;FrameCsma(){setBackground(Color.white);text1=newTextArea(,10,25,TextArea.SCROLLBARS_NONE);text2=newTextField(1);text3=newTextArea(内核分析:1.在一台计算机上实现,用多个线程来模拟多个计算机2.使用一个共享数据区来模拟总线3.模拟实现发生冲突的过程和冲突的处理机制具体实现:1)用两个线程来模拟Ehernet上的主机1与主机2.,10,20,TextArea.SCROLLBARS_NONE);text4=newTextField(1);text5=newTextArea(,1,5,TextArea.SCROLLBARS_NONE);title=newJButton(---模拟以太帧的发送过程----);start=newJButton(发送数据包);reset=newJButton(重置);one=newJButton(主机1);two=newJButton(主机2);label1=newLabel(主机1所需发送的数据包数:);label2=newLabel(主机2所需发送的数据包数:);label3=newLabel(信道状态:);jProgressBar1=newJProgressBar();jProgressBar2=newJProgressBar();text10=newTextField(1);text11=newTextField(1);text12=newTextField(1);text13=newTextField(1);text14=newTextField(1);text15=newTextField(1);text16=newTextField(1);text17=newTextField(1);text18=newTextField(1);text19=newTextField(1);setLayout(newFlowLayout());add(title);add(label1);add(text2);add(label2);add(text4);add(start);add(text1);add(reset)add(jProgressBar1);add(one);add(text10);add(text11);add(text12);add(text13);add(text14);add(text15);add(text16);add(text17);add(text18);add(text19);add(two);add(jProgressBar2);/*模拟发送信道*/setVisible(true);this.setResizable(true);setBounds(100,200,840,
本文标题:暑期实训模拟CSMACD协议
链接地址:https://www.777doc.com/doc-2370472 .html