前言:
拥塞控制和流量控制分别是什么概念?流量控制的过程,分别解决什么问题?
解答:
首先需要明确这两个概念从手段上都是通过遏制发送方,但使用它们其实是出于不同的目的。
流量控制应用在如下场景:
一条TCP连接的双方主机都为该连接设置了接收缓存。当该TCP连接收到正确按序的字节后,它就将数据放入接收缓存。相关联的应用进程会从该缓存中读取数据,但不一定是立即去读数据,可能现在接收方应用正在忙于其他的服务。那么如果应用程序读取数据时相当缓慢,而发送方发送的数据太多,太快,那就可能导致接收方的缓存溢出。
由以上场景我们可知,其实TCP流量控制主要是一种速度匹配的机制,即为了匹配发送方的发送速率和接收方应用程序读取速率的,从而防止缓存的溢出。
而TCP流量的控制主要是通过让发送方维护一个接收窗口的变量来提供的,也就是说接收窗口告诉发送方,该接收方还有多少可用的缓存空间。(滑动窗口协议)
下面我们可以通过一个例子来看这一过程,图片取自《TCP/IP协议详解》
这个图的主要过程是bsdi主机运行服务器程序