为了更好地对传输层进行拥塞控制,因特网建议标准定义了以下四种算法:慢启动、拥塞避免、快重传和快恢复。

1 接收窗口rwnd与拥塞窗口cwnd

  发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因为,TCP协议要求发送方维护以下两个窗口:

  (1)接收窗口rwnd:接收方向发送方告知的当前还能接收的数据容量,一般所说的窗口大小即rwnd;

  (2)拥塞窗口cwnd:发送方根据自己估算的网络拥塞程序而设置的窗口值,反映了网络的当前容量。

  发送窗口的上限应当取接收窗口rwnd和拥塞窗口cwnd中较小的一个。

2 慢启动与拥塞避免

  (1)慢启动

  做法:TCP连接刚建立,开始发送TCP报文段时,先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。而在每收到一个对新的报文段的确认后,将cwnd加1,即增大一个MSS。

  使用慢启动算法后,每经过一个RTT,拥塞窗口cwnd就会加倍,即cwnd的大小呈指数形式增长。这样慢启动算法一直把拥塞窗口cwnd增大到一个规定的慢启动门限ssthresh(阈值),然后改用拥塞避免算法。

  (2)拥塞避免

  做法:发送端的拥塞窗口cwnd每经过一个RTT就会增加一个MSS的大小,而不是加倍,使cwnd按线性规律缓慢增长,而当出现一次超时(网络拥塞)时,则令慢启动门限ssthresh等于当前cwnd的一半(但不能小于2),且此时拥塞窗口cwnd又变为1。

  可归纳如下:

  (1)当cwnd<ssthresh时,使用慢启动算法;

  (2)当cwnd>ssthresh时,停止使用慢启动算法而改用拥塞避免算法。

  (3)当cwnd=ssthresh时,既可以使用慢启动算法,也可使用拥塞避免算法(通常做法)。

3 快重传与快恢复

  快重传和快恢复算法是对慢启动和拥塞避免算法的改进。

  (1)快重传

  有两种事件会导致TCP对报文段进行重传:超时和冗余ACK。

  超时即超过了规定的时间没有收到接收端对于某报文段的ACK。

  快重传技术使用冗余ACK方法来实现对未收到的报文段的快速重传:当发送方连续收到三个重复的ACK报文时,表示该ACK对应的下一个报文段丢失,则不必等待那个报文段设置的重传计时器,直接重传该报文段。

  (2)快恢复

  原理:当发送端连接收到连续三个冗余ACK(即发生超时)时,就将慢启动门限ssthresh设置为出现拥塞时发送方cwnd的一半,与慢启动不同之处是它把cwnd的值设置为慢启动门限ssthresh改变后的数值,而不是1,然后开始执行拥塞避免算法。

  由于跳过了cwnd从1起始的慢启动过程,所以被称为快恢复。

TCP流量控制与拥塞控制的更多相关文章

  1. TCP/IP笔记 三.运输层(2)——TCP 流量控制与拥塞控制

    TCP 的流量控制与拥塞控制可以说是一体的.流量控制是通过滑动窗口实现的,拥塞避免主要包含以下2个内容: (1)慢开始,拥塞避免 (2)快重传,快恢复 1.流量控制——滑动窗口 TCP采用大小可变的滑 ...

  2. TCP - 流量控制 and 拥塞控制

      1. 流量控制 - Flow Control 序言:数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制以免数据丢失.利用滑动窗口机制可以很方便的在TCP连接上实现对发 ...

  3. TCP流量控制和拥塞控制

    TCP的流量控制      所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送 ...

  4. 面试之路(29)-TCP流量控制和拥塞控制-滑动窗口协议详解

    拥塞: 拥塞发生的主要原因在于网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间.链路带宽容量和中间节点的处理能力.由于互联网的设计机制导致其缺乏"接纳控制"能力,因此在 ...

  5. TCP 流量控制、拥塞控制

    流量控制: 流量控制是为了控制发送方发送速率,保证接收方来得接收. 接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率.将窗口字段设置为 0,则发送方不能发送数据. ...

  6. NetWork——TCP的流量控制和拥塞控制

    ,然后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大. 这里为什么替换掉了慢开始算法呢,这是因为收到重复的ACK不仅仅告诉我们一个分组丢失了,由于接收方只有在收到另一个报文段时才会产生重复的ACK,所 ...

  7. TCP的流量控制与拥塞控制小结

    概述 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认.其中TCP的流量控制与拥塞控制是 ...

  8. TCP基础知识(三)重传、流量控制、拥塞控制

    TCP详解(3):重传.流量控制.拥塞控制…… 数据传输 在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性.它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据:使用校 ...

  9. TCP的可靠传输(依赖流量控制、拥塞控制、连续ARQ)

    TCP可靠性表现在它向应用层提供的数据是无差错,有序,无丢失,即递交的和发送的数据是一样的. 可靠性依赖于流量控制.拥塞控制.连续ARQ等技术 <TCP/IP详解>中的“分组”是不是就是报 ...

随机推荐

  1. iOS_UIImage_毛玻璃效果

    效果图: 核心方法: // 出入UIImage 和 blur模糊成度 (0-1) - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CG ...

  2. Android-Universal-Image-Loader 图片异步加载类库的使用

    在博客中看到一篇利用组件进行图片异步加载的文章在此作记录 原文:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的 ...

  3. Android PopupWindow怎么合理控制弹出位置(showAtLocation)

    说到PopupWindow,应该都会有种熟悉的感觉,使用起来也很简单 // 一个自定义的布局,作为显示的内容 Context context = null; // 真实环境中要赋值 int layou ...

  4. 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

    本系列文章导航 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 一.摘要 本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得 ...

  5. The SQL Server Service Broker for the current database is not enabled

    把一个数据恢复至另一个服务器上,出现了一个异常: The SQL Server Service Broker for the current database is not enabled, and ...

  6. [WCF编程]9.性能与限流

    一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来 ...

  7. CSS之深入探究Position

    这些天重新整理以前的代码,想对其进行优化,却出现了很多问题,其中一个就是Position,中间自己停下优化代码的工作,特意停下来深入研究了一下Position.现在来分享一下自己的体会吧! 首先我们从 ...

  8. luogg_java学习_08_设计模式_API

    这篇博客总结了1天整,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 设计模式 在长期开发过程中,为了解决某些固定问题, 总结出的 ...

  9. Struts2基于注解的Action配置

    使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了. 要使用注解方式,我们必须添加一个额外包:struts2-convention-plu ...

  10. 关于依赖注入IOC/DI的感想

    之前一直不明白依赖注入有什么好处,甚至觉得它是鸡肋,现在想想,当时真是可笑. 这个想法正如同说接口是没有用处一样. 当整个项目非常庞大,各个方法之间的调用非常复杂,那么,可以想象一下,假设说没有任何的 ...