TCP 的拥塞控制
Key_Copyright
一直以来都是看 《 TCP/IP 协议》这本书来理解 TCP 的一些概念,但发现讲解的不是很清晰(或者是翻译质量的问题)。最近读Tanenbaum 的 《计算机网络第4版》,惊喜的发现这本书对 TCP 的一些概念做了非常清晰易懂的讲解,心头的一些疑问得到了解答。现整理一下我的理解,以加深记忆。
拥塞:当一个网络面对的负载超过了它的处理能力时,拥塞就会发生
针对拥塞的真正解决方案是减慢数据发送速率
当发生拥塞的时候,意味着网络中某些点的处理能力已经饱和,因此要求发送方减慢发送速率
检测拥塞:
管理拥塞的第一步是检测拥塞
由于分组丢失而引起的超时有两种情况:
1)传输线路上有噪声;
2)在一台拥塞的路由器上分组丢失;
对于现在的有线网络来说,绝大多数传输超时是由于第二种情况也就是拥塞引起的;
因此,所有的 TCP 算法都假定超时是由于拥塞引起的,并且通过监视超时的情况来判断是否出现问题。
TCP 的拥塞处理策略:
1)、拥塞窗口
发送方维护一个拥塞窗口,它是“发送方认为没有问题的窗口”,只要发送的字节数小于这个窗口,拥塞就不会发生;
发送方还维护着另一个窗口是“接收方准许的窗口”,它是由接收方通知给发送方的,反映了接收方的处理能力。
因此,有效窗口是这两个窗口的较小值
当连接被建立后,拥塞窗口被设置为此连接上当前使用的最大数据段长度
2)、慢启动算法
3)、阈值
阈值初始值为 64K
一次超时发生后,
1) 阈值被设置为当前拥塞窗口的一半;
2) 拥塞窗口被重新设置为一个最大数据段;
3) 重新进行慢启动算法;
4) 当拥塞窗口增长到阈值后停止;
5) 此后,每一次成功的传输都会使拥塞窗口线性增长(即每次仅增长一个最大数据段);
6) 在不发生超时情况下,拥塞窗口持续增长,直到到达接收方窗口的大小为止。