TCP拥塞控制和流量控制区别含义深刻理解

因为最近学习了TCP/IP协议,学习TCP其中内部的两个很大的特点,就是流量控制和拥塞控制两个优化数据传输的方法,因为两者有很多细节的知识,所以再这里记录一下,希望能很直白清楚的解释这两个概念,也方便记忆和理解.

拥塞控制和流量控制是TCP用来解决传输数据中产生的一些问题,而采取的两种优化方法,

两者作用上的区别

  • 流量控制是为了解决发送方和接收方速度不同而导致的数据丢失问题,当发送方发送的太快,接收方来不及接受就会导致数据丢失,流量控制用滑动窗口的形式解决问题
  • 拥塞控制是为了解决过多的数据注入到网络,导致网络奔溃,超过负荷.当发送方发送数据大量的数据会注入到网络,如果没有限制,网络就会超负荷变卡,拥塞控制的用的是拥塞窗口解决的问题的

窗口的意义

窗口就是缓冲区,用来暂时存储数据等待发送和接收,其实就是对每一次发送的数据大小进行限制,每个窗口的都有大小限制,超过部分不能发送,可以不用每次发送报文等待ACK确认,只要保证发送的报文再发送窗口内部就行,消除了等待确认的时间,大大提高效率

流量控制

流量控制协议通过滑动窗口来实现.

简单来说就是发送窗口的大小,取接受方ACK提供的大小和发送方的拥塞窗口大小的最小值,来确定大小,发送窗口的大小不能超过滑动窗口的大小.为什么称为滑动窗口,因为当发送方接收到数据的确认信息,滑动窗口会更具返回的序号动态的改变窗口的位置.滑动的窗口大小得到了重置,同时滑动窗口会根据网络状况动态变化.

上面就是滑动窗口的具体例子,滑动窗口用来控制流量大小,并动态变化窗口大小.

拥塞控制

拥塞控制是为了解决过多的数据注入到网络,导致网络奔溃,超过负荷,拥塞控制包含四个策略

  • 慢开始

    慢开始的含义就是讲窗口先设置为1,每个传输轮次大小增长一倍,直到大道慢开始的门限(ssthresh),这时候慢开始阶段结束

  • 拥塞避免

    慢开始结束后,接下来就是拥塞避免,这个阶段拥塞窗口在每个传输轮次数量加1,直到触发了网络拥塞,窗口大小和门限都变为拥塞时最大的值得一半,然后重新开始慢开始阶段


  • 快重传

    快重传指的是当接受方收到顺序错误得数据时不接收数据,同时重复发起对于之前数据的确认,发动到第三次,发送方得知自己的一部分数据再发送中丢失,立即发起重传,不需要等待下一次发送信息时一起发送过去.,且重传时触发和拥塞一样得情况,进入快恢复阶段

    途中M3丢失 ,接收方不接受M4和M5 ,而是不断发送确认M2得报文,三次之后,发送方重传M3的数据

  • 快恢复

    快恢复就是再发生拥塞和重传时,窗口经历了拥塞避免阶段,然后进入快恢复阶段,和拥塞避免一样都是每次加一,这样能提高恢复速度,像老版本(Tahoe)中需要重新经历慢开始

拥塞控制的四个算法都可以结合5-27图来理解,只要把这张图理解了,就基本理解了拥塞窗口的拥塞控制方法(重要)

TCP拥塞控制和流量控制区别含义深刻理解相关推荐

  1. TCP拥塞控制和流量控制

    TCP 的流量控制与拥塞控制可以说是一体的.流量控制是通过滑动窗口实现的,拥塞避免主要包含以下2个内容: (1)慢开始,拥塞避免 (2)快重传,快恢复 1.流量控制--滑动窗口 TCP采用大小可变的滑 ...

  2. Linux系统编程21:基础IO之全缓冲和行缓冲的区别及深刻理解缓冲区及其作用

    文章目录 (1)全缓冲和行缓冲 (2)真正理解缓冲区 (1)全缓冲和行缓冲 一般来说,C库函数写入显示器属于行缓冲,也就是只要遇到一些标记,比如说'\n'就会立即刷新出去 所以上面的例子中如果不关闭1 ...

  3. XmnXmsXmxXss参数的区别-含义及理解

    1.-Xmn -Xms -Xmx -Xss有什么区别 首先,-Xmn.-Xms.-Xmx.-Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果. 了解JVM ...

  4. udp 使用connect优点_一文搞懂TCP和UDP的区别

    TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇.TCP/IP协议集包括了超 ...

  5. TCP流量控制-TCP拥塞控制 拥塞控制与流量控制的区别

    拥塞控制与流量控制的区别: 拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机.所有的路由器,以及与降低网络传输性能有关的所有因素. 相反,流量控制往往是指点对点的通信量的控制 ...

  6. TCP的socket编程中“全双工的字节流”含义的深刻理解

    本人从事TCP的socket编程多年,趟过很多坑,对于TCP是"全双工的字节流"这几个字的含义有深刻理解.这几个字,文字虽少,但字字精辟.如果没有深刻理解,编程中可能知其然不知其所 ...

  7. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  8. TCP中的流量控制和拥塞控制机制

    一. 流量控制 1. 流量控制和拥塞控制两者区别 流量控制:是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动 ...

  9. TCP拥塞控制和TCP流量控制

    转自:https://blog.csdn.net/qq_38623623/article/details/81290265 TCP拥塞控制 提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平 ...

最新文章

  1. 硅谷初创公司工资期权调查报告出炉,你羡慕吗?
  2. CentOS忘记密码
  3. python语言remove_慎用python的pop和remove方法
  4. Java08-day08【API(概述、使用)、String-StringBuilder(概述、构造方法、特点、方法)、StringBuilder和String相互转化】
  5. unity text不能刷新_Unity使用ComputerShader实时压缩RT!
  6. python解析xml数据_数据开发_Python解析XML文件
  7. php 文章浏览量 缓存,WordPress缓存文章浏览量访问不自动增加怎么办?WordPress缓存导致文章阅读数点赞数不更新...
  8. faspeed是什么意思_speed是什么意思_speed的翻译_音标_读音_用法_例句_爱词霸在线词典...
  9. html 空格占位符_HTML常用英文单词,快来背单词吧
  10. c++11新特性的使用---可变模板参数、lambda、type_traits、optional综合使用
  11. Java 反射Reflection总结二
  12. 生成交叉表的SQL基本语句
  13. skyline 环境配置
  14. webpack 合并压缩_文章 - coolie PK webpack 之一:JS 文件的合并与压缩 - FED社区
  15. 鸿鹄818芯片:小米电视千万销量面前的“水滴”
  16. fatal: unsafe repository (‘/home/anji/gopath/src/gateway‘ is owned by someone else)
  17. 时间序列分析(1)-移动平均法
  18. linux修复fat文件系统,如何修复损坏的FAT32文件系统
  19. mysql忘记密码(无秘登录)for Linux
  20. Excel中的小技巧amp;大智慧

热门文章

  1. gvim文本编辑工具基本操作
  2. 不习惯PDF编辑?用迅读PDF转换器
  3. 关于Java的Retention元注解
  4. 虚拟机(Centos6.8)离线情况下,安装火狐浏览器
  5. 锂电池正常分容测试温度的软件,实现节能环保,锂电池化成分容测试方案不可少...
  6. 微信小程序 - 手写下拉刷新效果
  7. 微信小程序不同机型底部安全区域问题
  8. 关键字volatile有什么含意 并给出三个不同的例子
  9. 如何设置背景图片位置
  10. 商业思维决定你在行业的高度