TCP拥塞控制概念性总结

以下是我个人的一些理解,来做个参考吧。

术语表

TCP send buffer, TCP发送方的缓冲区

TCP receive buffer, TCP接收方的缓冲区

Slide Window, 滑动窗口,分为cwnd和rwnd两种

cwnd, congestion window, 这个专门指的是发送方的滑动窗口

rwnd, receiver advertised window, 这个专门指的是接收方的滑动窗口

AIMD, additive increase/multiplicative decrease,说直白点,就是慢慢增加,快速减少.(加法增加的慢,乘法减少的快嘛)

MTU, maximum transmission unit,指的是ip网络层的单次最大传输单元

MSS, maximum segment size, 指的是TCP传输层的最大传输单元

RTT, round-trip time, 指的是从发送到接收这一个来回的行程所用的总体时间

为什么要有TCP拥塞控制算法。

我们知道,cwnd和rwnd只是代表发送方和接收方能一次接收的最大数据量,只靠这俩个值是无法保证网络带宽能达到最大的利用率。

关键原因在于,发送方和接收方之间的网络带宽和性能是未知的,即使双方的发送和接收能力相当强,但网络状况不良的话,有可能连一个字节都难以发送。

而TCP拥塞控制算法就是用来平衡windowsize和networkstate的,从而能使得那个环境巨复杂的网络能达到最大的最好的利用率。

TCP拥塞控制,我们这里只讨论最经典的TCP拥塞控制算法

这个一个比较宽泛的概念,从字面意思来理解,既然是控制,就是在控制所有,包括了流量发送从小到大,再从大到小,最后达到一个稳定的高效的网络利用率的过程。

大cwnd增加时,有一个门限值,ssthresh。

TCP拥塞控制---慢启动

当窗口大小小于这个值时,窗口大小是以指数级(cwdn*2)增涨的,目的是,让窗口大小尽可能快的达到网络的最大传输率,这个过程我们称为慢启动。

TCP拥塞控制---拥塞避免

当窗口大小大于这个值时,窗口大小是以线性(cwnd+n)增涨的,目的是,避免cwnd增涨过快,而导致拥塞。

TCP拥塞控制---快速恢复

一但TCP意识到网络发生了拥塞,TCP会立即将cwnd大小减半,再开启慢启动过程。

TCP拥塞控制---快速重传

一般情况下,如果在一个超时时钟周期内没有收到ack,发送方就会重传数据,这个过程的弊端就是,一定要等到超时时间结束。

而快速重传机制,是这样的,及时还没有到超时时间结束,如果连续收到3个相同的ack,发送方便立即进入重传状态。

其它TCP拥塞算法

HSTCP

BIC

CUBIC

XCP

VCP

等等...

猜你喜欢

转载自blog.csdn.net/collonn/article/details/71730353
今日推荐