【计算机网络】【运输层-5】
小白笔记
TCP拥塞控制(TCP是典型的端到端的拥塞控制)
TCP所采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。如果一个TCP发送方感知从它到目的地之间的路径没什么拥塞,则TCP发送方增加其发送速率,如果感知有拥塞则降低其发送速率。
但是这种方法提出了三个问题。第一,一个TCP发送方如何限制它向其连接发送流量的速率呢?第二,一个TCP发送方如何感知从它到目的地之间的路径上存在拥塞呢?第三,当发送方感知到端到端的拥塞时,采用何种算法来改变其发送速率呢?
TCP拥塞控制:机制
·端到端的拥塞控制机制
·路由器不向主机有关拥塞的反馈信息
·路由器的负担较轻
·符合网络核心简单的TCP/IP架构原则
·端系统根据自身得到的信息,判断是否发生拥塞,从而采取动作
拥塞控制的几个问题:
·任何检测拥塞: ·轻微拥塞 ·拥塞
·控制策略
·在拥塞发送时如何动作,降低速率
·轻微拥塞,如何降低
·拥塞时,如何降低
·在拥塞环节时如何动作,增加速率
1.TCP拥塞控制:拥塞感知
发送端如何探测到拥塞?要么出现超时,要么收到来自接收方的3个冗余ACK。
1)某个端超时了(丢失事件):拥塞
·超时时间到,某个段的确认没有来
·原因1:原理拥塞(某个路由器缓冲区没空间了,被丢弃)概率小
·原因2:出错被丢弃了(各级错误,没有通过校验,被丢弃)概率小
·一旦超时,就认为拥塞了,有一定误判,但是总体控制方向是对的
2)有关某个段的3次重复ACK:轻微拥塞
·段的第1个ack,正常,确认绿段,期待红段
·段的第2个重复ack,意味这红缎的后一段收到了,蓝段乱序到达
·段的第2,3,4个ack重复,意味着红段的后第2,3,4个段收到了,橙段乱序到达,同时红段丢失的可能性很大(后面3个段都收到了,红段都还没到)
·网络这时还能够进行一定程度的传输,拥塞但全款要比第一种好
2.TCP拥塞控制:速率控制方法 如何控制发送端发送的速率?
TCP连接的每一端都是由一个接收缓存、一个发送缓存和几个变量组成。运行在发送方的TCP拥塞控制机制跟踪一个额外的变量,即拥塞窗口。拥塞窗口表示为cwnd,它对一个TCP发送方能向网络中发送流量的速率进行了限制。特别是,在一个发送方中未被确认的数据量不会超过cwnd(拥塞窗口)与rwnd(接收缓存中的空闲空间)中的最小值。
·维持一个拥塞窗口的值:CongWin
·CongWin是动态的,是感知到的网络拥塞程度的函数
·超时或者3个重复ACK,CongWin减少
·超时时:CongWin降为1MSS,进入SS阶段然后再倍增到CongWin/2(每个RTT),从而进入CA阶段
·3个重复ack:CongWin降为CongWin/2,CA阶段
·否则(正常收到ack,没有发送以上情况):CongWin跃跃欲试增加
·SS阶段:加倍增加(每个RTT)
·CA阶段:线性增加(每个RTT)
·发送端限制已发送但是未确认的数据量(的上限):LastBytesent-LastByteAcked<=CongWin
·从而粗略地控制发送方往网络中注入的速率
联合控制的方法:
·发送端控制发送但是未确认的量同时也不能够超过接收窗口,满足流量控制要求
·SendWin=min(CongWin,RecvWin)即拥塞窗口、缓冲区空闲尺寸两者的最小值
·同时满足拥塞控制和流量控制要求
3.用什么算法来改变发送速率呢?用TCP拥塞控制算法
该算法包括3个主要部分:1)慢启动 2)拥塞避免 3—)快速恢复。慢启动和拥塞避免时TCP的强制部分,两者的差异在于对收到的ACK做出反应时增加cwnd长度的方式,慢启动比拥塞避免能更快第增加cwnd的长度(不要被名称所迷惑!)
拥塞控制策略:
·慢启动
·AIMD:线性增,乘性减少
·超时时间后的保守策略
TCP慢启动:
在慢启动状态,cwnd的值以1个MSS开始并且每当传输的报文段首次被确认就增加1个MSS。如图,TCP向网络发送第一个报文段并等待一个确认。当该确认到达时,TCP发送方将拥塞窗口增加一个MSS,并发送出两个最大长度的报文段。这两个报文段被确认,则发送方对每个确认报文将拥塞窗口增加一个MSS,使得拥塞窗口变为4个MSS,并这样下去。这一过程每过一个RTT(往返时间),发送速率就翻番。一次,TCP发送速率起始慢,但是慢启动阶段以指数增长。
·连接建立,CongWin=1MSS(·如MSS=1460bytes&RTT=200mesc 则初始速率=58.4kbps)
·可用带宽可能>>MSS/RTT(应该尽快加速,到达希望的速率)
·当连接开始时,指数型增加发送速率,知道发送丢失事件
·启动初值很低
·但是速度很快
·当连接开始时,指数性增加(每个RTT)发送速率直到发送丢失事件
·每个RTT,CongWin加倍
·每收到一个ACK时,CongWin加1(why)
·慢启动阶段:只要不超时或3个重复ack,一个RTT,CongWin加倍
·总结:初始速率很慢,但是加速却是指数性的
·指数增加,SS(慢启动)时间很短,长期来看可以忽略
然后一定会堵塞,怎么办?改进:
什么时候应该将指数性增长变成线性?
·在超时之前,当CongWin变成上次发生超时的窗口的一半
实现:
·变量:Threshold
·出现丢失,Threshold设置成CongWin的1/2
TCP拥塞控制:AIMD
乘性减:
丢失事件后将CongWin将为1,将CongWin/2作为阈值,进入慢启动阶段(倍增直到CongWin/2)
加性增:
当CongWin>阈值时,一个RTT如没有发生丢失事件,将CongWin加1MSS:探测
拥塞避免:
一旦进入拥塞避免状态,cwnd的值大约是上次遇到拥塞时的值的一半,即距离拥塞可能并不遥远!因此,TCP无法每过一个RTT在将cwnd的值翻番,而是采用了一种较为保守的方法,每个RTT只将cwnd的值增加一个MSS,而不是MSS翻倍。
但是何时应当结束拥塞避免的线性增长(每RTT 1MSS)呢?与慢启动一样,cwnd的值被设置为1个MSS,当丢包事件出现时,ssthresh的值被更新为cwnd值的一半。接下来进入快速恢复状态。
快速恢复:
在快速恢复中,对于引起TCP进入快速恢复状态的确实报文段,对收到每个冗余的ACK,cwnd的值增加一个MSS。最终,当对丢失报文的一个ACK到达时,TCP在降低cwnd后进入拥塞避免状态。如果出现超时事件,快速恢复在执行如同在慢启动和拥塞避免中相同的动作后,迁移到慢启动状态,当丢包事件出现时,cwnd的值被设置为1个MSS,并且ssthresh的值设置为cwnd值的一半。
总结:TCP拥塞控制
·当Conwin<Threshold,发送端处于慢启动阶段(SS),窗口指数性增长
·当Congwin>Threshold,发送端处于拥塞避免阶段(CA),窗口线性增长
·当收到三个重复的ACKs,Threshold设置成Congwin/2,Congwin=Threshold+3
·当超时事件发生时timeout,Threshold=Congwin/2Congwin=1MSS,进入SS阶段
【计算机网络】【运输层-5】相关推荐
- 计算机网络——运输层
文章目录 协议体系结构 运输层概述 运输层的两个协议 UDP UDP协议特点 UDP首部格式 TCP TCP协议特点 传输控制协议TCP概述 停止等待协议 连续ARQ协议 TCP首部格式 TCP可靠传 ...
- 计算机网络-运输层(UDP/TCP协议)
文章目录 前言 一.计算机网络 二.运输层 1.复用和分用 2.UDP 3.TCP Ⅰ- TCP的灵魂拷问 - TCP 和 UDP 的区别 Ⅱ - TCP的灵魂拷问 - 三次握手 Ⅲ - TCP的灵魂 ...
- 计算机网络——运输层协议
目录 1. 运输层协议概述 1.1 运输层功能 1.2 运输层的两个主要协议 1.3 端口号 2. 用户数据报协议UDP 2.1 特点 2.2 UDP的首部格式 3. 传输控制协议TCP 3.1 TC ...
- 计算机网络 运输层 TCP协议
运输层 课程笔记 图源谢希仁版计算机网络教材 2022-3-29 1. 运输层的功能 网络通信实际上是进程之间的通信,网络数据通过网络层发送到目标的主机后,需要准确发送到目标程序.因为通信是由程序请求 ...
- 计算机网络——运输层(来看看,你不会后悔的)
文章目录 一.运输层简介 1.复用和分用 2.因特网的运输层协议 二.UDP 2.1 用户数据报协议(UDP) 三.TCP 3.1 传输控制协议(TCP)简介 3.2 TCP连接管理 3.2.1 建立 ...
- 计算机网络——运输层(TCP、UDP)
目录 一.概述: 1.运输层和应用层的关系: 2.因特网运输层的概述: 3.运输层提供的服务: 3.1 UDP: 3.2 TCP: 4.多路复用和多路分解: 4.1无连接的多路复用和多路分解: 4 ...
- 计算机网络运输层之多路复用与多路分解
原文: http://blog.csdn.net/ljianhui/article/details/21660629 ----------------------------------------- ...
- 计算机网络运输层习题5-13
计算机网络(第七版) 谢希仁编著 5-13 一个UDP用户数据报的数据字段为8192字节.在链路层要使用以太网来传送.试问应当划分为几个IP数据报片?说明每一个IP数据报片的数据字段长度和片偏移字段的 ...
- 计算机网络运输层的概述,计算机网络_运输层
运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层. 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的 ...
- 计算机网络运输层知识点,计算机网络复习——Ch6传输层
传输层 知识点 1. UDP协议:无连接.不可靠.提供复用和分用功能 2. 端口的概念:熟知端口的范围0-1023 端口的概念 端口 两类端口 3. TCP报文段格式 4. TCP可变窗口的实现:报文 ...
最新文章
- 微软Win8将有多个版本 四款面向ARM平台
- 2021-02-28 LQG控制的主动悬架1/2车垂向动力学模型
- Java黑皮书课后题第2章:2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数
- S/4HANA服务订单Service Order的批量创建
- Vivado中RTL封装IP流程
- nginx部署,nuxt静态部署,路由跳转失效的问题
- was环境访问https_Go语言笔记|02-开发环境搭建
- 成员函数的重载,覆盖与隐藏
- 文件的操作,如何做文件上传
- 【渝粤教育】电大中专公共基础课程 (2)作业 题库
- 全卷机神经网络图像分割(U-net)-keras实现
- 计算机导论第4版第五章答案,《计算机导论》习题答案.doc
- Error LNK2005 DllMain already defined in dllmain.obj
- 加速度传感器灵敏度表示的几种方式LSB/g,count/g,V/g,V/°
- 建立PCI网卡无盘工作站自动上网(转)
- SATA串口硬盘设置、分区及安装
- 大数据Topic推荐-AMiner
- 我的世界java边境之地_我的世界边境之地是否存在 我的世界边境之地大揭秘
- 远程连接linux虚拟机和破解虚拟机密码
- 同比、环比、YTD、MTD
热门文章
- 基于R语言的DICE(Dynamic Integrated Model of Climate and Economy)模型
- 方舟服务器掉线就无响应,方舟老是服务器掉线 | 手游网游页游攻略大全
- Vue.$nextTick你真的懂了吗?
- 小程序 wx:for 循环动态变量
- Sitecore 8 基础I - 获取Sitecore license并安装Sitecore
- 偏序集-Dilworth定理
- Android 布局平分间距
- 人工智能行业就业前景怎么样?真实薪资待遇如何?
- 百视通进军影视产业链上游 谋求版权突破
- 微众银行开源联盟链可信预言机Truora,搭建数据可信上链桥梁