优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

面向连接技术中超时重发机制的模拟实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:
摘 要? 在各种通信技术中,信息传送过程不外乎面向连接和无连接两者方式。其中,面向连接方式能够在传递过程中自动进行差错校正,让丢失的信息重新发送,从而保证信息的可靠传送。但这样的优点也给实现增加了复杂性。面向连接的差错校正过程由超时触发的重发和超时触发的重发两部分组成。本课题研究的是后者。为了保证信息传递的可靠进行,发送方每发出一帧的同时除了给帧按序加上编号外还启动一个定时器,正常情况下接收方应在某时限内收到该帧并予以确认,如果发送方在定时器溢出前没有收到接收方的确认则有可能传送出错,在确认传送出错的基础上应立即启动重发过程。 本模拟软件采用VB6.0作为开发工具,全文详细阐述了系统的功能需求、开发工具、系统设计、程序界面的建立及程序代码的编写、总结、致谢、参考文献等内容。 关键词:通信技术;面向连接;超时触发; 超时重发传输技术概述 超时重发指为了保证信息传递的可靠进行,发送方每发出一帧的同时除了给帧按序加上编号外还启动一个定时器,正常情况下接收方应在某时限内收到该帧并予以确认,如果发送方在定时器溢出前没有收到接收方的确认则有可能传送出错,在确认传送出错的基础上应立即启动重发过程。 超时重发机制是TCP协议中最重要和最复杂的内容。为了提供可靠的报文传输服务,采用了定时器和确认机制。超时时间应该根据报文段往返发送方和接收方之间的时间来确定。往返时间定义为RTT(Round Trip Time)。TCP报文段在传输中可能经过若干个网络和中间节点,当然网络中复杂的变化可能导致TCP报文段RTT存在非常大的波动。TCP必须能够适应这种情况,确定恰当的超时时间。最早的TCP曾经用了一个非常简单的公式来估计当前网络的状况,如下: R<-aR+(1-a)MRTP=Rb其中a是一个经验系数为0.1,b通常为2。 注意,这是经验,没有推导过程,这个数值是可以被修改的。这个公式是说用旧的RTT(R)和新的RTT (M)综合到一起来考虑新的RTT(R)的大小。但又可以看到,这种估计在网络变化很大的情况下完全不能做出“灵敏的反应”,于是就有下面的修正公式: Err=M-AA<-A+gErrD<-D+h(|Err|-D)RTO=A+4D 这个递推公式甚至把方差这种统计概念也使用了进来,使得偏差更加的小。而且,必须要指出的是,这两组公式更新,都是在 数据成功传输的情况下才进行,在发生数据重新传输的情况下,并不使用上面的公式进行网络估计,理由很简单,因为程序已经不在正常状态下了,估计出来的数据 也是没有意义的。RTO的初始化是由公式决定的,例如最初的公式,初始的值应该是1。而修正公式,初始RTO应该是A+4D。当数据正常传输的情况下,就会用上面的公式来更新各个数据,并重开定时器,来保证下一个数据被顺利传输。要注意的是:重传的情况下,RTO不用上面的公式计算,而采用一种叫做“指数退避”的方式。例如:当RTO为1S的情况下,发生了数据重传,就用RTO=2S的定时器来重新传输数据,下一次用4S。一直增加到64S为止。???????? 同时还有一种Karn算法,是由Phil Karn提出的一种解决RTT二义性的方法。二义性是由于超时重发的报文段引起的,因此可以只对没有超时的报文段的确认来重新计算往返时间RTT。当然如果网络延迟突然增加,造成所有报文段超时,RTT时间不能适应变化而调整。改进后的Karn算法,当报文段出现了重传,TCP超时的时间也会随之而延长,从而对定时器进行了补偿。 一个连接中,有且仅有一个测量定时器被使用。也就是说,如果TCP连续发出3组数据,只有一组数据会被测量。ACK数据报不会被测量,原因很简单,没有ACK的ACK回应可以供结束定时器测量。 前面曾经提到过,数据在传输的时候不能只使用一个窗口协议,还需要有一个拥塞窗口来控制数据的流量,使得数据不会一下子都跑到网路中引起“拥 塞”。也曾经提到过,拥塞窗口最初使用指数增长的速度来增加自身的窗口,直到发生超时重传,再进行一次微调。但是没有提到,如何进行微调,拥塞避免算法和 慢启动门限就是为此而生。 所谓的慢启动门限就是说,当拥塞窗口超过这个门限的时候,就使用拥塞避免算法,而在门限以内就采用慢启动算法。所以这个标准才叫做门限,通常,拥塞窗口记做cwnd,慢启动门限记做ssthresh。下面来看看拥塞避免和慢启动是怎么一起工作的。 对一个给定的连接,初始化cwnd为1个报文段,ssthresh为65535个字节。TCP输出例程的输出不能超过cwnd和接收方通告窗口的大小。拥塞避免是发送方使用 的流量控制,而通告窗口则是接收方进行的流量控制。前者是发送方感受到的网络拥塞的估 计,而后者则与接收方在该连接上的可用缓存大小有关。当拥塞发生时(超时或收到重复确认),ssthresh被设置为当前窗口大小的一半(cwnd 和接收方通告窗口大小的最小值,但最少为2个报文段)。此外,如果是超时引起了拥塞,则 cwnd被设置为1个报文段(这就是慢启动)。当新的数据被对方确认时,就增加cwnd,但增加的方法依赖于是否正在进行慢启动或拥塞避免。如果cwnd小于或等于ssthresh,则正 在进行慢启动,否则正在进行拥塞避免。慢启动一直持续到回到当拥塞发生时所处位置的半时候才停止(因为记录了在步骤2 中制造麻烦的窗口大小的一半),然后转为执行拥塞避免 1.2本文所做工作 在网络通信正常的两台微机上分别运行发送端程序和接收端程序;两台微机之间通过IP地址访问;发送端发出的信息内容和序号在接收端应该能看到;接收方收到后应给发送方发送肯定证实信号;发送方收到肯定证实后应复位定时器;定时器的时限可以通过界面人为设置;超时的模拟可用随机数模拟超时并在定时器时限的方式来完成。winsock端口采用TCP端口。 在本项目是作为本科的毕业设计课题提出来的,它规模适中,适合于个人开发,能够锻炼我的学习新知识能力,锻炼编程能力以及锻软件工程的思维方式。它的具体意义见下面:加深对面向连接技术和无连接技术的原理认识,同时通过编程模拟实现超时触发,更加形象的提高对这种发送机制的感知。