首页 > 其他分享 >计算机网络 拥塞控制

计算机网络 拥塞控制

时间:2024-07-14 12:00:21浏览次数:16  
标签:控制 窗口 重传 网络 计算机网络 拥塞 ssthresh cwnd

拥塞通常是由于网络中的资源(如路由器、链路)过载而导致的。当网络负载过大,超过其容量范围时,会出现数据包丢失、延迟增加、传输失败等问题,从而影响网络的性能和可靠性,如果发生,数据包丢失TCP就会重传数据,但是一重传就会导致网络的负担更重,产生更多的丢包,恶性循环不断放大。

拥塞控制是计算机网络中重要的一部分,它是为了解决在网络中出现的拥塞现象而采取的一系列技术和策略。拥塞控制的主要目标是确保网络各部分之间的数据流量不超过其承载能力,以维持网络的正常运行和性能稳定。

TCP四种拥塞控制算法:

拥塞窗口控制

1.慢开始:在开始传输数据时,拥塞窗口大小逐渐增加,直到遇到拥塞发生或达到网络的容量限制,慢开始是指一开始向网络注入的报文段少,并不是指拥塞窗口增长速度慢,慢开始算法拥塞窗口是按指数增长的。

2.拥塞避免:一旦网络出现拥塞,拥塞窗口大小会减小,并根据网络情况动态调整,以避免进一步加剧拥塞,拥塞避免并非指能够完全避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络不容易出现拥塞,拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1而不是加倍,这样拥塞窗口按线性规律缓慢增长。

发送方维持一个叫做拥塞窗口cwnd (congestion window) 的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。 慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。 为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:

cwnd<ssthresh时使用慢开始算法。

cwnd>ssthresh时改用拥塞避免算法。

cwnd=ssthresh慢开始与拥塞避免算法任意。

可以看到慢开始拥塞窗口呈指数型增长达到慢开始门限ssthresh后改用拥塞避免算法拥塞窗口呈线性增长直到发送了超时重传,判断网络可能出现拥塞,此时将慢开始门限ssthresh更新为发生拥塞时的拥塞窗口的一半,然后将拥塞窗口的值减少为1,并重新开始执行慢开始算法,如此往复。

拥塞检测和响应

3.快重传

接收方:当个发现乱序时,会发送三个连续的重复的上一次的确认信息。 

发送方:收到三个连续的重复确认ACK会立即重传ACK标记的下一个编号的数据包。

4.快恢复

 当发送方收到三个重复ACK时,触发快重传机制,慢开始门限变为原来的一半,此时触发快恢复拥塞窗口 = 慢开始门限+3,和超时重传触发的不同是,超时重传是把窗口降为1,快重传是降一半+3。

标签:控制,窗口,重传,网络,计算机网络,拥塞,ssthresh,cwnd
From: https://blog.csdn.net/weixin_63162063/article/details/140412786

相关文章

  • OpenFlow 是一个网络通信协议,它允许网络管理员通过中央控制器(如 OpenFlow 控制器)来编
    OpenFlow是一个网络通信协议,它允许网络管理员通过中央控制器(如OpenFlow控制器)来编程定义网络中的数据包转发行为。OpenFlow协议通常用于软件定义网络(SDN)架构中,其中网络控制平面与数据转发平面是分离的。在Python中,直接编写与OpenFlow交换机交互的代码通常涉及使用......
  • 基于PI+重复控制的有源滤波器谐波抑制策略模型(Simulink仿真实现)
     ......
  • 使用SDRE对NPS II无人机进行点对点(调节)控制(Matlab代码实现)
     ......
  • 手势控制机械手
    机械手的手势控制思路:1通过摄像头实现手势识别2将识别后的手势数据通过计算拇指与中指指尖的距离计算出舵机需要旋转的角度3将数据通过mqtt发送给mqtt服务器4硬件通过mqtt获取需要旋转的角度控制舵机旋转开发环境:硬件:ESP8266、舵机硬件代码:软件环境:python3.9......
  • Python学习笔记36:进阶篇(二十五)pygame的使用之事件监听控制切歌和暂停,继续播放
    前言基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。我们的下一步目标是完成pythoncrashcourse中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。私信我发送消息python资料,......
  • 自适应巡航控制(ACC)功能—巡航车速控制功能介绍
    1.背景介绍随着自动驾驶技术的发展和普及,自适应巡航控制(ACC)系统逐渐成为现代汽车的重要配置之一。ACC系统不仅可以大幅度提升驾驶的舒适性和安全性,还可以有效减少驾驶员在长途驾驶和拥堵交通中的疲劳感。在ACC系统中,巡航车速控制功能是其核心子功能之一,通过精确调节车辆速......
  • 流程循环控制语句
    目录for循环带列表循环不带列表循环类C风格循环while循环语法无限循环使用示例until循环基本语法示例select循环语法格式嵌套循环break和continuebreak的使用continue的使用在shell中循环有以下几种:for循环        while循环until循环selec......
  • 【免费】多种模型预测控制MPC的matlab程序+simulink模型+说明文档
    多种模型预测控制MPC相关matlab程序代码simulink+文档MPC控制算法文献  下文附下载链接1、基于Koopman模型预测控制的非线性流控制的数据驱动框架2、一种用于非线性模型预测控制的并行优化工具包(NMPC)3、基于运动学车辆模型的开放式驾驶MPC横向控制算法4、移动机器......
  • 2023-2024第二学期的助教工作总结(计算机网络)
    一、助教工作的具体职责和任务 (包括:你和老师是如何配合的、你和课程其他助教是如何配合的(如果有的话))1.及时跟进学生学习进度每周询问老师教学进度,自己复习知识点,随时准备回复学生问题,并对后续进行安排2.编写题目,拓宽题库每周编写5-8题题目,写出答案,并发给老师审核3.和老师......
  • rest-api安全权限控制
    rest-api安全权限控制 httpapi权限安全验证和session管理简单演示1)对于合法用户,后端会主动给它们提供唯一的用户名+密码2)客户端每次httpmethod调用api,必须提供有效的签名3)sessionid可以hash用户签名来生成唯一的sessionid4)服务端验证用户签名成功,才允许客户端调用此api5)签......