热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCP拥塞控制(挖坑)

TCP拥塞控制概述https:www.bilibili.comvideoBV1BL4y1J7vh?p37拥塞非正式定义:太多太快的分组(包含着TCP段以及UDP数据报等)需要网络传

TCP拥塞控制概述

https://www.bilibili.com/video/BV1BL4y1J7vh?p=37

拥塞非正式定义:太多太快的分组(包含着TCP段以及UDP数据报等)需要网络传输,超过网络(具体来可能是部分节点、链路)的处理能力

原因:网络中的某个(某些)路由器队列溢出,开始丢弃分组

拥塞的表现,从源端的角度来看



  • 分组(包含着TCP段等)丢失,源端超时了



  • 在源端,收到某TCP段的多个冗余ACK



  • 延迟增加



  • 拥塞情况加速变坏



不加控制网络无法使用

拥塞控制目标:在网络不拥塞的情况下,尽可能地快速发送(吞吐量)



  • 矛盾目标:不拥塞+吞吐大·



  • 不拥塞不是主要目的,是前提;主要目的是大吞吐



  • 系统角度目标:公平



关系和位置:Host与网络的关系,非端到端关系(如流量控制)

几个关键问题:



  • 拥塞检测:段超时,冗余ACK,ECN,延迟大......



  • 拥塞时或非拥塞:如何控速·丢失的段什么时机重传



控速方法:控制cwnd(在未确认情况下向接收方发送字节数),速率= cwnd /RTT



  • 拥塞:增加发送速率



  • 拥塞时:减少发送速率



为达到目标,具体控制思路:升速和减速最终维持到一个合理的速度

在一个相对短的时间,两个主机之间的可达吞吐量基本是个常量



  • 网络的状况发生变化,如某些其他主机对传完了退出竞争,让出带宽,我和对方主机对之间可以传得快些;主机对之间的可用带宽变化成另外常量;



  • 或有一些主机对加入到传输,和我抢带宽,我和对方主机之间的传输只能传得慢些



IP网没有提供拥塞反馈,各主机不知道什么是合理的速度,动态试凑合理的cwnd



  • 总体控速:发生拥塞时减少,其他时间跃跃欲试增加发送速率;



  • 需要不断按照负反馈控制其cwnd窗口适应网络条件的变化;



  • 各主机对按照该速率进行分布式控制,控制发送速率,间接地协调使用相关联资源,达到各主机对合理使用网络资源的目的




拥塞控制算法演化


经典拥塞控制:Tahoe和Reno


改进:New Reno 、SACK


改进:CUBIC


网络辅助信息拥塞控制:ECN


基于延迟的拥塞控制: Vages


总结



推荐阅读
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • slmp协议和mc协议区别_TCP协议与UDP协议的区别
    TCP协议和UDP协议TCPIP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个,之所以命名为TCPIP协议,因 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
author-avatar
该改改小心眼_222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有