<计算机网络自顶向下> TCP拥塞

news2024/9/20 2:43:55

目录

TCP拥塞控制机制

TCP拥塞感知

TCP速率控制方法

 TCP拥塞控制和流量控制的联合动作

TCP拥塞控制策略

 TCP吞吐量

 TCP公平性


TCP拥塞控制机制

  • 端到端的拥塞控制机制
    • 路由器不向主机提供有关拥塞的反馈信息

      路由器负担较轻

      符合网络核心简单的TCP/IP架构原则

    • 端系统根据自身得到的信息判断是否发生拥塞,从采取动作
  • 拥塞控制的问题
    • 如何检测拥塞

      轻微拥塞

      拥塞

    • 控制策略

      在拥塞发送时如何动作,降低速率:轻微拥塞和拥塞的时候如何降低

      在拥塞缓解的时候如何动作,增加速率

TCP拥塞感知

发送端如何探测到拥塞

  • 某个段超时了:拥塞
    • 超时时间到,某个段的确认没有来(一旦超时,就认为拥塞了,有一定误判,但是总体控制方向是对的)

      原因1:网络拥塞(某个路由器缓冲区没空间了,被丢弃)概率大

      原因2:出错被丢弃了(传输过程中受到干扰,没有通过校验,被丢弃)概率小

  • 有关某个段的3次重复ACK:轻微拥塞(后三个是正常到的,相当于发出去4个堵了1个,说明轻微拥塞了)
    • 段的第1个ACK,正常,确认吕端,期待红段
    • 段的第2个重复ACK,意味着红段的后一段收到了,蓝段乱序到达
    • 短的第2,3,4个ACK重复意味着红段的后第2,3,4个段收到了,橙段乱序到达,同时红段丢失的可能性很大

TCP速率控制方法

  • 如何控制发送端发送的速率
    • 维持一个拥塞窗口的值:CongWin
    • 发送端限制已发送但是未确认的数据量(的上限):
      传输的最后一个字节序号 - 最后一个接收的字节序号 <= CongWin
    • 从而粗略的控制发送方的网络中注入的速率

    • CongWin是动态的,是感知到的网络拥塞程度的函数

      • 超时或者三个重复ACK,CongWin

        超时:CongWin降低为1MSS,进入SS(Slow Start)阶段然后再倍增到CongWIN/2(每个RTT),从而进入CA(Congestion Avoidance)阶段(是超时的话就先把窗口降到1MSS,然后每一个RTT翻倍,直到到达原窗口的一半,开始每个RTT增加1MSS)

        3个重复ACK:CongWin降为CongWin/2,CA阶段

      • 否则(正常收到ACK,没有发送以上情况):CongWIn跃跃欲试

        SS阶段:加倍增加(每个RTT)

        CA阶段:线性增加(每个RTT)

 TCP拥塞控制和流量控制的联合动作

  • 拥塞窗口值决定了由于拥塞控制的因素,发送方一次可以向网络当中在未经确认的情况下网网络当中注入字节的数量。
  • 对方接收窗口告诉发送方在未经确认的情况下可以向对方发送多少字节,到了对方一定有缓冲区可以把它存下,从而满足流量控制的目的(共享缓冲区是通过网络发送的)。
  • 这两个值的最小值决定了发送方一次在未确认的情况下可以往网络当中注入字节的数量。几满足了流量控制的要求,又满足了拥塞控制的要求。简单来说就是拥塞窗口大小和空闲缓冲区大小取一个最小值作为一次性可以注入的字节量

TCP拥塞控制策略

  • 慢启动(SS)
    • 在 TCP 连接刚刚建立时,拥塞窗口(Congestion Window,CongWin)通常会初始化为一个较小的值
    • 每收到一个确认,拥塞窗口值+1,从而每个RTT拥塞窗口值加倍
    • 这样子指数型额的增加必定会导致拥堵

  • AIMD(Additive Increase, Multiplicative Decrease)
    • 乘性减
      • 丢失时间以后将CongWin降低为1,将CongWin/2作为阈值,进入慢启动阶段
    • 加性增
      • 当CongWin>阈值的时候,如果一个RTT没有发生丢弃事件,将CongWin+1MSS;探测
    • 当收到3个冗余的ACK
      • CongWin减半,窗口(缓冲区大小)之后线性增长
    • 当超时时间发生的时候
      • CongWin被设置为1MSS,进入SS阶段
      • 之后窗口指数增长
      • 增长到一个阈值(上次发生拥塞的窗口的一半)的时候再线性增加

思路:三个重复的ACK表示网络还有一定的段传输能力,超时之前的3个重复的ACK表示“警报”

  • 超时事件后的保守策略
    • 将指数型增长变成线性的时候:在超时之前,当CongWin变成上次发生超时的窗口的一半
    • 实现
      • 变量:Threshold
      • 出现丢失:Threshold设置为CongWin的1/2

下面收到三个冗余ACK后除二,加三的原因是有三个冗余ACK,遇见一个加一

 

 TCP吞吐量

  • 假设拥塞窗口为w
  • 拥塞控制让他从w/2值到w变化,所以平均吞吐量(ss时间比较短所以忽略ss阶段)

(3w/2) /2*RTT=3w/4RTT

 TCP公平性

  • 如果有两个主机对分享了一个瓶颈的链路限制了主机和主机之间的通讯的带宽,每对主机会获得1/n的带宽

  • 为什么TCP是公平的(大致公平)
    • 两个竞争的TCP会话
      • 加性增加,斜率为1,吞吐量增加
      • 乘性减,吞吐量比例减少
      • 假设起初是不公平的:因为二者没有充分使用带宽所以开始进入拥塞避免阶段(ss时间太短,忽略),最后因为有缓冲队列的存在,会有一段时间x+y>R,最终A到A‘和B到B‘都会拥塞,然后就会RTT拥塞窗口减半,最终二者占用链路将趋于相等

 

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

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

相关文章

【github主页】优化简历

【github主页】优化简历 写在最前面一、新建秘密仓库二、插件卡片配置1、仓库状态统计2、Most used languages&#xff08;GitHub 常用语言统计&#xff09;使用细则 3、Visitor Badge&#xff08;GitHub 访客徽章&#xff09;4、社交统计5、打字特效6、省略展示小猫 &#x1f…

浅谈命理学的男女婚姻篇

对于中国人来说&#xff0c;八字预测已成为生活中不可缺少的组成部分&#xff0c;不懂八字预测&#xff0c;就不会真正了解中国的传统文化。八字预测经历几千年的风风雨雨&#xff0c;是一种古老的中国命理学&#xff0c;通过生辰八字的天干地支的组合&#xff0c;可以推测一个…

[阅读笔记21][RA-CM3]Retrieval-Augmented Multimodal Language Modeling

这篇论文是meta联合斯坦福在23年4月发表的论文&#xff0c;提出了一个使用外部知识检索增强的多模态模型。 这篇模型提出的RA-CM3模型是第一个能够检索并生成图像文本的多模态模型&#xff0c;在图像文本生成任务上优于现有的多模态模型&#xff0c;同时使用更少的训练量。 RA-…

模型 框架效应

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。部分真相不等于真相。 1 框架效应的应用 1.1 框架效应在营销策略上的应用 亚洲航空公司面临的挑战是如何在竞争激烈的航空市场中吸引更多的顾客&#xff0c;并提高机票的预订率。这家低成本航空公司…

2.Vue简介

Vue简介 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;V…

Scala的函数至简原则

对于scala语言来说&#xff0c;函数的至简原则是它的一大特色。下面让我们一起来看看分别有什么吧&#xff01; 函数至简原则&#xff1a;能省则省&#xff01; 初始函数 def test(name:String):String{return name }1、return可以省略&#xff0c;Scala会使用函数体的最后一…

排序算法集合

912. 排序数组 趁着这道题总结下排序方法 1.快速排序 算法描述 1.从数列中挑出一个元素&#xff0c;称为"基准"&#xff08;pivot&#xff09;&#xff0c; 2.重新排序数列&#xff0c;所有比基准值小的元素摆放在基准前面&#xff0c;所有比基准值大的元素摆在基…

网络安全基础技术-常见web漏洞之XSS跨站脚本攻击

首先&#xff0c;我们来探究XSS&#xff08;跨站脚本攻击&#xff09;的基本概念。简而言之&#xff0c;这种攻击方式涉及将用户的输入错误地作为前端代码执行。在Web应用领域&#xff0c;前端代码通常由HTML、CSS和JavaScript三大构件组成&#xff1a; HTML&#xff08;超文本…

力扣HOT100 - 19. 删除链表的倒数第N个节点

解题思路&#xff1a; 链表题目&#xff1a;哑节点、栈、快慢指针&#xff08;双指针&#xff09; 方法一&#xff1a;计算链表长度 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dum new ListNode(0, head);int len getLen(head);…

binary tree Leetcode 二叉树算法题

144.二叉树的前序遍历 前序遍历是&#xff1a;根-左-右 所以记录序列的的时候放在最前面 递归 class Solution {List<Integer> ans new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {if(root null) return ans;ans.add(root…

书生·浦语大模型实战营Day05作业

作业 基础作业 完成以下任务&#xff0c;并将实现过程记录截图&#xff1a; 配置 LMDeploy 运行环境: 书生浦语大模型实战营Day05LMDeploy实践 以命令行方式与 InternLM2-Chat-1.8B 模型对话: 书生浦语大模型实战营Day05LMDeploy实践 进阶作业 完成以下任务&#xff0c;并将…

PCIe总线-PCIe配置空间介绍(三)

1.概述 配置空间是PCIe设备/桥的标识符&#xff0c;其保存了设备/桥的信息。主机在枚举设备/桥的时候需要先访问配置空间&#xff0c;获取设备厂家、型号、类型、所需资源等信息&#xff0c;然后再分配资源&#xff0c;最后才能访问PCIe设备的存储或IO地址空间。PCIe总线规定了…

JavaScript之分时函数、分时间段渲染页面、提高用户体验、参数归一化、高阶函数、分段、appendChild、requestIdleCallback

MENU 前言效果图html原始写法优化方式一(参数归一化)优化方式二(当浏览器不支持requestIdleCallback方法的时候)优化方式三(判断环境) 前言 当前需要向页面插入十万个div元素&#xff0c;如果使用普通的渲染方式&#xff0c;会造成延迟。这时候就需要通过分时函数来实现渲染了。…

【R数据分析-基础】

R语言介绍 为什么使用R&#xff1f; R&#xff1a;数据分析与可视化平台 R的获取和安装 http://cran.r-project.org 免费下载 一、R、Rtools安装 R语言&#xff1a; 免费开源 支持多平台&#xff0c;包括Windows、UNIX、Mac OS 擅长统计与可视化 Rtools&#xff1a;R语言…

Android安卓写入WIFI热点自动连接NDEF标签

本示例使用的发卡器&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/网址/海报-淘宝网 (taobao.com) package com.usbreadertest;import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.EditText; impo…

C++从入门到出门

C 概述 c 融合了3中不同的编程方式&#xff1a; C语言代表的过程性语言C 在C语言基础上添加的类代表的面向对象语言C 模板支持的泛型编程 1、在c语言中头文件使用扩展名.h,将其作为一种通过名称标识文件类型的简单方式。但是c得用法改变了&#xff0c;c头文件没有扩展名。但是…

大数据平台搭建2024(二)

二&#xff1a;Hive安装 只在node01上操作 1 安装MySQL 8.0 最小化安装需要安装这个 yum install -y wget1-1 下载MySQL的yum源 wget http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm检查是否安装成功 rpm -qpl mysql80-community-release-el7-7.n…

[Collection与数据结构] 二叉树(三):二叉树精选OJ例题(下)

1.二叉树的分层遍历 OJ链接 上面这道题是分层式的层序遍历,每一层有哪些结点都很明确,我们先想一想普通的层序遍历怎么做 /*** 层序遍历* param root*/public void levelOrder1(Node root){Queue<Node> queue new LinkedList<>();queue.offer(root);while (!qu…

《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制伊甸火山3D网格曲面图

11.4.2小节我们使用3D曲面图可视化分析伊甸火山数据&#xff0c;本小节我们采用3D网格曲面图可视化分析伊甸火山数据&#xff0c;以展示其地形&#xff0c;具体示例代码如下。 购书地址&#xff1a;https://item.jd.com/14102657.html