1. TCP流量控制 

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

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

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

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

2.TCP的拥塞控制

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

2.1TCP的拥塞控制方法

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

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

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

  1. 慢开始和拥塞避免

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

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

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

当cwnd < ssthresh时,慢开始算法。

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

2.快重传与快恢复

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

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

转载于:https://my.oschina.net/u/4045381/blog/3097269

简述TCP的流量控制与拥塞控制相关推荐

  1. 计算机网络 拥塞控制和流量控制,简述TCP的流量控制与拥塞控制

    1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收. 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小. 考虑一种特殊 ...

  2. 计算机网络 | 谈谈TCP的流量控制与拥塞控制

    文章目录 一.TCP的流量控制 1.利用滑动窗口实现流量控制[⭐⭐⭐] 2.如何破解[死锁]局面❓ 二.TCP的拥塞控制 1.拥塞控制的一般原理 ① 解决网络拥塞的误区 ② 拥塞控制与流量控制的关系[ ...

  3. TCP协议——流量控制和拥塞控制

    ** 一.流量控制 ** 1.1 什么是流量控制 Sender won't overflow receiver's buffer by transmitting too much, too fast. ...

  4. 传输层TCP(流量控制和拥塞控制)

    转载自:https://blog.csdn.net/zgege/article/details/80445324 内容 关键字 流量控制 窗口大小,窗口扩大因子M,机理,窗口探测数据段 拥塞控制 拥塞 ...

  5. 快速了解TCP的流量控制与拥塞控制

    有关TCP你不能不知道的三次握手和四次挥手问题,点我跳转 流量控制 1. 滑动窗口 数据的传送过程中很可能出现接收方来不及接收的情况,这时就需要对发送方进行控制以免数据丢失.利用滑动窗口机制可以很方便 ...

  6. TCP协议--流量控制,拥塞控制,MSS

    MSS MSS(Maximum segment size): 最大报文段长度.MSS应用于TCP协议中,代表的是单个TCP报文的可传输的最大数据长度.MSS的大小,和通信中的另一个参数MTU息息相关. ...

  7. 你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了...

    每日一句英语学习,每天进步一点点: 来自:小林coding 前言 前一篇「硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题」得到了很多读者的认可,在此特别感谢你们的认可, ...

  8. 计算机网络:TCP滑动窗口的流量控制和拥塞控制

    1. 前言 最近在研究网络通信底层通信原理,所以不得不复习一波计算机网络传输控制协议.那么对于程序开发人员,了解底层网络通信原理,对于我们理解BIO.NIO网络通信十分重要.所以对于程序开发人员来说, ...

  9. UDP(首部)和TCP(首部、三次握手、四次挥手、可靠传输、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复))

    1.UDP 用户数据报协议 UDP(User Datagram Protocol): 是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部 ...

最新文章

  1. NSAttributedString 详解
  2. java中的servlet是线程安全的嘛_Java面试题:Servlet是线程安全的吗?(转)
  3. java的成员方法_java编程中的成员方法是什么?
  4. OpenStack 镜像密码修改办法
  5. Spring Boot 对CORS跨域访问的配置
  6. android基础之内容提供者使用
  7. win7屏保文件.scr_如何将屏保添加到Ubuntu 12.04
  8. Android之jni调用java函数总结
  9. 快递下单后取消订单_网约车定位地点不动,男子别的平台下单,没取消订单要付6.6元...
  10. C++:fseek( FILE *stream, long offset, int origin )
  11. 工行黄金递延业务AU(T+D)风险问题答案
  12. 农行支付php,ECSHOP教程:农行支付接口开发(含手机端)
  13. 想要轻松入门数据分析,这些知识不得不看!
  14. 【 Linux 网络虚拟化 】Openvswitch
  15. now is all
  16. VM VirtualBox 安装Window XP3安装版
  17. HDU 2586 How far away ? tarjan算法求LCA
  18. 【Mockplus教程】账号和购买
  19. winfrom给word加水印
  20. 违反开源项目GPL协议,法院判罚了!国内首例

热门文章

  1. Java实习面试(2018春)
  2. 使用PHP访问Windows注册表
  3. java基于微信小程序的游戏外包管理信息系统 uniapp 小程序
  4. Python 使用xlrd 读取 Excel 报错:xlrd.compdoc.CompDocError: Workbook corruption: seen[3] == 4
  5. 金仓数据库 KingbaseES PL/SQL 过程语言参考手册(16. A PL/SQL源文本加密)
  6. PDF文件的身份证号码
  7. 关于嵌套滚动机制的一点思索
  8. html5 ios number,HTML5 Scorecard: The New iPad and iOS 5.1 — A Mixed Bag
  9. linux的周期行计划任务叫做atd,Linux任务计划
  10. 山西宗教文化漫谈(一)