接着上一篇博客进行讲解,前面一章讲解了TCP通信的过程。这一章主要讲解TCP拥塞控制的背后逻辑
说TCP拥塞控制前,先讲讲TCP的流量控制
TCP的流量控制
-
一般来说,我们总是希望数据传输更快一些
但是,当发送方把数据发送得过快时,接收方就可能来不及接收,从而导致数据的丢失。
-
所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
-
利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
注意发送方的滑动窗口大小,主要是由接收方来控制,具体多大,取决于接收方的缓存空间剩余大小。
TCP的拥塞控制
- 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞(congestion)
在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络资源
- 若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。(拥塞控制的目的:避免整个网络的性能下降)
TCP拥塞控制的流程
进行拥塞控制前,首先需要判断网络是否发生了拥塞。
TCP发生拥塞的信号是丢包。
TCP的拥塞控制经过了4个流程,分别为:
慢开始、拥塞避免、快重传和快恢复。
首先在TCP连接时,会确定一些参数。此时发送方中会有拥塞控制阈值,刚开始传输数据时处于慢开始阶段。在随后的数据发送阶段,发送速率会呈指数增长。当发送速率超过拥塞控制的阈值时,此时进入第二阶段拥塞避免,此时发送速率呈线程增长,每次速度+1。一旦某个速率下,重传计时器超时了,此时判断网络很可能发生了拥塞。那么,此时拥塞控制阈值会根据依据当前的传输速率减半作为新的值,且拥塞控制窗口(也就是发送窗口)变为1。如下图所示
快重传:是指当发送端接收到3个重复的确认报文时(表示网络发生了拥塞,某个数据报文段丢失了),此时就将缺少的数据赶快发送出去。
快恢复::这个很好理解,在网络发生拥堵的时候,上面的操作是直接将拥塞控制窗口(发送窗口)变为1了。那么快恢复就是将拥塞控制窗口不变为1。