目录

文章目录

  • 目录
  • 拥塞控制
    • 慢启动算法
    • 拥塞避免算法
    • 拥塞发生算法
      • 发生超时重传的拥塞发生算法
      • 发生快速重传的拥塞发生算法
    • 快速恢复算法
    • BBR 算法
  • 粘包与拆包

拥塞控制

前面的流量控制是避免「发送方」的数据填满「接收方」的缓存,但是并不知道网络的中发生了什么。一般来说,计算机网络都处在一个共享的环境。因此也有可能会因为其他主机之间的通信使得网络拥堵。

如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。为了在「发送方」调节所要发送数据的量,定义了一个叫做「拥塞窗口」的概念。

拥塞窗口和发送窗口有什么关系呢?拥塞窗口 cwnd 是发送方维护的一个的状态变量,它会根据网络的拥塞程度动态变化的。在前面提到过发送窗口 swnd 和接收窗口 rwnd 是约等于的关系,那么由于入了拥塞窗口的概念后,此时发送窗口的值是swnd

互联网协议 — TCP — 拥塞控制(网络质量保障)相关推荐

  1. 互联网协议 — TCP — 拥塞控制

    目录 文章目录 目录 拥塞控制 拥塞窗口 1.慢启动算法 2.拥塞避免算法 3.快速重传算法 4.快恢复算法 拥塞控制 网络出现拥塞时,Segments 会被丢弃,导致 Sender 不断重传,雪上加 ...

  2. 运输层协议TCP与网络编程

    运输层协议TCP与网络编程 TCP 1.TCP报文段结构 应用进程通过套接字传递数据流,TCP将这些数据引导到该连接的发送缓存(send buffer),发送缓存是三次握手期间设置的,还有接收缓存(r ...

  3. 互联网协议 — TCP — 性能问题解析

    目录 文章目录 目录 TCP 难以满足弱网环境的通信需求 TCP 难以满足弱网环境的通信需求 TCP 在设计之初没有考虑到现今复杂的网络环境,当你在地铁上或者火车上被断断续续的网络折磨时,你可能都不知 ...

  4. 协议地址结构_通信之路——用最简洁的文字告诉你互联网协议TCP/IP

    (建议在学习本篇知识时先阅读我关于OSI的文章) 在上一篇文章中,我们详细介绍了OSI模型,对每一层的功能和作用都做了解释说明.在文章的最后也说到,OSI是一个理想化的模型,因为在设计之初未能考虑到实 ...

  5. 目录服务器的互联网协议是,各个网络协议汇总(01)

    协议简介 1. TCP  (Transmission Control Protocol)  传输控制协议 它完成第四层传输层所指定的功能,TCP层是位于IP层之上,应用层之下的中间层.不同主机的应用层 ...

  6. 传输层协议TCP—拥塞控制(12)

    1 拥塞控制简介 拥塞控制讲述的则是从如何避免网络拥塞的视角或者网络已经拥塞的情形下,TCP 对应的算法和处理机制.TCP 拥塞控制(对应 RFC 5681)包括4个算法(机制):慢速启动.拥塞避免. ...

  7. 互联网协议 — TCP — 滑动窗口

    目录 文章目录 目录 TCP ARQ 协议 TCP 的滑动窗口 Sender 滑动窗口 Receiver 滑动窗口 滑动窗口处理流程 窗口探测 TCP ARQ 协议 ARQ(Automatic Rep ...

  8. 互联网协议 — TCP — 流量控制(网络质量保障)

    目录 文章目录 目录 TCP 的流量控制 当应用程序没有及时读取缓存时 服务端系统资源非常紧张时 窗口关闭 糊涂窗口综合症 TCP 的流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力.如 ...

  9. 互联网协议 — TCP — 滑动窗口(网络质量保障)

    目录 文章目录 目录 TCP 的滑动窗口 发送方的滑动窗口 接收方的滑动窗口 TCP 的滑动窗口 TCP 的 ACK 机制就像两个人面对面聊天,你一句我一句,可见这种方式的缺点是效率比较低的.数据包的 ...

最新文章

  1. python查看安装包的版本scipy,numpy,matplotlib等
  2. C语言string.h常用函数总结
  3. linux useradd命令使用示例
  4. Puppet基础应用
  5. 64 位 win7(2008 r2) 使用PLSQL Developer x86 32bit的解决方法
  6. 微信小程序自定义组件4 —— 代码共享behaviors
  7. CentOS-6.5-x86_64 最小化安装,已安装包的总数,这些包?
  8. Markdown支持的语言
  9. 【OpenCV CUDA】OpenCV和Cuda结合编程
  10. npm打包项目报错:npm ERR! A complete log of this run can be found in:npm ERR! C:\Users\AppData\Roa...
  11. 防止javascript脚本读取cookie信息
  12. drop_caches释放哪些内存
  13. 如何手动启动消防广播_消防应急广播的设置要求是怎样的?
  14. 单片机c语言课后题答案,单片机原理及应用(C语言版)习题答案.doc
  15. 【云和恩墨业务介绍】之数据库性能优化服务
  16. 处理各种压力(情绪、家庭)时,需要注意什么!
  17. svm实现非线性分类(利用smo算法)
  18. 一文读懂数据科学Notebook
  19. mac时间机器删除旧备份
  20. Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件

热门文章

  1. 轻量级Web渗透测试工具jSQL
  2. Highmaps网页图表教程之数据标签与标签文本
  3. java接口测试工具_接口测试基础了解篇
  4. 华为mate40怎么用鸿蒙,怎么使用鸿蒙系统?
  5. python编写圣诞树代码_python 实现圣诞树
  6. 借助液态金属传感器和AI,这次机械手可能真的找到感觉了
  7. BETA:由清华大学等多家研究机构联合提出的面向SSVEP-BCI应用程序的大型基准测试数据库...
  8. DNNBrain:北师大团队出品,国内首款用于映射深层神经网络到大脑的统一工具箱...
  9. 玩“剪刀石头布“的脑机!密歇根大学开发由大脑意识精密控制的假肢
  10. 分数混合运算简便方法_分数四则混合运算