tcp拥塞控制毕业论文_第1页
tcp拥塞控制毕业论文_第2页
tcp拥塞控制毕业论文_第3页
tcp拥塞控制毕业论文_第4页
tcp拥塞控制毕业论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要TCP的拥塞控制由“慢启动SLOWSTART”和“拥塞避免CONGESTIONAVOIDANCE”组成,后来TCPRENO版本中又针对性的加入了“快速重传FASTRETRANSMIT”、“快速恢复FASTRECOVERY”算法,再后来在TCPNEWRENO中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答SACK算法,还有其他方面的大大小小的改进,成为网络研究的一个热点。TCP的拥塞控制主要原理依赖于一个拥塞窗口CWND来控制,窗口值的大小就代表能够发送出去的但还没有收到ACK的最大数据报文段,显然窗口越大那么数据发送的速度也就越快,但是也就越可能使得网络出现拥塞,如果窗口值为1,那么就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。TCP拥塞控制算法就是要在这两者之间权衡,选取最好的CWND值,从而使得网络吞吐量最大化且不产生拥塞。1计算机网络已经逐渐发展成为现代生活中必不可少的一个部分,本论文的主要研究目的就是针对计算机网络中的TCP协议中的RENO拥塞控制,对其实行可视化,使其变得更加容易理解,让我们对计算机网络有更深刻的认识。关键词慢启动;拥塞避免;快速重传;快速恢复;可视化ABSTRACTTCPCONGESTIONCONTROLFROM“SLOWSTART“AND“CONGESTIONAVOIDANCE“COMPOSEDOFTCPRENOVERSIONSLATERTHENTARGETEDTOJOINTHE“FASTRETRANSMIT“,“FASTRECOVERY“ALGORITHM,ANDTHENLATERAGAININTHETCPNEWRENOINTHE“FASTRECOVERY“ALGORITHMHASBEENIMPROVEDINRECENTYEARSHASEMERGEDSELECTIVEACKNOWLEDGEMENTALGORITHM,ASWELLASOTHERLARGEANDSMALLIMPROVEMENTSBECOMEARESEARCHHOTSPOTNETWORKTHEMAINPRINCIPLEOFTCPCONGESTIONCONTROLRELIESONACONGESTIONWINDOWCWNDTOCONTROLTHEWINDOWSIZEVALUEREPRESENTSTHEABILITYTOSENDOUTBUTNOTYETRECEIVEDTHEMAXIMUMDATAPACKETACKDUAN,CLEARWINDOW,SOTHEGREATERTHESPEEDOFDATASENTTHEFASTER,BUTALSOMORELIKELYTOMAKETHENETWORKCONGESTIONOCCURS,IFTHEWINDOWIS1,THENREDUCEDTOASTOPSUCHAGREEMENT,EACHSENDINGADATA,MUSTWAITFORCONFIRMATIONOFTHEOTHERPARTYCANSENDASECONDPACKET,THEDATACLEARLYTRANSMISSIONEFFICIENCYISLOWTCPCONGESTIONCONTROLALGORITHMISTOBALANCEBETWEENTHESETWO,CHOOSETHEBESTCWNDVALUE,ALLOWINGTHENETWORKTOMAXIMIZETHROUGHPUTANDDOESNOTCREATECONGESTIONCOMPUTERNETWORKHASGRADUALLYBECOMEANESSENTIALOFMODERNLIFE,APARTOFTHEMAINRESEARCHOBJECTIVEOFTHISTHESISISACOMPUTERNETWORKFORTHETCPRENOCONGESTIONCONTROLPROTOCOLINITSIMPLEMENTATIONOFVISUALIZATIONTOMAKEITMOREEASYTOUNDERSTAND,LETTHECOMPUTERNETWORKHASABETTERUNDERSTANDINGKEYWORDSSLOWSTARTCONGESTIONAVOIDANCEFASTRETRANSMITFASTRECOVERYVISUALIZATION目录1绪论111课题背景及意义112课题现状113本文的主要研究内容22开发平台与技术的选择及介绍321开发环境的介绍3211硬件环境3212软件环境322RENO拥塞控制简介323开发平台简介33需求分析及可行性研究531需求分析5311时间要求5312功能要求5313RENO拥塞控制的四个阶段5314性能要求832可行性研究9321成本可行性分析9322技术可行性分析94相关开发技术的原理性说明1041VISUALSTUIDIO2008相关简介1042TCP/IP协议和拥塞控制简介1143C简介及特点13431C简介13432C与C、JAVA的区别13433C的前途145系统功能模块分析1551主框架具体功能1552各功能模块详细设计156详细设计及编码实现1761主框架详细设计1762模块的详细设计17621程序代码17622程序运行结果23结论27参考文献28致谢291绪论11课题背景及意义网络协议本身是一个复杂的抽象的交互过程,其行为由大量的参数(定时器,窗口大小,重传次数,应答的方式等)来确定,甚至不同的参数组合定义了不同的网络协议,很难通过静态的文字或者图表描述让学生理解网络原理与协议的含义和精髓,本次毕业设计希望通过采用C编程,用功能强,操作性能好,配置灵活的软件的方式和多媒体的形式,动态直观的演示计算机网络中的TCPRENO拥塞控制的原理和工作过程,为大家学好计算机网络提供一个更加直观简单的环境。计算机网络已经逐渐发展成为现代生活中必不可少的一个部分,本论文的主要研究目的就是针对计算机网络中的TCP协议中的RENO拥塞控制,对其进行可视化,使其变得更加的明了和容易理解,让我们对计算机网络有更深刻的理解,同时通过实现TCPRENO拥塞控制的可视化让自己对计算机网络有一个更深层次的认识。12课题现状因特网的快速发展带来了信息量的急剧膨胀,网络拥塞已经成为制约因特网发展的瓶颈。在众多TCP拥塞控制算法中,TCPVEGAS表现出比其他算法更为优越的性能,然而自1995年提出至今,仍然没有取代TCPRENO成为现今最广泛使用的TCP拥塞控制算法。有研究表明,这是由于VEGAS在与RENO共存的网络环境下不能公平地竞争到带宽,因此不能实质性地提高网络性能。在分析RENO如何在网络路由中占用带宽的基础上,提出一种在两者兼容环境下的拥塞控制方法,根据不同瓶颈缓冲区容量合理选择A、等参数,实现了在VEGAS与RENO共存环境下两者良好的兼容性,并通过仿真实验证明了该算法的有效性和正确性。近年来,因特网取得了突飞猛进的发展,同时伴随而来的是信息流量的急剧膨胀。有限的网络带宽不能满足日益增长的用户需求,网络拥塞已经成为制约因特网发展和应用的一个瓶颈。如何预防和控制拥塞,已经成为近年来网络研究的热点。TCP是INTERNET上通用的传输层协议之一,是目前应用最广泛的传输控制协议,其核心是拥塞控制机制。基于INTERNET的交换机的通信信道、处理速度及缓冲存储空间通常是网上所有主机共享的资源,也是网络系统潜在的瓶颈。随着信源主机数以及信源业务端业务量的不断增多,瓶颈处就有可能发生资源竞争,从而导致网络拥塞。TCP的一个重要组成部分是执行拥塞控制和拥塞恢复的算法集合。TCP拥塞控制算法的目标是最大限度利用网络带宽,同时不产生数据流传输中的拥塞现象。因此,自从上个世纪80年代出现第一次拥塞崩溃以来,TCP拥塞控制策略就在不断地进行完善和改进。213本文的主要研究内容RENO机制是目前应用最为广泛的比较成熟的机制,也是以后众多改进机制的基础。随着网络迅速的发展和网络应用的多元化,单一的TCP拥塞控制不能较好的发挥其作用,于是基于RENO的,从多方面改进的拥塞控制机制呈现了出来,本论文主要研究的就是如何将RENO拥塞控制进行可视化,通过动画的形式演绎TCP协议中的RENO拥塞控制,使得TCP协议可以立体的展现在大家的面前。2开发平台与技术的选择及介绍21开发环境的介绍我所设计的是一个TCP协议的可视化,它面对的是所有的学习计算机网络的朋友,在一个立体的环境中使大家可以直白的理解RENO拥塞控制,因为选择的是VISUALSTUIDIO2008这款功能强大的开发软件,因此对硬件的要求就上升了一个高度,关于硬件将会在下面给大家详细的介绍。211硬件环境开发该系统应尽可能采用高档的硬件。因此,在应用时应采用更好的配置。处理器INTELPENTIUMPIII或更高处理器。内存512MB或更高。212软件环境选择好的操作系统和好的编程语言是系统优劣的关键,我们要求系统在尽可能多的环境下运行,故选择WINDOWSXP或者WINDOWSVISTA系统。因为VISUALSTUDIO2008具有友好的集成开发界面、面向对象的可视化开发模式、良好的数据库及多媒体应用支持以及高效的软件开发与程序运行,功能更大,开发效率更高,不仅是网络环境下的优秀前端开发语言和工具,也是服务器端WEB编程的优秀工具。加之本人对本系统的操作最为熟练,所以选择该平台为开发环境。操作系统WINDOWSXP或WINDOWSVISTA。开发工具VISUALSTUDIO2008。22RENO拥塞控制简介VJACOBSON在1988年的论文中提出的TCP的拥塞控制由“慢启动SLOWSTART”和“拥塞避免CONGESTIONAVOIDANCE”组成,后来TCPRENO版本中又针对性的加入了“快速重传FASTRETRANSMIT”,“快速恢复FASTRECOVERY”算法,再后来在TCPNEWRENO中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答SELECTIVEACKNOWLEDGEMENT,SACK算法,还有其他方面的大大小小的改进,这就是RENO拥塞控制的成长历程,在软件开发完成后我将会对以上几个阶段进行一个系统的介绍和演示,这也是本次开发的目的。323开发平台简介开发平台我选用了VISUALSTUDIO2008,因为大学四年我们基本都是使用微软出品的开发平台进行学习,对此我们比较熟悉使用起来也比较的得心应手,再者VISUALSTUDIO2008同样是由微软开发的系统,而且编程设计也更加的人性化,使用起来也更加的方便,所以选用VISUALSTUDIO2008来做为本次开发的平台。3需求分析及可行性研究31需求分析需求分析是设计软件之前的必做功课,软件需求分析的质量对软件开发的影响是深远的、全局性的,高质量需求对软件开发往往起到事半功倍的效果,所谓“磨刀不误砍柴功”。如果需求分析出现错误,在后续阶段改正需求分析阶段产生的错误将付出高昂的代价。311时间要求本项目作为大学本科毕业设计题目,从3月22号接受选题开始,在5月20号之前完成系统设计,编码实现工作,在6月3号之前完成毕业设计论文初稿,6月12号之前最终完成论文。312功能要求这个程序要实现1程序要求对RENO拥塞控制的几个阶段进行分别的演示。2程序要求有开始,暂停,继续,停止等按钮用以方便程序的演示。3在演示框的右侧有和演示同步的语言描述方便大家对程序的理解。4通过对RENO拥塞控制的可视化让人们更加深入的了解计算机网络中的TCP协议。5要求整个过程简单明了,不繁冗拖沓,界面美丽大方。313RENO拥塞控制的四个阶段1慢启动阶段SLOWSTART发送方一开始便向网络发送多个报文段,直至达到接收方通告的窗口大小为止(如图31)。当发送方和接收方处于同一个局域网时,这种方式是可以的。但是如果在发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可能出现一些问题。一些中间路由器必须缓存分组,并有可能耗尽存储器的空间。最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。具体来说,当新建连接时,CWND初始化为1个最大报文段MSS大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,CWND就增加1个MSS大小。这样CWND的值就随着网络往返时间ROUNDTRIPTIME,RTT呈指数级增长,事实上,慢启动的速度一点也不慢,只是它的起点比较低一点而已。我们可以简单计算下开始CWND1经过1个RTT后CWND212经过2个RTT后CWND224经过3个RTT后CWND428如果带宽为W,那么经过RTTLOG2W时间就可以占满带宽。图31慢开始演示2拥塞避免阶段(CONGESTIONAVOIDANCE)当发现超时或收到3个相同ACK确认帧时,则表示有丢包事件,此时网络已发生拥塞现象,此时要进行相应的拥塞控制(图32所示)。将慢启动阈值设置为当前拥塞窗口的一半;如检测到超时,拥塞窗口就被置为L。如果拥塞窗口小于或等于慢启动阈值,TCP重新进人慢启动阶段;如果拥塞窗口大于慢启动阈值,TCP执行拥塞避免算法。图32拥塞控制过程从慢启动可以看到,CWND可以很快的增长上来,从而最大程度利用网络带宽资源,但是CWND不能一直这样无限增长下去,一定需要某个限制。TCP使用了一个叫慢启动门限SSTHRESH的变量,当CWND超过该值后,慢启动过程结束,进入拥塞避免阶段。对于大多数TCP实现来说,SSTHRESH的值是65536同样以字节计算。拥塞避免的主要思想是加法增大,也就是CWND的值不再指数级往上升,开始加法增加。此时当窗口中所有的报文段都被确认时,CWND的大小加1,CWND的值就随着RTT开始线性增加,这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。上面讨论的两个机制都是没有检测到拥塞的情况下的行为,那么当发现拥塞了CWND应该这样去调整。首先来看TCP是如何确定网络进入了拥塞状态的,TCP认为网络拥塞的主要依据是它重传了一个报文段。上面提到过,TCP对每一个报文段都有一个定时器,称为重传定时器RTO,当RTO超时且还没有得到数据确认,那么TCP就会对该报文段进行重传,当发生超时时,那么出现拥塞的可能性就很大,某个报文段可能在网络中某处丢失,并且后续的报文段也没有了消息,在这种情况下,TCP反应比较“强烈”1把SSTHRESH降低为CWND值的一半。2把CWND重新设置为1。3重新进入慢启动过程。从整体上来讲,TCP拥塞控制窗口变化的原则是AIMD原则,即加法增大、乘法减小。可以看出TCP的该原则可以较好地保证流之间的公平性,因为一旦出现丢包,那么立即减半退避,可以给其他新建的流留有足够的空间,从而保证整个的公平性。其实TCP还有一种情况会进行重传那就是收到3个相同的ACK。TCP在收到乱序到达包时就会立即发送ACK,TCP利用3个相同的ACK来判定数据包的丢失,此时进行快速重传,快速重传做的事情有1把SSTHRESH设置为CWND的一半2把CWND再设置为SSTHRESH的值具体实现有些为SSTHRESH33重新进入拥塞避免阶段3快速重传阶段FASTRETRANSMIT当TCP源端收到到三个相同的ACK副本时,即认为有数据包丢失,则源端重传丢失的数据包,而不必等待RTO超时。同时将SSTHRESH设置为当前CWND值的一半,并且将CWND减为原先的一半(如图33所示)。8图33快速重传阶段演示4快速恢复阶段FASTRECOVERY当“旧“数据包离开网络后,才能发送“新“数据包进入网络,即同一时刻在网络中传输的数据包数量是恒定的。如果发送方收到一个重复的ACK,则认为已经有一个数据包离开了网络,于是将拥塞窗口加1。314性能要求首先要求程序要完全可靠,可以应付种种由于系统问题产生的错误。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的联系,以免维护困难。32可行性研究321成本可行性分析因为本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。322技术可行性分析1首先搭建毕业设计所需要的软件平台,软件使用的VISUALSTUIDIO2008,做好毕业设计的前期准备。2进行开发前的准备,做好需求分析,熟悉VISUALSTUIDIO2008的功能以便开发,同时对课题进行深入的了解。VISUALSTUIDIO2008是一款非常强大的开发软件,满足了我做毕业设计所需要的一切功能,因此我选择了VISUALSTUIDIO2008做为我的毕业设计的开发软件。3此课题在技术上没有什么大的困难,而且有功能强大的VISUALSTUIDIO2008做为平台,所以这个课题在技术上是完全可以实施的。4相关开发技术的原理性说明41VISUALSTUIDIO2008相关简介VISUALSTUDIO是微软公司推出的开发环境,也是目前最流行的WINDOWS平台应用程序开发环境。目前已经开发到90版本,也就是VISUALSTUDIO2008。VISUALSTUDIO可以用来创建WINDOWS平台下的WINDOWS应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和OFFICE插件。MICROSOFTVISUALSTUDIO2008是面向WINDOWSVISTA、OFFICE2007、WEB20的下一代开发工具,代号“ORCAS”,是对VISUALSTUDIO2005一次及时、全面的升级。VISUALSTUDIO2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用VISUALSTUDIO2008可以高效开发WINDOWS应用。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时VISUALSTUDIO2008支持项目模板、调试器和部署程序。VISUALSTUDIO2008可以高效开发WEB应用,集成了ASPNETAJAX10,包含ASPNETAJAX项目模板,它还可以高效开发OFFICE应用和MOBILE应用。VISUALSTUDIO2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。VISUALSTUDIO2008包括各种增强功能,例如可视化设计器(使用NETFRAMEWORK35加速开发)、对WEB开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。VISUALSTUDIO2008为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的WEB应用程序。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的WEB应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问ASPNET应用程序服务和MICROSOFT平台。VISUALSTUDIO2008在三个方面为开发人员提供了关键改进1快速的应用程序开发为了帮助开发人员迅速创建先进的软件,VISUALSTUDIO2008提供了改进的语言和数据功能,例如语言集成的查询LINQ,各个编程人员可以利用这些功能更轻松地构建解决方案以分析和处理信息。VISUALSTUDIO2008还使开发人员能够从同一开发环境内创建面向多个NETFRAMEWORK版本的应用程序。开发人员能够构建面向NETFRAMEWORK20、30或35的应用程序,意味他们可以在同一环境中支持各种各样的项目。2突破性的用户体验VISUALSTUDIO2008为开发人员提供了在最新平台上加速创建紧密联系的应用程序的新工具,这些平台包括WEB、WINDOWSVISTA、OFFICE2007、SQLSERVER2008和WINDOWSSERVER2008。对于WEB,ASPNETAJAX及其他新技术使开发人员能够迅速创建更高效、交互式更强和更个性化的新一代WEB体验。3高效的团队协作VISUALSTUDIO2008提供了帮助开发团队改进协作的扩展的和改进的服务项目,包括帮助将数据库专业人员和图形设计人员加入到开发流程的工具。42TCP/IP协议和拥塞控制简介TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。TCP/IP主要包括以下协议IP网间协议INTERNETPROTOCOL,负责主机间数据的路由和网络上数据的存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。ICMP网间报文控制协议INTERNETCONTROLMESSAGEPROTOCOL,此协议处理网关和主机的差错和传送控制。TCP传输控制协议TRANSMISSIONCONTROLPROTOCOL,这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。TCP/IP协议的核心部分是传输层协议TCP、UDP,网络层协议IP和物理接口层,这三层通常是在操作系统内核中实现。因此用户一般不涉及。编程时,编程界面有两种形式一、是由内核直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过核外的应用程序才能实现,所以要使用套接字SOCKET来实现。TCP提供面向连接的服务。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。因为在本设计中主要是完成TCP的拥塞控制所以下面主要介绍一下TCP的拥塞控制的一般原理和它所起到的作用1在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏产生拥塞CONGESTION。2出现资源拥塞的条件对资源需求的总和可用资源3若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。4拥塞控制所起到的作用如图41所示图41拥塞控制所以到的作用拥塞控制是很难设计的,因为它是一个动态的(而不是静态的)问题。当前网络正朝着高速化的方向发展,这很容易出现缓存不够大而造成分组的丢失。但分组的丢失是网络发生拥塞的征兆而不是原因。在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化甚至发生死锁的原因。这点应特别引起重视。5当网络出现拥塞时,无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限SSTHRESH设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口CWND重新设置为1,执行慢开始算法如图42所示。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。6当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限SSTHRESH减半。但接下去不执行慢开始算法。由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口CWND现在不设置为1,而是设置为慢开始门限SSTHRESH减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。【8】图42拥塞控制整个过程43C简介及特点431C简介C是一种安全的、稳定的、简单的、优雅的,由C和C衍生出来的面向对象的编程语言。它在继承C和C强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C综合了VB简单的可视化操作和C的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为NET开发的首选语言,并且C成为ECMA与ISO标准规范。C看似基于C写成,但又融入其它语言如PASCAL、JAVA、VB等。微软C语言定义主要是从C和C继承而来的,而且语言中的许多元素也反映了这一点。C在设计者从C继承的可选选项方面比JAVA要广泛一些比如说STRUTS,它还增加了自己新的特点比方说源代码版本定义。但它还太不成熟,不可能挤垮JAVA。C还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是“这是对JAVA的反击。”C更像JAVA一些,虽然微软在这个问题上保持沉默这也是意料中的事情,我觉得,因为JAVA近来很成功而使用JAVA的公司都报告说它们在生产效率上比C获得了提高。432C与C、JAVA的区别C是微软公司在去年六月发布的一种新的编程语言,并定于在微软职业开发者论坛PDC上登台亮相。C是微软公司研究员ANDERSHEJLSBERG的最新成果。C看起来与JAVA有着惊人的相似;它包括了诸如单一继承,界面,与JAVA几乎同样的语法,和编译成中间代码再运行的过程。但是C与JAVA有着明显的不同,它借鉴了DELPHI的一个特点,与COM组件对象模型是直接集成的,而且它是微软公司NETWINDOWS网络框架的主角。微软C语言定义主要是从C和C继承而来的,而且语言中的许多元素也反映了这一点。C在设计者从C继承的可选选项方面比JAVA要广泛一些比如说STRUCTS,它还增加了自己新的特点比方说源代码版本定义。但它还太不成熟,不可能挤垮JAVA。C还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是“这是对JAVA的反击”。433C的前途这世界上没有什么比编程工具更加牵动程序员的心。VC、VB、DELPHI、JAVA这些耀眼的名字不仅占据了程序员的生活,而且似乎已经成为了某种信仰。可是,伴随着新世纪的脚步,这些信仰又一次遭遇了重大的挑战。如果抛开一切非技术方面的因素,C无疑是这个星球上有史以来最好的编程语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理你不可能在另外的一种语言中找到所有这些特性。尽管像很多人注意到的一样,当我罗列上述特性时,总是让人想到JAVA,然而C确实走得更远。但是,C也有弱点。首先,在一些版本较旧的WINDOWS平台上,C的程序还不能运行,因为C程序需要NET运行库作为基础,而NET运行库作为现在的的WINDOWS(XP及以后版本)的一部分发行,WINDOWSME和WINDOWS2000用户只能以SERVICEPACK的形式安装使用。其次,C能够使用的组件或库还只有NET运行库等很少的选择,没有丰富的第三方软件库可用,这需要有一个过程,同时各软件开发商的支持也很重要。第三,JAVA的成功因素里有一些是反微软阵营的吹捧,虽然“只写一次,到处运行”只是一句口号,但毕竟已经是一种成熟的技术。而C的鼓吹者目前只有名声不佳的微软,且只能运行在WINDOWS上。实际上这两种语言都不是不可替代的,理智的说,对软件开发商而言,什么用的最熟什么就是最好的工具。尤其对C的使用者,C没有带来任何新东西,因为NET运行库在C中也可以使用,没有要换的绝对的理由。综上所述,我个人认为,近几年,C将不可避免地崛起,在WINDOWS平台上成为主角,而JAVA将在UNIX、LINUX等平台上成为霸主,C将继续在系统软件领域大展拳脚。非常有意思的是,这些语言的语法极其接近,因为JAVA和C都是由C发展而来的。其他的开发工具当然还会在相当长的时间里继续他们的旅程,不过在市场份额上,将不可避免地受到冲击。5系统功能模块分析51主框架具体功能为了更好的把TCP协议中的RENO拥塞控制展现出来,需要有一个优美的窗口,在窗口中实现拥塞控制的各个阶段的可视化,然后有几个按钮控制整个演示过程的开始,停止,暂停,继续,使得动态演示更加的完美,在演示的同时要在演示窗的旁边有同步的文字解释,使得整个过程中的每一个步骤更加容易理解,这就是本课题的总体设计结构和目的。本设计主要由以下几大部分组成慢开始部分,拥塞避免部分,实现两部分的算法大体一致。慢开始部分由演示部分,控制按钮和文字解说三个部分组成,三个部分相互联系构成一个有机的整体,给TCP协议的RENO拥塞控制的可视化一个完美的诠释。52各功能模块详细设计本次毕业设计主要要实现的功能就是使TCPRENO拥塞控制实现可视化,现在对要实现的几个功能模块和详细的设计理念进行系统的分析。首先要做的就是在窗口中实现数据的发送和接收,因为不是做的FLASH,要以程序来实现数据包的来回传送,所以就要用函数不断的改变数据包的坐标来实现数据包的滑动,但是同时要控制数据包的停止,在数据包发送到接收端消失后,要让其停止而不是在隐藏后继续滑动,这就要用一个函数来实现,在后面程序的分析时再做具体的分析。这其中的具体实现就是当传送轮次一发送出数据M1在接收方接收到数据包的同时,数据M1停止,同时接收方发送出确认M1返回发送方,第一个传输轮次结束。在整个传输过程中数据M1和确认M1都不仅仅是从显示传送到隐藏,在隐藏后还继续滑动,而是在从显示到隐藏的同时就已经停止滑动,这是为了方便程序在后面做进一步完善而做好的准备。其次是控制按钮的设计,简单的来说控制按钮由开始,停止,暂停,继续四个按钮组成,开始和停止按钮组成一个按钮,开始按钮按下后数据开始传送,此时开始按钮自动变成停止按钮,按下停止按钮,数据M1回到初始位置,按钮自动变为开始按钮。暂停和继续按钮组成一个按钮,未按动开始按钮前暂停按钮和继续按钮为未启动状态显示为灰色,当开始按钮按下后暂停按钮自动启动,按下暂停按钮后暂停按钮自动转化成继续按钮,同时数据传送定格,按下开始按钮后,开始按钮自动转化为暂停按钮,同时数据继续传送,这就是几个按钮的状态和功能。最后就是文字同步演示窗口,在数据开始传送后下面的文字同步演示窗口启动并对数据传送进行同步的传送介绍,当数据M1开始有发送方发送后文字同步演示窗口将对此作出解释即“轮次一,数据M1开始由发送方开始传送”,当数据M1由接收方接受到后确认M1开始返回,文字同步演示窗口同样会作出解释“轮次一,确认M1开始由接收方返回到发送方”。由于是文字同步演示,所以当暂停和开始按钮按下后文字同步演示窗口会相应的暂停和开始,这也是程序完善性的一个基本的体现。当停止按钮按下后文字同步演示窗口的的所有解释文字全部清空进入到下一轮的数据传送演示状态。这就是整个TCPRENO拥塞控制可视化的过程,整个过程将全部由C语言实现,程序简洁严密,几乎考虑到了所有的漏洞,使得程序尽善尽美。6详细设计及编码实现61主框架详细设计为了更好的把TCP协议中的RENO拥塞控制展现出来,需要有一个优美的窗口,在窗口中实现拥塞控制的各个阶段的可视化,然后有几个按钮控制整个演示过程的开始,停止,暂停,继续,使得动态演示更加的完美,同时在演示的同时要在演示窗的旁边有同步的文字解释,使得整个过程中的每一个步骤更加容易理解,这就是本课题的总体设计结构和目的。本设计主要由以下几大部分组成慢开始部分,拥塞避免部分,实现两部分的算法大体一致。慢开始部分由演示部分,控制按钮和文字解说三个部分组成,三个部分相互联系构成一个有机的整体,给TCP协议的RENO拥塞控制的可视化一个完美的诠释。62模块的详细设计621程序代码USINGSYSTEMUSINGSYSTEMCOLLECTIONSGENERICUSINGSYSTEMCOMPONENTMODELUSINGSYSTEMDATAUSINGSYSTEMDRAWINGUSINGSYSTEMLINQUSINGSYSTEMTEXTUSINGSYSTEMWINDOWSFORMSNAMESPACESLOWSTARTPUBLICPARTIALCLASSFORM1FORMPUBLICFORM1INITIALIZECOMPONENTTEXTBOX1TEXT“TEXTBOX2TEXT“PRIVATEPOINTLEFT_SNEWPOINT140,135PRIVATEPOINTRIGHT_ENEWPOINT530,135PRIVATEPOINTRIGHT_SNEWPOINT500,190PRIVATEPOINTLEFT_ENEWPOINT120,190PRIVATEINTSTEP0PRIVATEVOIDTIMER1_TICKOBJECTSENDER,EVENTARGSESWITCHSTEPCASE0IFPICTUREBOX_SLOCATIONLEFT_STEXTBOX1TEXT“轮次1CWND1发送方开始发送数据M1RN“IFPICTUREBOX_SLOCATIONRIGHT_EPICTUREBOX_SVISIBLEFALSESTEP1PICTUREBOX_SLOCATIONLEFT_SELSEPICTUREBOX_SVISIBLETRUEPICTUREBOX_SLOCATIONNEWPOINTPICTUREBOX_SLOCATIONX10,PICTUREBOX_SLOCATIONYBREAKCASE1IFPICTUREBOX_RLOCATIONRIGHT_STEXTBOX2TEXT“轮次1接收方收到M1并发出确认RN“IFPICTUREBOX_RLOCATIONLEFT_EPICTUREBOX_RVISIBLEFALSESTEP2PICTUREBOX_RLOCATIONRIGHT_SELSEPICTUREBOX_RVISIBLETRUEPICTUREBOX_RLOCATIONNEWPOINTPICTUREBOX_RLOCATIONX10,PICTUREBOX_RLOCATIONYBREAKCASE2IFPICTUREBOX_SLOCATIONLEFT_STEXTBOX1TEXT“轮次2CWND2发送方开始发送数据M2到M3RN“IFPICTUREBOX_SLOCATIONRIGHT_EPICTUREBOX_SVISIBLEFALSESTEP3PICTUREBOX_SLOCATIONLEFT_SELSEPICTUREBOX_SVISIBLETRUEPICTUREBOX_SIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESM2PICTUREBOX_SLOCATIONNEWPOINTPICTUREBOX_SLOCATIONX10,PICTUREBOX_SLOCATIONYBREAKCASE3IFPICTUREBOX_RLOCATIONRIGHT_STEXTBOX2TEXT“轮次2接收方收到M2到M3并发出确认RN“IFPICTUREBOX_RLOCATIONLEFT_EPICTUREBOX_RVISIBLEFALSESTEP4PICTUREBOX_RLOCATIONRIGHT_SELSEPICTUREBOX_RVISIBLETRUEPICTUREBOX_RIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESQ2PICTUREBOX_RLOCATIONNEWPOINTPICTUREBOX_RLOCATIONX10,PICTUREBOX_RLOCATIONYBREAKCASE4IFPICTUREBOX_SLOCATIONLEFT_STEXTBOX1TEXT“轮次3CWND4发送方开始发送数据M4到M7RN“IFPICTUREBOX_SLOCATIONRIGHT_EPICTUREBOX_SVISIBLEFALSESTEP5PICTUREBOX_SLOCATIONLEFT_SELSEPICTUREBOX_SVISIBLETRUEPICTUREBOX_SIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESM3PICTUREBOX_SLOCATIONNEWPOINTPICTUREBOX_SLOCATIONX10,PICTUREBOX_SLOCATIONYBREAKCASE5IFPICTUREBOX_RLOCATIONRIGHT_STEXTBOX2TEXT“轮次3接收方收到M4到M7并发出确认RN“IFPICTUREBOX_RLOCATIONLEFT_EPICTUREBOX_RVISIBLEFALSESTEP6PICTUREBOX_RLOCATIONRIGHT_SELSEPICTUREBOX_RVISIBLETRUEPICTUREBOX_RIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESQ3PICTUREBOX_RLOCATIONNEWPOINTPICTUREBOX_RLOCATIONX10,PICTUREBOX_RLOCATIONYBREAKCASE6IFPICTUREBOX_SLOCATIONLEFT_STEXTBOX1TEXT“轮次4CWND8发送方开始发送数据M8到M15RN“IFPICTUREBOX_SLOCATIONRIGHT_EPICTUREBOX_SVISIBLEFALSESTEP7PICTUREBOX_SLOCATIONLEFT_SELSEPICTUREBOX_SVISIBLETRUEPICTUREBOX_SIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESM4PICTUREBOX_SLOCATIONNEWPOINTPICTUREBOX_SLOCATIONX10,PICTUREBOX_SLOCATIONYBREAKCASE7IFPICTUREBOX_RLOCATIONRIGHT_STEXTBOX2TEXT“轮次4接收方收到M8到M15并发出确认RN“IFPICTUREBOX_RLOCATIONLEFT_EPICTUREBOX_RVISIBLEFALSESTEP8PICTUREBOX_RLOCATIONRIGHT_SELSEPICTUREBOX_RVISIBLETRUEPICTUREBOX_RIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESQ4PICTUREBOX_RLOCATIONNEWPOINTPICTUREBOX_RLOCATIONX10,PICTUREBOX_RLOCATIONYBREAKCASE8TEXTBOX1TEXT“慢开始过程结束RN“TEXTBOX2TEXT“慢开始过程结束RN“PICTUREBOX_SLOCATIONLEFT_SPICTUREBOX_RLOCATIONRIGHT_SPICTUREBOX_SIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESM1PICTUREBOX_SVISIBLETRUEPICTUREBOX_RVISIBLEFALSEPICTUREBOX_RIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESQ1TIMER1ENABLEDFALSEBREAKPRIVATEVOIDBUTTON_START_CLICKOBJECTSENDER,EVENTARGSEIFBUTTON_STARTTEXT“开始“BUTTON_STARTTEXT“停止“TIMER1ENABLEDTRUEBUTTON_PAUSEENABLEDTRUEELSEBUTTON_STARTTEXT“开始“TIMER1ENABLEDFALSEBUTTON_PAUSEENABLEDFALSEBUTTON_PAUSETEXT“暂停“STEP0TEXTBOX1TEXT“TEXTBOX2TEXT“PICTUREBOX_SLOCATIONLEFT_SPICTUREBOX_RLOCATIONRIGHT_SPICTUREBOX_SIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESM1PICTUREBOX_SVISIBLETRUEPICTUREBOX_RVISIBLEFALSEPICTUREBOX_RIMAGEGLOBALSLOWSTARTPROPERTIESRESOURCESQ1PRIVATEVOIDBUTTON_PAUSE_CLICKOBJECTSENDER,EVENTARGSEIFBUTTON_PAUSETEXT“暂停“BUTTON_PAUSETEXT“继续“TIMER1ENABLEDFALSEELSEBUTTON_PAUSETEXT“暂停“TIMER1ENABLEDTRUE622程序运行结果RENO拥塞控制中的慢开始阶段1最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。具体来说,当新建连接时,CWND初始化为1个最大报文段M1大小,如图61所示图61轮次1CWND1发送方开始发送数据M1当接收端收到了发送端的数据包M1后会返回一个确认如图62所示图62轮次1CWND1接收方开始发送确认M12当第一个数据包发出并收到确认后,CWND加1开始传送第二组数据,具体如图63所示图63轮次1CWND1发送方开始发送数据M2到M3当数据M2M3到达接收方后,接收方返回确认数据,如图64

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论