游戏后台开发
分类: 网络与安全
2014-02-19 22:53:42
关健字:
UDP
UDX
UDT
TCP
吞吐量
流量
代宽
拥塞控制
大都知道,UDP是不可靠传输协议与TCP刚好相反.
不过因为UDP的特性适合传输不需要确认的数据,在应用层如果设计好的传输协议一样可以进行很好的可靠传输.比如RUDP协议.
但是光可靠传输还不够,流量控制是很重要的.
我们从简单的情况说起来说明流量控制的重要性.
可靠性:
故名思意,就是客户1发送一个包给客户2,客户2能收到这个包.这才叫可靠传输.
最简单的可靠传输协议就是停止等待协议,一问一答方式.
打个比方就是,我发了一封邮件,对方打开邮件后,发送一封回信,也叫回致,那么发送方知道了对方已经收到了我的邮件.
很显然,在等待回信的时候,有很大一段时间是用来等待的,这样对于流量来说是很大的浪费.
滑动窗口协议,是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输.
我们可以仿照TCP来完成UDP的可靠传输,而这篇BLOG不是用来说明滑动窗口协议.我们来分析一下本质.
在流量控制上现在主要有几种技术方案,通过往返时间的增量来控制.丢包时间差控制,流量控制,ACK返回控制.等 主流控制方法.
他们控制的核心就是控制发送窗口的大小,窗口越大意味着发送流量越大.
我们分别对这些控制方法进行一个解说.当了解这些方法后,我们可以对实现这个可靠传输有了更准确的一个指导思想.
RTT方法,这个方法代表的tcp实现是TCP vegas.他是通过测RTT,通过公式 Expected =WindowSiz/BaseRTT及Actual = WindowSize/RTT,及Diff = Expected-Actual,来动态更改发送窗口
当流量超过负荷时就会发生丢包,这里会发生丢包现象.当丢包发生时,一般采用折半发送窗口解除拥塞.
需要再次提到的,就是拥塞预测,这个是很重要的手段,传统的RENO算法,是通过丢包检测,这个方法理论上说是检测的本质,但是对于超大延时网络,如果当真的丢包了再去拥塞避免,其实已经晚已,因为,网关上已经有太多的包放在那里被无情丢弃掉了.
这样的话,会马上引发慢启动.这样效率大大损失,这在其他UDP传输算法上,比如UDT,VTCP上表现比较明显,我想他们应该是没有拥塞预测方法的.
拥塞预测方式,主要方法,可以通过RTT测量,和ACK频率测量,另外就是流量增量测量.