滑动窗口协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组(IP数据包或TCP报文段)就停下来等待确认,因此该协议可以加速数据的传输,增大了吞吐量。并且该协议可以控制流量,下面讲解。
停止等待协议是最简单但也是最基础的数据链路层协议。与滑动窗口协议不同的是停止等待协议就是每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。当发送窗口和接收窗口的大小都等于 1时,就是停止等待协议。
TCP流量控制(滑动窗口)
TCP在IP不可靠服务的基础上建立了可靠的数据传输服务。TCP的可靠数据传输服务确保进程从接收缓冲区中读出的数据流是正确地,有序的,不重复的,即读出的字节流与连接的另一方系统发送的字节流是完全一样的,但是实际上接收方应用进程不一定时刻都在读数据,那么如果应用进程读取数据相当慢,而发送方发送的数据太多、太快,就很容易使接收方的接收缓冲区溢出。所以TCP采用大小可变的滑动窗口给应用程序提供流量控制服务,用以消除接收缓冲区溢出的可能。实际上TCP报文段头部的16位窗口字段写入的数值就是接收方当前给对方设置的发送窗口的上限,发送窗口在连接建立时由双方商定,但是在通信过程中,接收方根据自己的接收缓冲区资源大小随时动态的调整对方发送窗口的上限(滑动窗口即可以滑动滴)。
即流量控制(用滑动窗口实现)就是让发送方的发送速率不要太快,要让接收方来得及接收
我们知道TCP连接发送方发送一个数据报,对端会进行确认在发送下一个数据包。
举个例子:TCP通信是全双工的,这里为了方便理解,就以一个方向为