TCP流量控制与拥塞控制
为了更好地对传输层进行拥塞控制,因特网建议标准定义了以下四种算法:慢启动、拥塞避免、快重传和快恢复。
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流量控制与拥塞控制的更多相关文章
- TCP/IP笔记 三.运输层(2)——TCP 流量控制与拥塞控制
TCP 的流量控制与拥塞控制可以说是一体的.流量控制是通过滑动窗口实现的,拥塞避免主要包含以下2个内容: (1)慢开始,拥塞避免 (2)快重传,快恢复 1.流量控制——滑动窗口 TCP采用大小可变的滑 ...
- TCP - 流量控制 and 拥塞控制
1. 流量控制 - Flow Control 序言:数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制以免数据丢失.利用滑动窗口机制可以很方便的在TCP连接上实现对发 ...
- TCP流量控制和拥塞控制
TCP的流量控制 所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送 ...
- 面试之路(29)-TCP流量控制和拥塞控制-滑动窗口协议详解
拥塞: 拥塞发生的主要原因在于网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间.链路带宽容量和中间节点的处理能力.由于互联网的设计机制导致其缺乏"接纳控制"能力,因此在 ...
- TCP 流量控制、拥塞控制
流量控制: 流量控制是为了控制发送方发送速率,保证接收方来得接收. 接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率.将窗口字段设置为 0,则发送方不能发送数据. ...
- NetWork——TCP的流量控制和拥塞控制
,然后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大. 这里为什么替换掉了慢开始算法呢,这是因为收到重复的ACK不仅仅告诉我们一个分组丢失了,由于接收方只有在收到另一个报文段时才会产生重复的ACK,所 ...
- TCP的流量控制与拥塞控制小结
概述 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认.其中TCP的流量控制与拥塞控制是 ...
- TCP基础知识(三)重传、流量控制、拥塞控制
TCP详解(3):重传.流量控制.拥塞控制…… 数据传输 在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性.它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据:使用校 ...
- TCP的可靠传输(依赖流量控制、拥塞控制、连续ARQ)
TCP可靠性表现在它向应用层提供的数据是无差错,有序,无丢失,即递交的和发送的数据是一样的. 可靠性依赖于流量控制.拥塞控制.连续ARQ等技术 <TCP/IP详解>中的“分组”是不是就是报 ...
随机推荐
- 窥探Swift之别样的枚举类型
想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在 ...
- 关于有默认值的字段在用EF做插入操作时的思考(续)
问题描述 今天下午(看现在这时间,应该是昨天下午了哈),园友 choon 写了这样一篇博文<关于有默认值的字段在用EF做插入操作时的思考>. 博文内容主要记录的是 choon 使用 EF ...
- AVFoundation播放视频时显示字幕,切换音轨
主要用到两个类:AVMediaSelectionGroup 和 AVMediaSelectionOption 调用 AVAsset对象的availableMediaCharacteristicsWit ...
- 优化JS加载时间过长的一种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 去年公司在漳州的一个项目中,现场工程人员反映地图部分出图有点 ...
- 自己动手丰衣足食之轮播图一动态修改marginTop属性实现轮播图
引言 学习jQuery有年头了,刚开始学习时自己动手写过轮播图,放的久了以至于忘了大致思路了.现在转而做前端,抽空把jquery轮播图拿出来写一写,把各种思路都自己练习练习,这里主要使用动态修改mar ...
- jquery动画,基础以及我发现的新大陆
$.animate()在jquery官方介绍有2中方式,其实我发现的新大陆也是第二种方式的扩展! 一.$.animate( properties [, duration ] [, easing ] [ ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
页面静态化的技术实现有两种方式 使用PHP自己的缓存机制 先说明一下OB缓存的机制. ob1.php 代码:说明的ob的各个用法->项目中 ☞ 如何打开ob缓存 ① 配置php.ini ...
- Spark计算均值
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用spark来快速计算分组的平均值,写法很便捷,话不多说上代码 object ColumnVal ...
- mysql null值处理详细说明
在讲null之前,我们先看一个例子 表数据如下: 3306>select * from t1; +------+-------+ | id | name | +------+-------+ | ...
- ubuntu 解决 “E: Problem with MergeList /var/lib/apt/lists/”错误
这种错误的意思:无法解析或打开软件包的列表或是状态文件. 出现的原因:无法解析或打开软件包列表多数情况是安装的软件与本身系统有一些冲突之类的问题,或者曾在更新软件源或下载软件的时候意外中断造成的. 解 ...