TCP流量控制是避免网络拥塞,提升网络服务质量的重要方式。它对网络拥塞控制具有重要的作用。TCP流量控制为网络体系结构及协议的设计、性能分析提供了较为重要的衡量依据,而这些研究领域也丰富并拓展了网络服务质量、网络拥塞控制的内涵与外延。
关于TCP流量控制,大量的研究集中在TCP协议的改进上。在TCP最初的版本中,使用回退n帧技术,即当发生报文丢失时,只有等到发送方重传时钟超时,才会按照顺序重传所有未被确认的帧。Tahoe在TCP早期版本的基础上增加了新的拥塞控制算法,包括慢启动、拥塞避免和快速重传。Reno继承了Tahoe所做的改进,并在快速重传操作中增加了快速回复算法。NewReno对Reno中的快速恢复算法进行了补充,它考虑了一个发送窗口内多个报文丢失的情况。SACK对Reno中的拥塞控制机制进行了保守的扩展:它沿用了Reno中的算法来调整拥塞窗口的大小,仅对其他算法做了微调。
该领域代表性人物包括:V.瑟夫(Vint Cerf,美国,1943-06~ ),他是互联网之父、图灵奖获得者;R.E.卡恩(Robert E.Kahn,美国,1938-12~ ),他是TCP/IP协议合作发明者、图灵奖获得者。
TCP流量控制是通过TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。
为解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。