引言

  计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。
  拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。

TCP拥塞控制算法

  该算法包括三个主要部分:(1)加性增、乘性减 (2)慢启动 (3)对超时事件做出反应

1.加性增、乘性减

加性增: 如没有检测到丢包事件,每个RTT时间拥塞窗口值增加一个MSS (最大报文段长度)。
乘性减: 丢包事件后,拥塞窗口值减半。

  CongWin值重复地经历一种升降循环,即重复的线性增长,然后又突然降至当前值懂得一半(当丢包事件发生时),这种循环,使得长寿命TCP连接的CongWin变化呈锯齿形状,如下图所示:

2.慢启动

  在连接开始时, 拥塞窗口值 = 1 MSS(例如: MSS= 500 bytes & RTT = 200 msec,则初始化速率 = 20 kbps)。但可获得带宽可能 >> MSS/RTT,为了尽快达到期待的速率,我们可以在连接开始的时候,以指数级的速率增加,直到第一个丢失事件发生。

  上图所示,当连接开始的时候,速率呈指数式上升,直到第1次报文丢失事件发生为止:(1)每经过一个RTT,倍增拥塞窗口值;(2)每收到ACK,增加拥塞窗口。
  总结: 初始速率很低,但以指数级的速率增加

3.对超时事件作出反应

  在上述对拥塞窗口的描述中,我们只是说在连接开始的时候,以指数级的速率增加,直到第一个丢失事件发生。但实际中TCP对因超时而检测到的丢包事件作出的反应与对因收到3个冗余ACK而检测到的丢包事件做出的反应是不同的。

  ·收到3个冗余ACK后:CongWin减半、窗口再线性增加。
  ·检测超时事件后:CongWin值设置为1MSS、窗口再指数增长、到达一个阈值(Threshold,初始化时被设置为一个很大的值,以使它没有初始效应。每发生一个丢包事件,Threshold就会被设置为当前CongWin值的一半)后,再线性增长。

  原因:3个冗余ACK指示网络还具有某些传送报文段的能力;3个冗余ACK以前的超时,则更为 “严重”。

小结:

·当CongWin < Threshold时,发送者处于慢启动阶段, CongWin指数增长。

·当CongWin > Threshold时,发送者处于拥塞避免阶段, CongWin线性增长。

·当出现3个冗余确认时, 阈值Threshold设置为CongWin/2,且CongWin设置为Threshold。

·当超时发生时,阈值Threshold设置为CongWin/2,并且CongWin设置为1 MSS.

[计算机网络] TCP的拥塞控制的更多相关文章

  1. 计算机网络(10)-----TCP的拥塞控制

    TCP的拥塞控制 拥塞(congestion) 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏. 拥塞控制 拥塞控制就是防止过多的数据注入到网络中,这样可以使网 ...

  2. TCP网络拥塞控制

    拥塞控制过程 数据吞吐量 TCP窗口大小,窗口流量控制,慢启动对TCP的成块数据传输综合作用,可能对TCP的数据传输有意想不到的影响. RTT(Round-Trip Time) :往返时间.是指一个报 ...

  3. TCP/IP拥塞控制

    TCP/IP拥塞控制包括:慢启动和拥塞避免.其操作流程如下所述: 初始化.拥塞窗口cwnd = 1,慢启动门限ssthresh = 65535 如果没有发生拥塞 若 cwnd < ssthres ...

  4. [计算机网络]TCP/IP协议-运输层

    TCP/IP体系结构 TCP/IP四层协议 五层协议 协议 作用 应用层 应用层 HTTP超文本传输协议.FTP文件传输协议 - 运输层 运输层 TCP(面向连接的,可靠的).UDP(无连接的,不保证 ...

  5. 计算机网络-TCP篇

    TCP篇 之前的总结文章:TCP简单版本介绍-三次握手等 基本认识 TCP 是⾯向连接的(⼀定是「⼀对⼀」才能连接).可靠的.基于字节流的传输层通信协议. RFC 793 是如何定义「连接」的:⽤于保 ...

  6. TCP的拥塞控制

    1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...

  7. TCP的拥塞控制(转载)

    1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...

  8. [转]TCP的拥塞控制

    1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...

  9. 计算机网络——TCP与UDP协议详解

    根据应用程序的不同需求,运输层需要两种不同的运输协议,即面向连接的TCP和无连接的UDP. TCP:传输控制协议 TCP特点: 1)TCP是面向连接的运输层协议.所以,应用程序在使用TCP协议之前,必 ...

随机推荐

  1. Java8 Comparator 排序方法

    Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用 对整数列表排序(升序) List<Integer> list = Ar ...

  2. MVC保存二进制到数据库,并显示文件的方法(图片显示)

    通过两篇文章解决了数据库存储图片并显示到View的方法: http://blog.sina.com.cn/s/blog_6da396a50101639u.htmlhttp://www.cnblogs. ...

  3. 【Keras案例学习】 CNN做手写字符分类(mnist_cnn )

    from __future__ import print_function import numpy as np np.random.seed(1337) from keras.datasets im ...

  4. MySQL日期比较

    假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: select * from product where add_time = '2013-0 ...

  5. QT 标题栏隐藏可拖拽

    这个也是我网上找到了 为了方便,记录一下 void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void ...

  6. 感觉总结了一切python常见知识点,可直接运行版本

    #encoding=utf-8#http://python.jobbole.com/85231/#作用域a=1def A(a): a=2 print 'A:',a def B(): print 'B: ...

  7. 第三十九篇 Python异常处理

    一. 什么是异常 异常就是程序运行时发生的错误,在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止,在python中,错误触发的异常如下 错误分成两种: #语法 ...

  8. POSTMan 快速上手(一图带你玩 Postman )

    POSTMan 快速上手(一图带你玩 Postman ):

  9. Linux命令应用大词典-第34章 打印与传真

    34.1 lpr:打印文件 34.2 lpq:显示打印队列状态 34.3 lprm:取消打印作业 34.4 lpstat:显示cups状态信息 34.5 cupsaccept:接受作业发送到目的地 3 ...

  10. 孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境

    孤荷凌寒自学python第八十三天初次接触ocr配置tesseract环境 (完整学习过程屏幕记录视频地址在文末) 学习Python我肯定不会错过图片文字的识别,当然更重要的是简单的验证码识别了,今天 ...