拥塞控制算法:1. 加性增、乘性减;2. 慢启动;3. 对超时事件作出反应;

整体过程如下:

慢启动->到达阈值->加性增(窗口+1个MSS), 这个阶段叫拥塞避免(CA)->3个冗余ack丢包(事件)->阈值和窗口都缩小为一半(乘性减), 然后加性增(CA)->快速重传,并等待确认,这个阶段叫快速恢复,如果没有确认,就当作超时事件处理了;

                   ->超时(事件)->快速重传->tcp会重新回为原始状态,进入慢启动;

在发生丢包和超时时,tcp都会执行快速重传;

当TCP接收方收到一个具有大于下一个所期望的、按序的序号的报文段时,它检测到了数据流中的一个间隔,即有报文段丢失。它将发送一个冗余的ACK,进行重复确认;如果TCP发送方接收到相同数据的3个冗余ACK,它就认为跟在这个已被确认过3次的报文段之后的报文段已经丢失。

例子(盗图):

假定最大窗口是32个段,阈值时16个段(最大窗口的一半),在慢速启动阶段,窗口大小从1开始按指数规律增加知道它达到阈值。
当达到阈值后,拥塞避免(加性增加)过程允许窗口大小线性增长知道计时器到达或达到最大窗口的大小。
在途中,当窗口为20时,计时器到达。此时。进入乘性减少过程,将阈值设置为当前窗口的大小的一半,当计时器达到时,当前窗口大小为10,因此现在的阈值为10。
TCP再次进入慢速启动,并设置窗口的大小为1,当达到新阈值(10)时,TCP进入加性增加阶段。
当窗口大小为12时,3个ACK事件发生,再次进入乘性减少过程,阈值设置为6,这时TCP进入加性增加阶段,该阶段一直维持到另一个计时器到时或者另外3个ACK事件发生为止。

Network | TCP congestion control的更多相关文章

  1. TCP Congestion Control

    TCP Congestion Control Congestion occurs when total arrival rate from all packet flows exceeds R ove ...

  2. Network | TCP

    Transmission Control Protocol, TCP是一种面向连接的.可靠的.基于字节流的传输层通信协议. 应用层向TCP层发送用于网间传输的.用8位字节表示的数据流,然后TCP把数据 ...

  3. TCP Flow Control and Data Transfer

    TCP Flow Control TCP Data Transfer Selective Repeat ARQ with Positive ACK Window slides a byte basis ...

  4. Google Congestion Control介绍

    随着网络带宽的日益增加和便携式设备,如智能手机或平板电脑处理能力的增强,基于互联网的实时通信已经成为热点. 虽然视频会议已商用了多年,特别是SKYPE这样的视频应用在互联网上已有10年时间,但针对实时 ...

  5. Optimizing Linux network TCP/IP kernel parameters

    You can verify the Linux networking kernel parms from the root user with these commands::Many Oracle ...

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

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

  7. java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP

    无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...

  8. Congestion Avoidance in TCP

    Congestion Avoidance in TCP Consequence of lack of congestion control When a popular resource is sha ...

  9. Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)

    Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...

随机推荐

  1. 【贪心】最大乘积-贪心-高精度-java

    问题 G: [贪心]最大乘积 时间限制: 1 Sec  内存限制: 128 MB提交: 34  解决: 10[提交][状态][讨论版] 题目描述  一个正整数一般可以分为几个互不相同的自然数的和,如3 ...

  2. byte[]和InputStream的相互转换[转载]

    1:byte[]转换为InputStream InputStream sbs = new ByteArrayInputStream(byte[] buf); 2:InputStream转换为Input ...

  3. “破锣摇滚”乐队(codevs 1444)

    题目描述 Description 你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权.你打算从中精选一些歌曲,发行M(1 <= M <= ...

  4. 二进制日志BINARY LOG清理

    mysql> show master logs; +------------------+-----------+ | Log_name | File_size | +------------- ...

  5. js之事件冒泡和事件捕获介绍

    链接:http://www.jb51.net/article/42492.htm (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. (2)捕获型事件 ...

  6. 标准C实现基于TCP/IP协议的文件传输

    上学期集成程序设计的课堂作业,对于理解TCP/IP实现还是挺有帮助的. TCP/IP编程实现远程文件传输在LUNIX中一般都采用套接字(socket)系统调用. 采用客户/服务器模式,其程序编写步骤如 ...

  7. Android 系统默认参数的修改

    转自: http://www.th7.cn/Program/Android/201505/447097.shtml 写在前面的话 一般在新项目开始之初,我们需要针对客户需求进行各种系统默认属性的配置, ...

  8. Ubuntu could not write bytes broken pipe

    一.环境变量问题 1 到登录界面的时候,进入命令行模式: alt+ctrl+F1 2 登录 3 修改环境变量(当我输入ls的时候  竟然没有找到命令,然后果断的知道是环境变量的事情,于是改之!) 4 ...

  9. JS图片延迟加载分析及简单的demo

    JS图片延迟加载 图片延迟加载也称 "懒加载",通常应用于图片比较多的网页,比如 "美丽说首页","蘑菇街"等一些导购网站上用的比较多,或者 ...

  10. Java Hour 15 以写小说的心态

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 突然想到我最近一直在追的小说,作者每天都会更新两章,而且质量挺高.所以从这篇开 ...