网络知识 --- TCP的流量控制与拥塞控制

1.超时重传:TCP服务必须能够重传超时时间内(往返时间RRT,Round-Trip Time)未收到确认报文段的TCP报文段。TCP为每个TCP模块都维护了一个重传定时器,定时器在第一次发送TCP报文段时启动,如果超时时间内未收到接收方的确认号报文段,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多重传几次,这是TCP的重传策略。 与TCP超时重连的策略相似。

2.TCP流量控制

TCP提供了一种基于滑动窗口的流量控制机制。在通信过程中,接收方根据接收缓存的的大小,动态地调整发送方的发送窗口的大小,这就是接收窗口(rwnd,receive window),即调整TCP首部的“窗口”字段值,来限制发送方向网络中注入报文的速率。同时,发送方根据其对当前网络拥塞程序的估计而确定的窗口值,称为拥塞窗口(cwnd,congestion window),其大小与网络的带宽和时延密切相关。发送窗口(swnd,send window)取得是rwnd和cwnd的最小值。

3.TCP拥塞控制

所谓拥塞控制就是防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。

拥塞控制与流量控制的区别:拥塞控制是让网络能够承受现有的网络负荷,它是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素;流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

为了很好地对传输层进行拥塞控制,因特网建议标准定义了以下四种算法:慢开始、拥塞避免、快重传、快恢复。

1>慢开始算法

在TCP刚连接好,开始发送TCP报文段时,先令cwnd=1,即一个最大报文段长度MSS。在每接收到一个对新报文段的确认后,将cwnd增加一个MSS。

使用慢开始算法,每经过一个传输轮次,拥塞窗口cwnd就加倍,呈指数增长,这样慢开始一直把拥塞窗口cwnd增大到一个规定的慢开始门限ssthresh(阈值),然后改用拥塞避免算法。

2>拥塞避免算法

当拥塞窗口的大小采用慢启动方式增长到慢启动门限时,就进入拥塞避免阶段,拥塞避免阶段不再以指数形式增长拥塞窗口,而是每经过一个往返时间RTT就将发送方的拥塞窗口+1, 使其增长速度减缓。按照线性方式增长。如果发生网络拥塞,比如丢包时,就将慢启动门限设为原来的一半,然后将拥塞窗口设置为1,开始执行慢启动算法。(较低的起点,指数级增长)。

根据cwnd的大小来执行不同的算法,如下:

<1>当cwnd < ssthresh时,使用慢开始算法;

<2>当cwnd > ssthresh时,使用拥塞避免算法;

<3>当cwnd = ssthresh时,使用慢开始算法或拥塞避免算法均可。

3> 快重传算法

假设发送方发送的报文段分别为: M1,M2,M3,M4,M5,M6 , 当接收方收到M1和M2后,M3报文段丢失,接着收到的M4,M5,M6都不做处理,而是没接收到一个报文段就对M2重复确认,发送方接收到重复的三次确认报文段(冗余ACK),就对其后的报文段进行重新发送,而不需要等待超时时间到达。当快速重传后,立即进入到快速恢复阶段。

4> 快恢复算法

发送方接收到重复的三次确认报文段时,将慢启动门限设置为原来的一半,然后将cwnd设置为现在的慢启动门限值,不再执行慢启动算法,而是直接进入拥塞避免阶段,使cwnd成线性方式增大。由于跳过了cwnd从1开始的慢开始过程,所以称为快恢复。

 

 

你可能感兴趣的:(网络知识)