《TCP是怎样工作的》

书中有三个作者,其中主要的作者安永辽真写的是主要部分(《第4章 程序员必学的拥塞控制算法》)。还有两章(《第5章 CUBIC算法》和《第六章 BBR算法)写的是现在比较流行的阻塞控制算法。所以书名应该叫《拥塞控制是怎样工作的》。

图3.8 窗口控制、流量控制和拥塞控制之间的关系
图4.3 拥塞控制算法的状态迁移图
图4.4 本书介绍的拥塞控制算法
图6.2 端到端时延的构成

初期的以太网在逻辑上是“总线式”结构。换句话说,多台计算机是连接在同一根同轴线缆上的。在这种情况下,由任意一台终端设备发送出的数据可以被所有连接在这个网络上的计算机接收。也就是说,这个网络从原理上就无法进行一对一通信,所有的通信都是广播式的。
然后,所有已连接的设备共享同一个通信介质,一旦多台终端设备同时发送数据,就会发生信号冲突,导致数据丢失。发生冲突的范围称为冲突域(collision domain)。因此,当有多台终端想要发送数据时,需要按顺序来发送。实现这一功能的就是 CSMA/CD ( Carrier Sense Multiple Accesswith Collision Detection,带有冲突检测的载波侦听多路访问),这项技术也被认为是以太网的代表名片。

1984年的 Congestion Control in IP/TCP Internetworks(IP/TCP 互联网上的拥塞控制,RFC 896)中提出了 Nagle 算法,其目的是减少 TCPIP网络上待发送数据包的数量。可以肯定地说,Nagle 算法是一切为了防止TCP/P 网络出现拥塞崩溃而进行的拥塞控制相关技术的“鼻祖”。

介绍几个基本的拥塞控制算法,它们的思路是通过灵活运用以下几种算法,对拥塞窗口大小 cwnd 进行控制。
• 慢启动
• 拥塞避免
• 快速恢复

当出现以下两种情形时,便可以认为TCP报文段丢失了。
•重传计时器超时
• 收到多个重复的ACK

从通信数据包发送到接收为止的端到端的时延,主要由以下三部分组成:因链路上的交换机和路由器进行数据包处理而产生的处理时延(processing delay);因在链路上各个节点的队列中等待传输而产生的队列时延(queuing delay);从信号发送节点到目的地节点所需要的物理上的传播时延(propagation delay )。

在三大时延中,处理时延和队列时延可以通过提高通信节点的性能实现进一步的优化,而传播时延则只取决于传输距离。
因此,超远程节点间的通信往往无法忽视物理特性所导致的传播时延。例如,横跨太平洋的海底光缆,其传播时延超过50 ms。
此类宽带、高时延的通信环境就被称长肥管道。

在发生丢包之前,缓慢地增大拥塞窗口大小(additive increase,加法增大),拥塞发生之后,大幅減小拥塞窗口大小(multiplicative decrease,乘法减小),这便是 AIMD 控制算法。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注