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

2024-04-21 13:44

本文主要是介绍<计算机网络自顶向下> TCP拥塞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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拥塞窗口减半,最终二者占用链路将趋于相等

 

这篇关于<计算机网络自顶向下> TCP拥塞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923231

相关文章

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

linux下TCP/IP实现简单聊天程序

可以在同一台电脑上运行,在一个终端上运行服务器端,在一个终端上运行客户端。 服务器端的IP地址要和本地的IP相同,并分配端口号,客户端的默认设置为本地,端口号自动分配。 服务器端: #include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.

JAVAEE初阶第七节(中)——物理原理与TCP_IP

系列文章目录 JAVAEE初阶第七节(中)——物理原理与TCP_IP 文章目录 系列文章目录JAVAEE初阶第七节(中)——物理原理与TCP_IP 一.应用层重点协议)1. DNS2 .NAT3. NAT IP转换过程 4 .NAPT5. NAT技术的缺陷6. HTTP/HTTPS7. 自定义协议 二. 传输层重点协议 1 .UDP协议 2.1.1 UDP协议端格式 2.1.2 UD

深入理解TCP通信

这大概是自己博客上面第三次写TCP通信demo了,总是写同样的内容也不太好啊,不过每一次都比前一次进步一点。这次主要使用了VIM编辑工具、gdb调试、wireshirk、netstat查看网络状态。 参考《C++服务器视频教程》、《Unix网络编程》 一、VIM常用命令 vim server.cpp #打开一个文件:w 写入文件:wq 保存并退出:q! 不保存退出显示行号

浏览器工作原理(3)-TCP协议文件如何从服务器到浏览器

浏览器工作原理-TCP协议,文件如何从服务器到浏览器 本周继续学习浏览器工作原理及实践,本次内容来看一下TCP协议确保文件完整的送到至浏览器 First Page 是指页面加载到首次开始绘制的时长,而影响这个性能指标的一个重要原因是网络加载速度,网络传输协议无论使用http还是websocket,都是基于TCP/IP的,所以有必要了解一下TCP/IP,对于web的性能调优和问题定位都有很