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详解>中的“分组”是不是就是报 ...
随机推荐
- 如何在制作jar包时引用第三方jar包
我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利 ...
- 【经验之谈】Windows环境下配置WordPress
前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...
- 1Z0-053 争议题目解析470
1Z0-053 争议题目解析470 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 470.Which NLS parameter can be used to change the ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)
一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...
- 机器学习 1 regression
Linear regerssion 线性回归 回归: stock market forecast f(过去10年股票起伏的资料) = 明天道琼指数点数 self driving car f(获取的道路 ...
- Moon.Orm与其他Orm的技术对比
有时候在思考大家为什么喜欢EF,为什么又出现这么多的Orm,为什么Nhiberate被人许多人接收又被许多人拒绝 最后发现结论:萝卜白菜各有所爱.适合自己的就是最好的. EF 微软团队支持(可谓强大的 ...
- 前端必须了解的布局常识:普通流(normal flow)
目录 一.概述 二.块级元素和内联元素 常见的块级元素 BFC 常见的行内元素 IFC 三.哪些情况会脱离普通流 浮动 绝对定位 固定定位 display:none 四.总结 五.参考资料 一.概述 ...
- 程序集与反射技术(C#)
首先我们来看程序集,程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件.exe和类库文件.dll).由于程序集在编译后并不一定会生成单个文件,而可能会生 ...
- 用NPOI从DataBase到Excel
NPOI的C# Helper代码 public static void WriteExcel(DataTable dt, string filePath) { ) { HSSFWorkbook wk ...
- ASP.Net Core MVC6 RC2 启动过程分析[偏源码分析]
入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢? .NET Web Development and Tools Blog ASP.NE ...