传输控制协议TCP(三)

Karn算法与定时器补偿

   由于重传会造成发送放无法辨出确认信息到底是针对哪个数据包,此称为确认二义性。Karn算法,解决了此问题:TCP不应更改重传报文段的往返时间估计值,即只对没有二义性的确认(即对只发送一次的报文段的到达的确认)的往返时间估计值进行调整。Karn算法要求发送方使用定时器补偿策略把超时重传的影响估计在内。当出现超时重传时,TCP就加大定时时限。实际上每当重传一个报文段时,TCP就增加定时时限值(为避免定时时限无限增大,在TCP的多数实现中都规定了实现的上限值,这个值比互联网上的任何路径的时延都大),在实现TCP时使用许多技术来计算补偿,他们大多使用一个常数因子y

New_timeout = y * timeout

Y的典型值是2(已经证明了y 小于2时会导致时限值不稳定)。

 

Karn算法:计算往返时间估计值,忽略对应于重传报文段的样本,但是要使用补偿策略。对一个重传分组的许多后续分组,其定时时限均不变,直到获得一个新的有效样本时再更改时限值。

 

对拥塞的响应

      拥塞是由于一个或者若干个交换网点(如路由器)的数据报负载过重而出现严重的时延。当发生拥塞时时延增加,而路由器把大量数据报放在队列中,直到能够路由他们。由于每个路由器的存储能力有限,而且数据报要竞争存储空间。在最坏的情况下,到达被拥塞的路由器的数据报的总数不断增加,直至路由器容量饱和,于是路由器开始丢弃数据报。

      为避免拥塞崩溃,TCP必须在拥塞发生时减少传输。路由器观察队列的长度,使用类似于ICMP源站抑制报文的技术通知主机出现拥塞现象。为了避免拥塞,现在TCP标准推荐两种技术:慢启动和加速递减。在连接未发生的稳定状态下,拥塞窗口与接收窗口一样大。降低拥塞窗口值就会降低TCP注入该连接的通信量。为了估算拥塞窗口的大小,TCP假设大多数的报文丢失都源于拥塞。

      避免拥塞的加速递减策略:一旦发现丢失报文段,立即将拥塞窗口的大小减半(最后减到最小值1)。对于保留在发送窗口中的报文段,将重传定时器的时限加倍(或称为按指数规律对重传定时器进行补偿)。

      拥塞结束之后TCP恢复呢?慢启动策略:在启动新连接的传输或在拥塞之后增加通信量时,仅以一个报文段作为拥塞窗口的初始值,而每当收到一个确认之后,将拥塞窗口的大小增加1。为避免窗口增加过快以至于导致更多的拥塞,TCP还附加了一个限制。当拥塞窗口到达拥塞时的一半时,TCP进入拥塞避免状态,降低窗口增加的速度。在拥塞避免状态中,窗口的所有报文段都被确认以后,窗口大小也只能增加1

      把慢启动增加,快速递减、拥塞避免、对时延变化的测量以及按指数规律对重传定时器进行补偿等技术结合在一起,就能在不明显增加协议软件运算开销的情况下显著的提高TCP的性能。

你可能感兴趣的:(TCP/IP)