第二十三篇:网络拥塞了,TCP/IP如何解决的?

  1. 一.显示拥塞通知

当发生网络拥塞时,发送主机应该减少数据包的发送量。作为IP上层协议,TCP虽然也能控制网络拥塞,不过它是通过数据包的实际损坏情况来判断是否发生拥塞。然而这种方法不能在数据包损坏之前减少数据包的发送量。

为了解决这个问题,人们在IP层新增了一种使用显式拥塞通知的机制,即ECN(Explicit Configuration Notification)。

ECN为实现拥塞通知的功能,将IP首部的TOS字段置换为ENC字段,并在TCP首部的保留位追加CWR标志和ECE标志。

ECN的机制概括起来就是在发送包的IP首部中记录路由器是否遇到拥塞,并在返回包的TCP首部中通知是否发生过拥塞。拥塞检查在网络层进行,而拥塞通知则在传输层进行,这两层的互相协助实现了拥塞通知的功能。

二. 通信质量控制

1、QOS产生的背景

网络的普及和业务的多样化使得互联网流量激增,从而产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。

所以,要在网络上开展这些实时性业务,就必须解决网络拥塞问题。

解决网络拥塞的最好的办法是增加网络的带宽,但从运营、维护的成本考虑,这是不现实的,最有效的解决方案就是应用一个“有保证”的策略对网络流量进行管理。

QoS技术就是在这种背景下发展起来的。QoS(Quality of Service)即服务质量,其目的是针对各种业务的不同需求,为其提供端到端的服务质量保证。

QoS是有效利用网络资源的工具,它允许不同的流量不平等的竞争网络资源,语音、视频和重要的数据应用在网络设备中可以优先得到服务。

QoS技术在当今的互联网中应用越来越多,其作用越来越重要。

2、QoS服务模型
1)Best-Effort服务模型

Best-Effort(尽力而为)是最简单的QoS服务模型,用户可以在任何时候,发出任意数量的报文,而且不需要通知网络。

提供Best-Effort服务时,网络尽最大的可能来发送报文,但对时延、丢包率等性能不提供任何保证。

Best-Effort服务模型适用于对时延、丢包率等性能要求不高的业务,是现在Internet的缺省服务模型,它适用于绝大多数网络应用,如FTP、E-Mail等。

2)IntServ服务模型

IntServ(综合服务)模型是指用户在发送报文前,需要通过信令(Signaling)向网络描述自己的流量参数,申请特定的QoS服务。

网络根据流量参数,预留资源以承诺满足该请求。在收到确认信息,确定网络已经为这个应用程序的报文预留了资源后,用户才开始发送报文。

用户发送的报文应该控制在流量参数描述的范围内。网络节点需要为每个流维护一个状态,并基于这个状态执行相应的QoS动作,来满足对用户的承诺。

IntServ模型使用了RSVP(Resource Reservation Protocol)协议作为信令,在一条已知路径的网络拓扑上预留带宽、优先级等资源,路径沿途的各网元必须为每个要求服务质量保证的数据流预留想要的资源,通过RSVP信息的预留,各网元可以判断是否有足够的资源可以使用。

只有所有的网元都给RSVP提供了足够的资源,“路径”方可建立。

3)DiffServ服务模型

DiffServ(差分服务)模型的基本原理是将网络中的流量分成多个类,每个类享受不同的处理,尤其是网络出现拥塞时不同的类会享受不同级别的处理,从而得到不同的丢包率、时延以及时延抖动。同一类的业务在网络中会被聚合起来统一发送,保证相同的时延、抖动、丢包率等QoS指标。

Diffserv模型中,业务流的分类和汇聚工作在网络边缘由边界节点完成。

边界节点可以通过多种条件(比如报文的源地址和目的地址、ToS域中的优先级、协议类型等)灵活地对报文进行分类,对不同的报文设置不同的标记字段,而其他节点只需要简单地识别报文中的这些标记,即可进行资源分配和流量控制。

与Intserv模型相比,DiffServ模型不需要信令。在DiffServ模型中,应用程序发出报文前,不需要预先向网络提出资源申请,而是通过设置报文的QoS参数信息,来告知网络节点它的QoS需求。

网络不需要为每个流维护状态,而是根据每个报文流指定的QoS参数信息来提供差分服务,即对报文的服务等级划分,有差别地进行流量控制和转发,提供端到端的QoS保证。

DiffServ模型充分考虑了IP网络本身灵活性、可扩展性强的特点,将复杂的服务质量保证通过报文自身携带的信息转换为单跳行为,从而大大减少了信令的工作,是当前网络中的主流服务模型。

3、基于DiffServ模型的QoS组成

本文介绍的QoS都是基于DiffServ服务模型的,基于Diffserv模型的QoS业务主要分为以下几大类:

① 报文分类和标记

要实现差分服务,需要首先将数据包分为不同的类别或者设置为不同的优先级。

报文分类即把数据包分为不同的类别,可以通过MQC配置中的流分类实现;

报文标记即为数据包设置不同的优先级,可以通过优先级映射和重标记优先级实现。

② 流量监管、流量整形和接口限速

流量监管和流量整形可以将业务流量限制在特定的带宽内,当业务流量超过额定带宽时,超过的流量将被丢弃或缓存。

其中,将超过的流量丢弃的技术称为流量监管,将超过的流量缓存的技术称为流量整形。

接口限速分为基于接口的流量监管和基于接口的流量整形。

③ 拥塞管理和拥塞避免

拥塞管理在网络发生拥塞时,将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序;拥塞避免可以监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载。

其中,报文分类和标记是实现差分服务的前提和基础;流量监管、流量整形、接口限速、拥塞管理和拥塞避免从不同方面对网络流量及其分配的资源实施控制,是提供差分服务的具体体现。

各种QoS技术在网络设备上的处理顺序如下图所示。

上述QoS技术在网络中的位置如下图所示。

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

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

相关文章

Kubernetes 深度解读:从容器到容器云的奇幻之旅

《Kubernetes 深度解读:从容器到容器云的奇幻之旅》 在当今数字化的时代,应用程序的部署和管理面临着越来越多的挑战。大规模直接使用容器会遇到下面几个问题: 问题一:如何高效管理大量容器? 随着容器技术的广泛应用,企业可能会面临管理成百上千个容器的情况。想象一下…

在 Ubuntu 上安装 Whisper 支撑环境(ffmpeg、PyTorch)的教程(2024亲测可用)

在 Ubuntu 上安装 Whisper 的教程 以下是如何在 Ubuntu 系统上安装 Whisper 以进行视频转录的详细步骤。 步骤 1:更新系统 首先更新你的 Ubuntu 系统,确保安装最新的软件包: sudo apt update && sudo apt upgrade -y步骤 2&#…

Python 将Word, Excel, PDF和PPT文档转换为OFD格式

目录 使用工具 Python 将Word文档转换为OFD Python 将Excel文档转换为OFD Python 将PDF文档转换为OFD Python 将PPT文档转换为OFD OFD(Open Fixed-layout Document)是中国国家标准的电子文档格式,主要用于政府、金融等行业的正式文档传输…

R语言手工实现主成分分析 PCA | 奇异值分解(svd) 与PCA | PCA的疑问和解答

几个问题: pca可以用相关系数矩阵做吗?效果比协方差矩阵比怎么样?pca做完后变量和样本的新坐标怎么旋转获得?pca做不做scale和center对结果有影响吗?pca用因子分解和奇异值分解有啥区别?后者怎么获得变量和样本的新坐标?1. 用R全手工实现 PCA(对比 prcomp() ) 不借助包…

【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF

未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …

使用libssh2上传下载文件及Makefile编写

使用libssh2上传下载文件及Makefile编写 一、准备工作二、上传和下载文件三、编写Makefilelibssh2是一个开源的SSH库,用于在C/C++程序中实现SSH2协议的功能。通过libssh2,我们可以方便地进行远程登录、执行命令、上传和下载文件等操作。本文将详细介绍如何使用libssh2库上传和…

Django发送邮件代理服务器配置

根路由下配置 MAIL_BACKEND django.core.mail.backends.smtp.EmailBackend EMAIL_HOST smtp.qq.com EMAIL_HOST_USER 66897079qq.com EMAIL_HOST_PASSWORD aavlzhzvqorbcahcEMAIL_PORT 465 EMAIL_USE_SSL True发送邮件 message "<p>尊敬的用户您好&#xff…

《基于FreeRTOS的STM32超声波智能避障平衡小车,实现了小车的自平衡、超声波避障以及通过智能手机远程控制的功能》+源代码+文献资料+文档说明

文章目录 源代码下载地址项目介绍项目整体框架环境数据采集进程MPU6050简介如何获得这些数据&#xff1f;配置管脚 MPU6050的eMPL库MPU6050宏定义 小车PID控制进程电机的分类MC3386电机驱动芯片管脚配置 正交码盘与STM32正交编码器管脚配置 超声波测距模块HC-SR04超声波测距模块…

#444到1092

测试同学反馈根据id&#xff08;整形&#xff09;查询输入#444查询时返回了id1092数据。     一个很简单的查询操作&#xff0c;怎么会出现这么无厘头的结果。看了下代码就是简单的等值查询&#xff0c;后端用Long进行接收。然后看请求日志&#xff0c;日志记录id1092&#x…

【网易云音乐】--源代码分享

最近写了一个网易云音乐的音乐实现部分&#xff0c;是通过JavaScript和jQuery实现的&#xff0c;具体效果大家可以参照下面的视频 源代码分享 - git地址: 网易云音乐源代码 下面将着重讲解一下音乐实现部分 视频有点模糊&#xff0c;不好意思&#xff0c;在b站上添加视频的时候…

全能PDF工具集 | PDF Shaper Ultimate v14.6 便携版

软件简介 PDF Shaper是一款功能强大的PDF工具集&#xff0c;它提供了一系列用于处理PDF文档的工具。这款软件使用户能够轻松地转换、分割、合并、提取页面以及旋转和加密PDF文件。PDF Shaper的界面简洁直观&#xff0c;使得即使是新手用户也能快速上手。它支持广泛的功能&…

基于Nodemcu的手机控制小车

基于Nodemcu的手机控制小车 一、项目说明二、项目材料三、代码与电路设计四、轮子和车体五、电路连接六、使用方法 一、项目说明 嗨&#xff0c;机器人项目制造者们&#xff01;在这个项目中&#xff0c;我制作了这辆简单但快速的遥控车&#xff0c;它可以通过智能手机控制&am…

yum仓库安装rabbitmq

yum仓库安装rabbitmq 1、配置yum仓库 vim /etc/yum.repos.d/rabbitmq.repo # In /etc/yum.repos.d/rabbitmq.repo## ## Zero dependency Erlang ##[rabbitmq_erlang] namerabbitmq_erlang baseurlhttps://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck1 gpg…

智能生成ppt软件哪个好?如何高效生成ppt?

想要快速制作出专业且吸引人的PPT演示文稿吗&#xff1f;ai智能生成ppt工具可以帮你实现这一目标。 无需复杂的设计技巧&#xff0c;也不必花费大量时间&#xff0c;只需几个简单的步骤&#xff0c;就能创造出令人印象深刻的演示文稿。下面是一份免费版教程&#xff0c;让你轻…

PyCharm+ssh跳板机+服务器

PyCharmssh跳板机服务器 文章目录 PyCharmssh跳板机服务器准备工作登录服务器查看CUDA查看conda创建虚拟环境 前言配置ssh免密登录设置ssh隧道配置pycharm测试第一种第二种 服务器空闲查询传输数据 准备工作 登录服务器 直接ssh连接就行,在终端(命令行)直接输入下面命令: 跳…

K8s-services+pod详解1

一、Service 我们能够利用Deployment创建一组Pod来提供具有高可用性的服务。 虽然每个Pod都会分配一个单独的Pod IP&#xff0c;然而却存在如下两问题&#xff1a; Pod IP 会随着Pod的重建产生变化Pod IP 仅仅是集群内可见的虚拟IP&#xff0c;外部无法访问 这样对于访问这…

基于Python Django的在线考试管理系统

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

线程基础学习

线程的实现 通过实现Runnable接口的方式&#xff0c;实现其中的run方法。继承Thread类&#xff0c;然后重写其中的run方法。通过线程池创建线程&#xff0c;默认采用DefaultThreadFactory。有返回值的callable&#xff0c;实现callable接口&#xff0c;实行call方法。 本质上…

Linux 用户和用户组管理详解

文章目录 Linux 用户和用户组管理详解用户和用户组概念 添加和删除用户添加用户删除用户 用户组管理添加用户组删除用户组将用户加入用户组 禁用和启用用户临时禁用用户恢复用户 显示用户和组信息高级用户管理批量删除组内用户配置 sudo 权限 用户和用户组的配置文件用户的 UID…

【Linux-基础IO】软硬链接+动静态库

一、软硬链接 见一见 软连接 硬连接 通过观察我们发现以下几点&#xff1a; 1.ll - i后&#xff0c;软连接形成的文件有指向&#xff0c;并且软连接的Inode编号与对应文件的Inode编号不一样 2.ll - i后&#xff0c;硬连接形成的文件与对应的文件Inode编号一样 3.软连接…