滑动窗口机制是TCP协议提高数据流传输效率的重要保证。
首先我们来看普通的确认传输机制对信道利用率的影响。为了保证可靠性,发送方在发送一个分组之后,需要等待对应的确认信息接收后才能发送下一个分组。这样,尽管网络具有同时进行双向通信的能力,但在一段时间内,数据只能在站点之间单向的传输。由于处理时延(如计算路由和校验和检测),时延期间网络传输信道处于空闲状态,因此,整个网络信道的利用率不高。
引入滑动窗口机制后,发送数据一方可以在一定条件下连续发送若干个分组,而不必每次发送都要在前一个分组的确认信息收到后进行。
滑动窗口的工作原理可以通过以下动画来演示:
滑动窗口协议的效率与滑动窗口的大小和网络接收分组的速度有关。如窗口的大小等于1,则滑动窗口协议就退化为简单的肯定确认协议。如果增加窗口大小,就可以减少,甚至消除网络的空闲状态。当然,分组发送的速度应当与网络传输分组的能力相匹配。因此,如果网络中的分组处于饱和状态,就能够获得最高的分组吞吐率。
滑动窗口的另外一个功能是进行流量控制,TCP的流量控制机制在TCP流量控制一节中介绍。
接收端窗口和拥塞窗口区别:
接收端窗口:这是接收端根据其目前的接受缓存大小所许诺的最新窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。接收端窗口又称为通知窗口(advertised window)。
拥塞窗口:这是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。