路由器因无法处理高速率到达的流量而被迫丢弃数据信息的现象称为拥塞。即使仅有一条通信连接,也可能造成一个甚至多个路由器拥塞,若不采取对策,网络性能将受到很大影响以致瘫痪(最坏情况下甚至形成拥塞崩溃)。为避免或在一定程度上缓解这种状况,TCP规定通信的每一方都要实行拥塞控制机制。
拥塞检测
针对丢包现象,TCP采取的首要措施是重传,包括超时重传和快速重传。但简单的重传有时候会带来更糟糕的结果。假设当网络处于拥塞崩溃状态时,共用一条网络传输路径的多个TCP连接却重传更多的数据,反而会火上浇油,让本就不堪重负的网络更加拥塞。
在TCP中,丢包被用作判断拥塞发生与否的指标,用来衡量是否应该实施相应的响应措施来避免或至少减缓拥塞。其他拥塞探测方法,如时延测量和显式拥塞通知(ECN)会使TCP能在丢包发生前检测拥塞。
调整窗口大小
TCP的可变滑动窗口机制可以帮助减缓数据的发送量,TCP头部设置了通知窗口大小字段。此外基于网络传输能力的估计,TCP还在发送端引入了一个窗口控制变量,确保发送窗口大小不超过接收端接收能力和网络传输能力,即TCP发送端的发送速率等于接收速率和传输速率中的较小者。
反映网络传输能力的变量