TCP流量控制+拥塞控制

news2024/11/27 10:20:42

流量控制:

  • 目标:流量控制主要解决的是发送方和接收方之间处理能力的不匹配问题。它的目的是确保发送方不会发送数据过快,以至于接收方无法及时接收并处理这些数据,从而避免数据包在网络中堆积和丢失。
  • 实现方式:在TCP协议中,流量控制主要通过使用滑动窗口机制来实现。接收方会告知发送方其当前能够接收的数据量(即接收窗口大小),发送方根据这个信息调整自己的发送速率。

流量控制: 流量控制主要关注的是发送方和接收方之间的数据传输速率。它确保发送方不会发送数据过快,以至于接收方来不及处理。流量控制的目的是防止接收方的缓冲区溢出,这通常通过动态调整接收窗口的大小来实现。接收方通过TCP报文的确认(ACK)来告知发送方其缓冲区的可用空间(接收窗口大小),发送方根据这个信息来调整发送速率。如果接收方的缓冲区满了,它会发送一个窗口大小为0的ACK,这时发送方会停止发送新的数据,直到接收方处理完数据并更新窗口大小。

如下,

(1)三次握手开始时:

A声明win=3,请求SYN;

B回复win=3,回复请求SYN,确认ACK;

A回复win=3,确认ACK。

(2)握手一旦建立好:

A连续发送3个数据给B,同时每一个数据里还在声明自己的窗口任然win=3,即A没接收到数据。

(3)B的3个win已经被占满

(4)当CPU取走一个窗口数据,空出1个:

B又给A发去win=1的信号

(5)A继续发来1个数据填充空白窗口

拥塞控制:

  • 目标:拥塞控制着眼于整个网络资源的管理,而非单个连接。它是为了防止过多的数据同时涌入网络,导致中间节点(如路由器)的缓冲区溢出,进而引发网络性能急剧下降甚至崩溃的问题。
  • 实现方式:TCP采用多种拥塞控制算法,包括慢开始、拥塞避免、快重传和快恢复等策略。发送方维护一个称为“拥塞窗口”的状态变量,根据网络反馈动态调整这个窗口的大小以适应网络状况。例如,在建立连接或检测到丢包时,TCP会启动慢开始算法逐渐增加发送速率;而在收到三个重复确认后,会触发快重传和快恢复算法。

拥塞控制: 拥塞控制则是为了防止网络中的数据包过多,导致网络拥塞。当网络中的路由器或链路负载过重时,可能会出现丢包现象。拥塞控制通过调整发送方的发送速率来避免这种情况。TCP协议中的拥塞控制算法包括慢开始(Slow Start)、拥塞避免(Congestion Avoidance)、快重传(Fast Retransmit)和快恢复(Fast Recovery)等策略。这些策略共同工作,使得发送方在网络出现拥塞迹象时能够减少发送速率,而在网络状况良好时逐渐增加发送速率。

cwnd(Congestion Window)

是TCP(传输控制协议)中的一个重要概念,它代表拥塞窗口的大小,用于控制发送方在任何给定时间可以发送到网络上的数据量。拥塞窗口的主要目的是防止网络拥塞,确保数据包不会过多地涌入网络,从而避免网络资源过载。

拥塞窗口cwnd的产生和调整遵循TCP的拥塞控制算法,这些算法包括慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)。

ssthresh

在TCP拥塞控制中通常被称为“慢启动阈值”(Slow Start Threshold)。这个术语描述了拥塞窗口(cwnd)在慢启动阶段增长到某个特定值时,TCP将从慢启动算法切换到拥塞避免算法的点。当拥塞窗口达到或超过这个阈值时,TCP将开始以更保守的方式增长窗口,即从指数增长(慢启动)变为线性增长(拥塞避免),以避免网络拥塞。在网络出现拥塞迹象时,如超时重传或连续收到三个重复的确认ACK,ssthresh会被设置为当前拥塞窗口的一半,这是为了迅速减少发送到网络中的数据量,给网络一个恢复的机会。

  1. 初始值:在TCP连接建立时,ssthresh通常被设置为一个较大的值,例如65535字节(这是在TCP Reno版本中常见的默认值),这允许TCP在网络中快速地探测可用的带宽。

  2. 动态调整:当网络出现拥塞迹象时(例如,通过超时重传或连续收到三个重复的确认ACK),ssthresh会被设置为当前拥塞窗口(cwnd)的一半。这样做的目的是迅速减少发送到网络中的数据量,给网络一个“喘息”的机会,以便处理积压的数据包。

慢启动(Slow Start)(指数增长):

第一个包,2^0=1;第二个包,2^2=4;第三个包,2^3=8;第四个包,2^4=16(ssthresh=16)

一切顺利,数据包直接飙到慢启动阈值(如果ssthresh=65535字节,中间可能早就网络拥塞了)

拥塞避免(Congestion Avoidance)(线性增长):

16,17,18,19,20,21,22,23,24,网络超时cwnd

慢启动(Slow Start)

(一夜回到解放前,同时ssthresh被更新为拥塞窗口的一半:cwnd/2)

第一个包,2^0=1;第二个包,2^2=4;第三个包,2^3=8;ssthresh=12

拥塞避免(Congestion Avoidance)(线性增长)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS杂记

1 在需要文本过长&#xff0c;需要该文本自动换行时 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><div style"width:400px;background-color: #dcdcdc;height: auto…

完整的 vue-router 导航解析流程

在Vue.js中&#xff0c;vue-router是一个官方提供的路由管理器&#xff0c;它能够帮助我们实现页面之间的无缝切换和导航。 本文将深入探讨vue-router的导航解析流程&#xff0c;并通过示例代码演示如何使用vue-router实现完整的导航过程。 首先&#xff0c;让我们来了解一下…

【ARMv8M Cortex-M33 系列 8 -- RT-Thread 移植 posix pthread】

文章目录 RT-Thread POSIX PthreadRT-Thread Pthread 相关宏定义RT-Thread libc 初始化RT-Thread Pthread 测试 RT-Thread POSIX Pthread pthread是POSIX&#xff08;Portable Operating System Interface&#xff09;标准定义的一套线程相关的API&#xff0c;全称为POSIX Thr…

TSINGSEE智能分析网关V4的AI算法在消防场景中有哪些应用?

随着科技的不断创新和发展&#xff0c;人工智能已经成为现代社会的重要组成部分。除了在交通、医疗、电力等领域得到了广泛应用外&#xff0c;人工智能在消防领域也有着广泛的应用。AI烟火识别算法作为TSINGSEE青犀视频AI智能分析网关V4的重要组成部分&#xff0c;在城市消防领…

2024年关于电池的欧盟新要求CE 标志并有欧盟负责人

2024年关于电池的欧盟新要求如下&#xff1a; 关于电池的欧盟新要求 2024年&#xff0c;欧盟计划针对在欧盟和北爱尔兰销售的所有独立电池和商品内含电池推出欧盟电池法规。此法规要求所 有符合条件的电池都必须带有CE 标志并有欧盟负责人。 如果您使用亚马逊物流(FBA)且位于欧…

Linux-ls命令

目录 ls&#xff1a;查看目录下文件/文件夹 ls -l&#xff1a;列表显示文件 ls -a&#xff1a;显示所有文件正常情况下‘ . ’开头的文件是隐藏的 ls -la&#xff1a;以列表形式显示所有文件包括隐藏文件 ls -lt&#xff1a;按时间倒序查看文件 ls -R&#xff1a;递归方式…

Rocky Linux 下载安装

一、VMware Workstation下载安装 1、安装教程 VMware Workstation下载安装&#xff08;含密钥&#xff09; 二、VMware Workstation 创建虚拟机 1、创建教程 VMware Workstation 创建虚拟机 三、Rocky Linux 下载 1、下载官网 RockyLinux.org 2、选择X86架构_64位系统_DVD镜…

oauth2 授权码模式 流程说明和接口整理

一、说明 oauth2 授权模式一共有四种&#xff0c;即隐式授权模式、授权码授权模式、密码授权模式和客户端授权模式。 这里仅对授权码授权模式所包含的流程和接口做说明和整理。 具体的概念和源码解读&#xff0c;资料有很多&#xff0c;可以自行去搜索学习。 二、流程说明 假…

计算机网络知识-笔记

计算机网络知识总结 目录 应用层 HTTP 协议 概况HTTP 请求报文HTTP 响应报文首部行HTTP/1.1 协议缺点 HTTP/2 协议 二进制协议多路复用数据流头信息压缩服务器推送HTTP/2 协议缺点HTTP/3 协议 HTTPS 协议 HTTP 存在的问题HTTPS 简介TLS 握手过程实现原理 DNS 协议 概况域名的…

VsCode左边目录,父级目录悬浮粘滞在上方

解决方法&#xff1a; 文件 → 首选项 → 设置&#xff1a;

selenium googledriver 更多的参数配置

座右铭&#xff1a;怎么简单怎么来&#xff0c;以实现功能为主。 欢迎大家关注公众号与我交流 收集的一些selenium chrome配置信息&#xff1a;一些Chrome的地址栏命令&#xff08;这些命令会不停的变动&#xff0c;所有不一定都是好用的&#xff09;在Chrome的浏览器地址栏中输…

Java的跨平台特性

Java语言特别流行的其中一个原因就是其具有良好的跨平台性&#xff0c;Java的跨平台性表现在通过 Java 语言编写的应用程序在不同的系统平台上都能够正常运行。其原理是&#xff1a;只要在需要运行 java 应用程序的操作系统上&#xff0c;先安装一个 Java 虚拟机(JVM Java Virt…

java以及android类加载机制

类加载机制 一、Java类加载机制 java中&#xff0c;每一个类或者接口&#xff0c;在编译后&#xff0c;都会生成一个.class文件。 类加载机制指的是将这些.class文件中的二进制数据读入到内存中并对数据进行校验&#xff0c;解析和初始化。最终&#xff0c;每一个类都会在方…

浅谈TCP协议的可靠含义和三次握手

TCP协议全称传输控制协议&#xff08;Transmission Cotrol Protocol&#xff09; 1、TCP协议运行在哪一层 TCP运行在运输层。 2、TCP协议的可靠是什么意思 步入主题&#xff0c;很多同学的回答是TCP三次握手确保了可靠连接&#xff0c;这样说非常不严谨&#…

openai公司的sora目前仅限于内部人士使用,并未开启对外接口

openai公司的sora目前仅限于内部人士使用,并未开启对外接口&#xff01;既然大家都了解到了sora具备相当强大的视频创作能力&#xff0c;肯定都想尝试一下了。但是&#xff0c;经过笔者的申请发现&#xff0c;目前openai官方并未对外开放sora的调用接口。如下图所示&#xff1a…

梵宁教育陪你击退“假期综合征”

转眼间龙年春节小长假已然结束&#xff0c;学生党寒假余额也严重不足&#xff0c;光是想到复工、复学&#xff0c;是不是已经感到心情沉重、疲惫、乏力、头晕&#xff0c;好像身体被掏空&#xff1f;根据小编的经验&#xff0c;你可能中招了假期综合征。快来测测你有以下情况吗…

Eclipse - Formatter

Eclipse - Formatter References Window -> Preferences -> C/C -> Code Style -> Formatter BSD/Allman [built-in] or K& R [built-in] References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

工作中的得力助手

在这个快节奏的工作环境中&#xff0c;提高工作效率已经成为了每个人的当务之急。而工作实用软件无疑是成就这一目标的得力助手。在这海量软件中&#xff0c;我将为您推荐五款我个人认为最值得一试的软件&#xff0c;它们将为您提供全方位的工作支持&#xff0c;助您事半功倍。…

iPhone 16 组件泄露 揭示了新的相机设计

iPhone 16 的发布似乎已经等了很长一段时间&#xff0c;但下一个苹果旗舰系列可能会在短短 7 个月内与我们见面——而新的组件泄漏让我们对可能即将到来的重新设计有了一些了解。后置摄像头模块。 爆料者 Majin Bu&#xff08;来自 MacRumors&#xff09;获得的示意图显示&…

【Linux】进程的初步认识(二)

进程的初步认识 前言查看进程通过系统调用创建进程关于创建进程的几点补充 前言 之前的一篇文章(文章链接)已经初步对于进程有了一个认识&#xff0c;这篇文章主要是介绍如何去查看进程的相关信息以及创建一个进程的相关知识 查看进程 查看进程的信息可以在/proc系统文件夹中查…