一、TCP拥塞控制概述
  • 接下来几篇文章将探讨TCP实现拥塞控制的方法,这也是批量数据传输中最重要的。拥塞控制是TCP通信的每一方需要执行的一系列行为。这些行为由特定算法规定,用于防止网络因为大规模的通信负载而瘫痪
    • 基本方法是当有理由认为网络即将进入拥塞状态(或者已经由于拥塞而出现路由器丢包情况)时减缓TCP传输
    • TCP拥塞控制的难点在于怎样准确地判断何时需要减缓且如何减缓TCP传输,以及何时恢复其原有的速度
  • TCP是提供系统间数据可靠传输服务的协议。前面流量控制文章中已经提到,当TCP通信的接收方的接收速度无法匹配发送速度时,发送方会降低发送速度。TCP的流量控制机制完成了对发送速率的调节,它是基于ACK数据包中的“通告窗口大小字段来实现的。这种方式提供了明确的接收方返回的状态信息,避免接收方缓存溢出
  • 当网络中大量的发送方和接收方被要求承担超负荷的通信任务时,可以考虑采取降低发送速率或者最终丢弃部分数据(也可将两者结合使用)的方法。这是将排队理论应用于路由器的基本观测结果:即使路由器能够存储一些数据,但若源源不断的数据到达速率高于发出 速率,任何容量的中间存储都会溢出。简言之,当某一路由器在单位时间内接收到的数据量多于其可发送的数据量时,它就需要把多余的部分存储起来。假如这种状况持续,最终存储资源将会耗尽,路由器因此只能丢弃部分数据
  • 路由器因无法处理高速率到达的流量而被迫丢弃数据信息的现象称为“拥塞”。当路由器处于上述状态时,我们就说出现了拥塞。即使仅有一条通信连接,也可能造成一个甚至多个路由器拥塞。若不采取对策,网络性能将大受影响以致瘫痪。在最坏情况下,甚至形成拥塞崩溃。为避免或者在一定程度上缓解这种状况,TCP通信的每一方实行拥塞控制机制。不同的TCP版本(包括运行TCP/IP协议栈的操作系统)采取的规程和行为有所差异。本章将着重讨论最常用的方法
二、TCP拥塞检测
  • 如前所述,针对丢包情况,TCP采取的首要机制是重传,包括“超时重传”和“快速重传”。考虑如下情形,当网络处于拥塞崩溃状态时,共用一条网络传输路径的多个TCP连接却需要重传更多的数据包。这就好比火上浇油,可想而知,结果只会更糟,所以这种情况应该尽量避免
  • 当拥塞状况出现(或将要出现)时,我们可以减缓TCP发送端的发送速率;若拥塞情况有所缓解,可以检测和使用新的可用带宽。然而这在互联网中却很难做到,因为对于TCP发送方来说,没有一个精确的方法去知晓中间路由器的状态。换言之,没有一个明确的信号告知拥塞状况已发生

TCP拥塞检测的方法

  • 典型的TCP只有在断定拥塞发生的情况下,才会采取相应的行动推断是否出现拥塞,通常看是否有丢包情况发生。在TCP中,丢包也被用作判断拥塞发生与否的指标,用来衡量是否实施相应的响应措施(即以某种方式减缓发送)。从20世纪80年代起,TCP就一直沿用这种方法
  • 其他拥塞探测方法,包括时延测量和显式拥塞通知(ECN,后面会介绍),使得TCP能在丢包发生前检测拥塞。在学习一些“经典”算法后,我们将讨论上述探测方法

TCP/IP卷一:84---TCP拥塞控制之(TCP拥塞控制概述、TCP拥塞的检测)_数据