




免费预览已结束,剩余11页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号: 0121110680109课 程 设 计题 目模拟Ethernet帧的发送过程学 院计算机科学与技术学院专 业软件工程专业班 级软件ZY1101班姓 名李纪飞指导教师周彩兰2014年1月6日课程设计任务书学生姓名: 李纪飞 专业班级: 软件ZY1101 指导教师: 周彩兰 工作单位: 计算机学院 题目二: 模拟Ethernet帧的发送过程 初始条件:(1)学习相关知识(2)C/C+/VC/VB/JAVA语言(3)PC机一台要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)编写程序模拟Ethernet节点的数据发送流程。具体要求:1)用两个线程a和b来模拟Ethernet上的两台主机。2)用一个双字类型变量Bus来模拟总线(将其初始化为“0”,并且总线等于“0”时表示总线空闲)。3)两个子线程向总线发送自己的数据。数据用该线程的线程号进行模拟,发送数据用线程号和Bus的“或”操作进行模拟(即BusBus|ID,ID为该线程的线程号)。4)每台主机需向总线上成功发送10次数据,如果其中某次数据发送失败,则该线程结束。5)发送流程必须遵循CSMA/CD。随即延迟算法中的冲突窗口取0.005。在数据发送成功(即BusID)后,报告“ID send success”,产生冲突(即Bus!ID)后报告“ID send conllision”,发送失败(即冲突计数值为0)后报告“ID send failure”。随着主机发送成功次数增加,报告其已发送成功的次数,如“主机A发送成功数3”。时间安排:第一、二天:查阅资料,学习算法第三、四天:编程调试第五天:书写报告指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 理论基础与开发平台21.1 CSMA/CD共享介质以太网21.2 以太网的工作原理21.3 争用期31.4 Eclipse基本介绍31.5 Java Thread概述32 程序设计与功能说明42.1 算法设计42.2 算法流程图42.2.1 主程序流程图42.2.2 线程运行流程图52.3 数据结构62.4 程序实现62.4.1 Ethernet类62.4.2 nThread类72.4.3 EthernetRun类93 运行结果与评估103.1 程序运行结果103.2 运行结果评估124 总结与参考文献133.1 课程设计总结133.2 参考文献13摘要:用多线程争用一个内存空间来模拟Ethernet帧的发送过程。程序用Java语言编写,IDE为Eclipse。关键字:Ethernet,以太网,线程,截二进制指数后退算法1 理论基础与开发平台1.1 CSMA/CD共享介质以太网带冲突检测的载波侦听多路访问 (CSMA/CD)1技术规定了多台电脑共享一个通道的方法。这项技术最早出现在1960年代由夏威夷大学开发的ALOHAnet,它使用无线电波为载体。这个方法要比令牌环网或者主控制网要简单。当某台电脑要发送信息时,必须遵守以下规则:开始: 如果线路空闲,则启动传输,否则转到第4步。发送: 如果检测到冲突,继续发送数据直到达到最小报文时间 (保证所有其他转发器和终端检测到冲突),再转到第4步。成功传输: 向更高层的网络协议报告发送成功,退出传输模式。线路忙: 等待,直到线路空闲 线路进入空闲状态- 等待一个随机的时间,转到第1步,除非超过最大尝试次数。超过最大尝试传输次数: 向更高层的网络协议报告发送失败,退出传输模式。就像在没有主持人的座谈会中,所有的参加者都通过一个共同的媒介(空气)来相互交谈。每个参加者在讲话前,都礼貌地等待别人把话讲完。如果两个客人同时开始讲话,那么他们都停下来,分别随机等待一段时间再开始讲话。这时,如果两个参加者等待的时间不同,冲突就不会出现。如果传输失败超过一次,将采用退避指数增长时间的方法(退避的时间通过截断二进制指数退避算法(truncated binary exponential backoff)来实现)。最初的以太网是采用同轴电缆来连接各个设备的。电脑通过一个叫做附加单元接口(Attachment Unit Interface,AUI)的收发器连接到电缆上。一根简单网线对于一个小型网络来说还是很可靠的,对于大型网络来说,某处线路的故障或某个连接器的故障,都会造成以太网某个或多个网段的不稳定。因为所有的通信信号都在共用线路上传输,即使信息只是发给其中的一个终端(destination),某台电脑发送的消息都将被所有其他电脑接收。在正常情况下,网络接口卡会滤掉不是发送给自己的信息,接收目标地址是自己的信息时才会向CPU发出中断请求,除非网卡处于混杂模式(Promiscuous mode)。这种“一个说,大家听”的特质是共享介质以太网在安全上的弱点,因为以太网上的一个节点可以选择是否监听线路上传输的所有信息。共享电缆也意味着共享带宽,所以在某些情况下以太网的速度可能会非常慢,比如电源故障之后,当所有的网络终端都重新启动时。1.2 以太网的工作原理以太网采用带冲突检测的载波帧听多路访问(CSMA/CD)机制。以太网中节点都可以看到在网络中发送的所有信息,因此,我们说以太网是一种广播网络。以太网的工作过程如下:当以太网中的一台主机要传输数据时,它将按如下步骤进行:1、监听信道上是否有信号在传输。如果有的话,表明信道处于忙状态,就继续监听,直到信道空闲为止。2、若没有监听到任何信号,就传输数据3、传输的时候继续监听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行步骤1(当冲突发生时,涉及冲突的计算机会发送会返回到监听信道状态。注意:每台计算机一次只允许发送一个包,一个拥塞序列,以警告所有的节点)4、若未发现冲突则发送成功,所有计算机在试图再一次发送数据之前,必须在最近一次发送后等待9.6微秒(以10Mbps运行)。1.3 争用期争用期(Contention Period)就是以太网端到端往返时间2,又称为碰撞窗口(collision window)。 在局域网的分析中,常把总线上的单程端到端传播时延记为。1.4 Eclipse基本介绍Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。1虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。2这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C+、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。1.5 Java Thread概述线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。Java中的多线程是一种抢占机制而不是分时机制。抢占机制指的是有多个线程处于可运行状态,但是只允许一个线程在运行,他们通过竞争的方式抢占CPU。2 程序设计与功能说明2.1 算法设计1.创建两个线程模拟两台主机,每个线程进行一下步骤。2.初始化线程初始值,如成功次数、冲突计数器、冲突窗口等。3.监听总线,若空闲则继续,否则继续监听。4.模拟发送包为总线状态和线程的线程号的或运算结果:Bus=Bus|ID5.检测是否有冲突,若没有冲突,则发送成功并将冲突计数器复位,内存清零。6.如果有冲突,则提示冲突,冲突计数器减一。7.采用截断二进制指数后退算法随机延迟重发。8.回到第3步。9.若冲突计数器=0,则发送失败,并结束该进程的发送。10.发送成功10次以后结束进程。2.2 算法流程图2.2.1 主程序流程图2.2.2 线程运行流程图2.3 数据结构Ethernet类private int Bus = 0;/总线状态 0表示空闲private int ID1 = 1;private int ID2 = 2;/线程号nThread类int Bus;/监听的总线int nID;/线程号Random random = new Random();/用与截断二进制指数后退算法的随机数Ethernet ethernetref;/对Ethernet类的引用int i = 0;/发送成功次数int CollisionCounter = 16;/冲突计数器double CollisionWindow = 0.005;/冲突窗口2.4 程序实现2.4.1 Ethernet类该类用于定于Ethernet的属性和获取其属性的方法。代码如下:package Ethernet;public class Ethernet private int Bus = 0;/总线状态 0表示空闲private int ID1 = 1;private int ID2 = 2;/线程号private int ID3 = 3;private int ID4 = 4;public int getBus()return Bus;public void setBus(int nBus)Bus = nBus;public int getID(int n)switch(n)case 1:return ID1;case 2:return ID2;case 3:return ID3;case 4:return ID4;return 0;2.4.2 nThread类该类用于定于线程的属性和重写Thread类的run方法以实现算法。代码如下:package Ethernet;import java.util.Random;import Ethernet.Ethernet;public class nThread extends Threadint Bus;int nID;Random random = new Random();Ethernet ethernetref;int i = 0;/发送成功次数int CollisionCounter = 16;double CollisionWindow = 0.005;int randNum = Math.abs(random.nextInt()%5);public nThread(Ethernet ethernet,int ID)this.ethernetref = ethernet;this.Bus = ethernet.getBus();this.nID = ethernet.getID(ID);public void run()for(int j = 0; j 10;j+)tryThread.sleep(6);catch(InterruptedException e)e.printStackTrace();if(Bus = 0)Bus = Bus|nID;ethernetref.setBus(Bus);tryThread.sleep(4);catch(InterruptedException e)e.printStackTrace();Bus = ethernetref.getBus();if(Bus = nID)tryThread.sleep(Math.abs(random.nextInt()%4);catch(InterruptedException e)e.printStackTrace();CollisionCounter = 16;System.out.println(nID + send success!+Number of times is + (+i);Bus = 0;ethernetref.setBus(Bus);tryThread.sleep(5);catch(InterruptedException e)e.printStackTrace();if(i 0)tryThread.sleep(long)(randNum * Math.pow(2, (CollisionCounter 10)?10:CollisionCounter) * CollisionWindow);catch(InterruptedException e)e.printStackTrace();continue;elseSystem.out.println(nID + send Failure!);return;elseSystem.out.println(nID +:The line is busy!);continue;2.4.3 EthernetRun类该类作为入口函数,实例化一个Ethernet对象,并通过此对象实例化两个线程并运行。代码如下:package Ethernet;import Ethernet.Ethernet;import Ethernet.nThread;public class EthernetRun public static void main(String args)Ethernet ethernet = new Ethernet();nThread thread1 = new nThread(ethernet,1);nThread thread2 = new nThread(ethernet,2);thread1.start();thread2.start();3 运行结果与评估3.1 程序运行结果以下为运行3次的结果:第一次:1 send collision!2 send collision!2 send collision!1 send collision!2 send success!Number of times is 11 send success!Number of times is 12 send success!Number of times is 21 send success!Number of times is 22 send success!Number of times is 31 send success!Number of times is 32 send success!Number of times is 41 send success!Number of times is 42 send success!Number of times is 51 send success!Number of times is 52 send success!Number of times is 61 send success!Number of times is 62 send success!Number of times is 71 send success!Number of times is 72 send success!Number of times is 81 send success!Number of times is 82 send collision!1 send collision!2 send success!Number of times is 91 send success!Number of times is 92 send success!Number of times is 101 send success!Number of times is 10第二次:1 send collision!2 send success!Number of times is 12 send collision!1 send collision!2 send success!Number of times is 21 send success!Number of times is 12 send success!Number of times is 31 send success!Number of times is 22 send success!Number of times is 41 send success!Number of times is 32 send collision!2 send collision!1 send collision!2 send success!Number of times is 51 send success!Number of times is 42 send collision!2 send collision!1 send collision!2 send success!Number of times is 61 send success!Number of times is 52 send collision!2 send collision!1 send collision!2 send success!Number of times is 71 send collision!2 send collision!2 send success!Number of times is 81 send success!Number of times is 62 send success!Number of times is 91 send success!Number of times is 72 send success!Number of times is 101 send success!Number of times is 81 send success!Number of times is 91 send success!Number of times is 10第三次:1 send collision!2 send success!Number of times is 11 send success!Number of times is 12 send success!Number of times is 21 send success!Number of times is 22 send success!Number of times is 31 send success!Number of times is 32 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!1 send collision!2 send collision!2 send Failure!1 send collision!1 send success!Number of times is 41 send success!Number of times is 51 send success!Number of times is 61 send success!Number of times is 71 send success!Number of times is 81 send success!Number of times is 91 se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流公司实习合同范本
- 门店物品转让合同范本
- 机械租领合同范本
- 建房出租合同范本
- 美陈设计合同范本
- 工业车辆销售合同范本
- 后勤工作思路怎么写2025(5篇)
- 生态保护修复资金申请关键因素评估报告(2025版)
- 2025年高中字音字形题目及答案
- 古筝演奏题目及答案
- GB/T 22838.5-2024卷烟和滤棒物理性能的测定第5部分:卷烟吸阻和滤棒压降
- 议论文阅读训练10篇(附答案及解析)
- 《医师资格考试报名资格规定2014版》
- 《市场营销英语》全套教学课件
- JT叔叔医道课1-50集完整稿
- 2025届广东省实验中学数学高一下期末质量检测试题含解析
- 无线传感器网络与物联网通信技术全套教学课件
- 部编版五年级道德与法治上册第3课《主动拒绝烟酒与毒品》精美课件(第3课时)
- 2024年金属钼行业市场趋势分析
- 四年级教材《劳动》课件
- GB/T 18910.4-2024液晶显示器件第4部分:液晶显示模块和屏基本额定值和特性
评论
0/150
提交评论