文档章节

简述TCP的流量控制与拥塞控制

鏡花水月
 鏡花水月
发布于 08/25 10:39
字数 1042
阅读 21
收藏 0

1. TCP流量控制   

    流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。

    原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。

    考虑一种特殊的情况,接收方向发送方发送了零窗口的报文段后,接收方又有了一些存储空间。与接收方向发送方发送了非零窗口的报文段。然而这个报文段在传送过程中丢失了。发送方的发送窗口一直为零导致死锁。

    为了解决这个问题,每个连接设置有持续计时器,只要连接的一方收到零窗口通知,就启动持续计数器。若持续计数器设置的时间到期,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段给出现在的窗口值。如果窗口仍然为零,那么收到这个报文段的一方重置持续计数器,否则,那么死锁的僵局就可以打破。

2.TCP的拥塞控制

        拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路过载。如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收(端对端的通信),而拥塞控制是为了降低整个网络的拥塞程度(全局性)。

2.1TCP的拥塞控制方法

TCP进行拥塞控制的算法有四种,即慢开始,拥塞避免,快重传,快恢复。

发送方让自己的发送窗口等于拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。

  1. 数据是单方向传送的,对方只传送确认报文。
  2. 接收方总是有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度决定。

 

 

  1. 慢开始和拥塞避免

发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:248 ...

cwnd > ssthresh(慢开始门限)时,改用拥塞避免算法,拥塞避免算法每经过一个往返时间cwnd1

cwnd = ssthresh时,既可以用慢开始也可以使用拥塞避免算法。

cwnd < ssthresh时,慢开始算法。

当网络出现超时,ssthresh = cwnd / 2,同时设置拥塞窗口cwnd=1.进入慢开始算法。

2.快重传与快恢复

快重传算法要求接收方不要等待自己发送数据才进行捎带确认,而是立即发送确认。即使收到失序的报文段对已发送的报文段的重复确认。发送方一连收到3个重复确认就应当立即进行重传。在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,发送方调整门限值ssthresh =cwnd/2,同时设置拥塞窗口cwnd=ssthresh ,并开始拥塞避免算法。

慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh

© 著作权归作者所有

鏡花水月
粉丝 3
博文 80
码字总数 56954
作品 0
福州
私信 提问
TCP可靠传输&流量控制&拥塞控制

TCP可靠传输 TCP可靠传输的工作原理 1.无差错 1>:无差错: A发送分组M1,发送就暂停发送,等待B的确认,B收到M1就向A发送确认,A收到对M1的确认后再发送下一个分组。(若A收到连续的M1分组的...

满小茂
2016/01/12
10.4K
7
TCP基础 —— 流量控制与拥塞控制

一:流量控制 什么是流量控制?流量控制的目的? 如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流...

Anur
04/30
31
0
TCP封装的隧道对于拥塞控制的意义

引: 工作上,平时上网,都用到了OpenVPN,事实上我比较喜欢用TCP模式而不用UDP(直到发现了重传叠加),因为自从上学时代,我就会UDP不感冒,它除了多路复用,分解的作用外,和IP几乎一样,而...

晨曦之光
2012/04/10
546
0
用文字描述TCP的流量控制和拥塞控制

TCP在发送端和接收端有两个窗口,发送端的是拥塞窗口而接收端的就叫做接收窗口,两个窗口的作用不同 ,所谓的流量控制就是收发端的速率要匹配,决定权在接收端而不在发送端,因为发送的慢了可...

晨曦之光
2012/04/10
822
0
tcp的流量控制和拥塞控制

TCP的流量控制 1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接...

zhangyujsj
2015/10/16
144
0

没有更多内容

加载失败,请刷新页面

加载更多

二叉查找树的第 K 个结点

private TreeNode ret;private int cnt = 0;public TreeNode KthNode(TreeNode pRoot, int k) { inOrder(pRoot, k); return ret;}private void inOrder(TreeNode root......

Garphy
53分钟前
4
0
windo8 weblogic

需要的软件包 现在安装jdk 则先进入你电脑自带jdk \bin目录下 然后java -jar 执行你的jar包就可以了 欢迎界面直接点击下一步,跳到更新界面,直接选择跳过 然后选择安装目录(注意:目录不要有...

恩多
今天
8
0
Activiti 批注

Activiti添加批注(comment)信息 在每次提交任务的时候需要描述一些批注信息,例如:请假流程提交的时候要描述信息为什么请假,如果领导驳回可以批注驳回原因等  1、添加批注 // 由于流程...

奔跑的android
今天
4
0
centos7命令行和图形界面的相互切换

最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同。 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面; 2,在图形化桌面,右击鼠标,选...

无名氏的程序员
今天
6
0
快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么

一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在...

Bb进阶
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部