Page 34 - Web性能权威指南
P. 34

2.2 拥塞预防及控制


               1984 年初,John  Nagle 提到了一个被称为“拥塞崩溃”的现象,这个现象会影响节
               点间带宽容量不对称的任何网络:

                   拥塞控制是复杂网络中众所周知的一个问题。我们发现国防部的 Internet
                   Protocol(IP) —— 纯 粹 的 数 据 报 协 议, 和 Transmission Control Protocol
                  (TCP)——传输层协议,在一块使用时,由于传输层与数据报层之间的交互,
                   会导致一些不常见的拥塞问题。特别是 IP 网关容易受到我们称为“拥塞崩溃”
                   现象的严重影响,尤其是在这种网关连接不同带宽的网络时……
                   可能是往返时间超过了所有主机的最大中断间隔,于是相应的主机会在网络
                   中制造越来越多的数据报副本,使得整个网络陷入瘫痪。最终,所有交换节
                   点的缓冲区都将被填满,多出来的分组必须删掉。目前的分组往返时间已经
                   设定为最大值。主机会把每个分组都发送好几次,结果每个分组的某个副本
                   会抵达目标。这就是拥塞崩溃。
                   这种情况永远存在。达到饱和状态时,只要选择被删除分组的算法适当,网
                   络就可以退而求其次地持续运行下去。
                                                               —— John Nagle - RFC 896

               这份报告的结论是拥塞崩溃不会对 ARPANET 造成影响,因为其大多数节点的带
               宽相同,而且其骨干网的容量相对大得多。然而,这两种情况没有持续太久。1986
               年,随着加入网络的节点数量(5000+)及类型日益增多,该网络中发生了一系列
               拥塞崩溃故障。个别情况下,容量下降为千分之一,网络完全瘫痪。

               为了解决这些问题,TCP 加入了很多机制,以便控制双向发送数据的速度,比如流
               量控制、拥塞控制和拥塞预防机制。


                          ARPANET(Advanced Research Projects Agency Network,高级研究计划局
                          网络)是现代互联网的前身,是世界上第一个实际运行的分组交换网络。这
                          个项目于 1959 年正式启动,1983 年 TCP/IP 作为主要通信协议取代了原来
                          的 NCP(Network Control Program)协议。后来呢,那大家就都知道了。


               2.2.1 流量控制

               流量控制是一种预防发送端过多向接收端发送数据的机制。否则,接收端可能因为
               忙碌、负载重或缓冲区既定而无法处理。为实现流量控制,TCP 连接的每一方都要
               通告(图 2-2)自己的接收窗口(rwnd),其中包含能够保存数据的缓冲区空间大小
               信息。



               16   |   第 2 章
   29   30   31   32   33   34   35   36   37   38   39