【计算机网络复习】第三章 传输层 3

news2025/3/9 10:50:30

拥塞

网络边缘主机发送到网络中的负载超出了网络的承载能力,即导致拥塞

u 网络拥塞的特征

Ø 时延增大

由于在路由器缓存中排队而导致

Ø 数据包丢失

由于路由器的缓存溢出而导致

u 随着网络负载的增加

Ø 传输时延增大

Ø 吞吐量下降

拥塞控制:开环方法

u 通过对于传输协议的精心设计来避免拥塞

u 和拥塞控制相关的策略

Ø 重传策略:合理设计超时定时器

Ø 滑动窗口协议:选择重传ARQ 比连续ARQ协议更有助于避免拥塞;

Ø ACK策略:捎带确认或者累积ACK可以减少网络负载;

Ø 丢弃策略:对于某些应用(例如话音业务),适量丢弃数据包;

Ø 接纳控制(Admission control):在建立连接时可以使用接纳控制来限制源主机的发送速率,以避免拥塞。

拥塞控制方法:闭环方法

检测拥塞,在可能出现拥塞时,调整主机的发送速率以避免或缓解拥塞

TCP拥塞控制方法

u 端到端的拥塞控制

Ø 发送端检测拥塞,通过减少拥塞窗口长度来降低发送数据率

u 拥塞窗口(cwnd)

Ø 由发送端维护的一个变量

Ø 表示最多可以向网络中发送的字节数

u 发送端的发送窗口长度

Ø Min (接收窗口, 拥塞窗口)

u 有效发送窗口长度

u 定时器超时或收到3个重复ACK时,即认为有数据丢失

u 发送端随即降低发送速率(降低cwnd)

慢启动(Slow Start)阶段

u 启动速率很低

u TCP连接建立时, 拥塞窗口 = 1 MSS

Ø 示例: MSS = 1000 字节, RTT = 200 ms

Ø 启动速率 = 5k 字节/

u 按指数级增加发送速率,直至发现数据丢失

Ø 每收到1ACKcwnd+1

Ø 每一轮发送(窗口内的数据全部发完),cwnd增加为原来的2

u 增长到何时?

Ø 达到一个预先设定的阈值

Ø 或者,出现数据丢失

 

拥塞避免(CA)阶段

拥塞窗口达到阈值

Ø 降低发送速度的增长,按线性增长

Ø AI: Additive Increase,按加法增长

Ø 每收到一个ACK, 

 

Ø 一轮结束,cwnd+1

u 增长到何时?

Ø 出现数据丢失

 

出现数据丢失:MD

u MDMultiplicative Decrease,按乘法减小

u 出现重发定时器超时

Ø 阈值=当前拥塞窗口的一半

Ø 拥塞窗口减为1

Ø 开始新的“慢启动”

u 收到3次重复的ACK

Ø 阈值=当前拥塞窗口的一半

Ø 拥塞窗口=阈值

Ø 开始新的AI,快速恢复

依据:

3个重复ACK表示网络还能够传输一些报文段;定时器超时则表示拥塞告警

 

快速重传机制

u 超时重传等待时间过长

Ø 传输效率低

u 快速重传:通过收到重复的ACK来发现报文段丢失

Ø 在报文段丢失时,发送端往往会收到多个重复的ACK

Ø 如果发送端收到3个重复的ACK,则立刻重传对应的报文段,而不必等待定时器超时

 

TCP拥塞控制策略小结

u 在拥塞窗口大小cwnd未达到阈值之前,发送端处于慢启动阶段,窗口按指数级增长

u cwnd达到阈值之后,发送端处于拥塞避免阶段,窗口按线性增长

u 当收到3个重复的ACK,新阈值=cwnd/2 cwnd=新阈值

u 定时器超时,新阈值=cwnd/2 cwnd =1

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

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

相关文章

ptuning v2 的 chatglm垂直领域训练记录

thunlp chatglm 6B是一款基于海量高质量中英文语料训练的面向文本对话场景的语言模型。 THUDM/ChatGLM-6B: ChatGLM-6B:开源双语对话语言模型 | An Open Bilingual Dialogue Language Model (github.com) 国内的一位大佬把chatglm ptuning 的训练改成了多层多卡并…

Spring 事务

目录 一、事务简介 二、在Spring中实现事务 编程式事务 声明式事务 三、事务的传播机制 一、事务简介 事务:就是将一组操作封装成为一个整体执行单元,要么全部执行,要么都不执行。 假如事务执行了一半发生了错误就会对已经执行的部分进…

Linux嵌入式学习之Ubuntu入门(三)用户、用户组及文件权限

系列文章目录 一、Linux嵌入式学习之Ubuntu入门(一)基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等 文章目录系列文章目录用户与用户组创建用户和用户组图形化创建命令创建文件…

【人工智能】— 逻辑Agent、一般逻辑、Entailment 蕴涵、命题逻辑、前向链接、反向链接、Resolution归结

【人工智能】— 逻辑Agent、逻辑智能体Knowledge bases一个简单的基于知识的智能体一般逻辑Entailment 蕴涵Models模型蕴涵与推理命题逻辑逻辑连接词枚举推理有效性可满足性推导和证明霍恩子句Forward chaining 前向链接Proof of completeness(完备性)Ba…

QT学习开发笔记(项目实战之智能家居物联网项目1 )

智能家居物联网项目 本章介绍使用 Qt 开发智能家居中的一个物联应用。简单直白的说就是通过云服务器远程控 制设备(与设备通信等)。本章可以直接做毕设,是毕设物联网项目的一大福音!本章将实现远 程点亮开发板 LED 作为一个项目实…

springboot从2.1.3升级到2.3.5后控制台自动输出http请求日志RequestResponseBodyMethodProcessor

springboot从2.1.3升级到2.3.5后控制台自动输出http请求日志RequestResponseBodyMethodProcessor和RequestMappingHandlerMapping推荐使用第二个方案简单 明了 方便 快捷方案一第一步定义TurboFilter第二步配置logback方案二 直接配置logback的配置XML推荐使用第二个方案简单 明…

Insomnia 简单使用方法

文章目录1. 新建工程2. 新建若干文件夹3. 设置环境变量4. 授权以及进行请求的链式调用 (chaining requests)4. 1 解决办法 14. 2 解决办法 2Insomnia 同 Postman, 用于测试后端 endpoint,很容易使用。使用步骤如下:1. 新建工程 2. 新建若干文…

字节跳动软件测试面试过了,起薪20k

普通二本计算机专业毕业,从毕业后,第一份接触测试的工作是在一家通讯小公司,大部分接触的工作是以功能测试为主,一直都是几千块钱工资,还一度被派出差,以及兼职各种产品、运维、运营的活,感觉自…

四十五、docker之nginx手动部署前端项目

nginx的作用: 一、静态文件服务器和反向代理django服务 django框架中的静态文件服务只在开发调试时提供服务,当以生产模式运行时需要将静态文件部署到静态文件服务器上。 1. 收集django项目中的静态文件 在配置文件中配置STATIC_ROOT 我们在我的项目…

如何在低代码平台上构建ERP软件?

ERP软件是企业管理日常运营需求的关键组件。然而,对于许多企业,尤其是资源有限的企业来说,尝试构建和管理ERP平台可能要担负较高的成本的。幸运的是,低代码平台可以使这个过程变得容易得多。今天我们来解释如何在低代码平台上构建…

细粒度软件缺陷预测模型构建方法

在软件缺陷预测领域,粒度指的是缺陷库中每条样本的项目粒度.其中可以分为类粒度、文件粒度或者包粒度等。不同的开发语言有不同的层级的模块粒度,在软件缺陷预测领域,一般来说,在预测效果能够满足要求的情况下,粒度越小…

map容器(重要)

1、map容器简介 Map容器中所有的元素都会根据元素的键值自动实现排序。Map中所有的元素都是pair,pair的简介 同时拥有实值和键值,而前面的 set 只是拥有 键值,pair 中的 第一个元素是键值,而第二个值是 实值。Map 中是不允许有两…

Maven的进阶操作

系列文章目录 Maven进阶操作的学习 文章目录系列文章目录前言一、分模块开发与设计二、依赖管理1.依赖传递2.可选依赖3.排除依赖三、继承与聚合1.聚合2.继承四、属性1.属性2.版本管理五、多环境配置与应用1.多环境开发2.跳过测试六、私服1.私服简介2.私服仓库分类3.资源上传与…

IDEA的基本使用

IDEA的基本使用IDEA的基本使用1 IDEA概述2 IDEA的下载和安装2.1 下载2.2 安装3 IDEA中层级结构介绍3.1 结构分类3.2 结构介绍project(项目、工程)module(模块)package(包)class(类)3…

C#基础学习--委托

委托 什么是委托 可以认为委托是持有一个或多个方法的对象。 委托和类一样,是一种用户自定义的类型。但类表示的是数据和方法的集合,而委托则持有一个或多个方法,以及一系列预定操作。 可以通过一下擦欧总来使用委托: 可以把d…

度量,我们如何以终为始,以始为终?

你好,我是黄俊彬。 很多时候在研发过程中,我们都习惯性地用“拍脑袋”的方式来看待一个事情。例如这个代码写得不好、这个自动化测试覆盖不充分、版本的发布频率太差了等等。往往只知道哪里有问题,但是却不知如何去找出根因,真正…

14、MyBatis-Plus入门到进阶

1、Mybatis的问题 【简介】: 每个实体类对应一个实体类,对应一个mapper接口,对应一个mapper.xml文件,每个mapper接口都有重复的crud方法,每一个mapper.xml都有重复的crud的sql配置。 2、Mybatis-plus简介 1、官网 Mybatis-plusMybatis-plus 2、MyBatis是什么&a…

JS常用字符串方法

📝个人主页:爱吃炫迈 💌系列专栏:数据结构与算法 🧑‍💻座右铭:道阻且长,行则将至💗 文章目录移除字符串首尾空白符trim()trimStart()trimEnd()获取字符串指定位置的值ch…

记2023第十四届蓝桥杯感受

弱校ACM队员,曾获CB国二,CG国优第六。(我是fw) ------------------------------------------------------------------------分割线 2023.04.09 今年再次参加CG组,估计g了,盲猜一波省二前排,出…

基于BenchmarkSQL的Oracle数据库tpcc性能测试

基于BenchmarkSQL的Oracle数据库tpcc性能测试安装BenchmarkSQL及其依赖安装软件依赖编译BenchmarkSQLBenchmarkSQL props文件配置数据库用户配置BenchmarkSQL压测装载测试数据TPC-C压测(固定事务数量)TPC-C压测(固定时长)生成测试…