运输层:TCP拥塞控制

news/2024/11/16 2:52:43/

1.运输层:TCP拥塞控制

笔记来源:
湖科大教书匠:TCP的拥塞控制

声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考

网络资源:在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等

拥塞:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。

输入负载与吞吐量的关系

拥塞控制的三个算法:慢开始、拥塞避免、快重传、快恢复

发送窗口swnd、拥塞窗口cwnd、慢开始门限值ssthresh

1.1 慢开始

每个传输轮次结束后,拥塞窗口按指数值增长

执行慢开始算法,发送方每收到一个报文段的确认时,就把拥塞窗口cwnd+1,然后开始下一轮传输,当cwnd = ssthresh时,改为执行拥塞避免算法

收到报文段确认后,拥塞窗口cwnd+1,cwnd变为2

发送窗口swnd=2(swnd=cwnd),现在可以发送接下来的2个报文段了(1 ~ 2号报文段)

cwnd=2+2=4(收到2个报文段确认),发送窗口swnd=4(swnd=cwnd),现在可以发送接下来的4个报文段了(3 ~ 6号报文段)

接下来情况如上所示
直到cwnd达到16,发送窗口swnd=16,可以发送15 ~ 30号报文段,由于cwnd等于慢开始门限值ssthresh,所以下一轮传输要使用拥塞避免算法

1.2 拥塞避免

每个传输轮次结束后,拥塞窗口线性增长

cwnd=16+1=17,swnd=cwnd

可以发送接下来17个报文段(31 ~ 47号)

发送方收到确认报文段,收到后cwnd+1

经过多次传输后,若cwnd=24,swnd=cwnd时发送的171 ~ 194号报文段丢失,触发超时重传

触发超时重传,判断网络出现拥塞
ssthresh = 发送拥塞时的cwnd / 2
重置cwnd=1,重新执行慢开始算法


小总结1.1和1.2

1.3 快重传

快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失

1.要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认:
2.即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
3.发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。

1.4 快恢复

发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法

发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法。

1.5 小总结

慢开始拥塞窗口cwnd指数增长,当cwnd达到ssthresh时,之后采用拥塞避免,拥塞窗口cwnd线性增长每次加一,出现超时重传后,ssthresh减少为原来的一半,拥塞窗口cwnd重置为1,重新开始传输,经历慢开始算法、拥塞避免算法后,若收到3个重复确认,则执行快重传,ssthresh减少为原来的一半,之后快恢复,cwnd重置为这个ssthresh值,随后执行拥塞避免算法

1.6 例题


http://www.ppmy.cn/news/724923.html

相关文章

[高通SDM450][Android9.0]默认取消dm-verity以及解决OTA校验vbmeta失败问题

文章目录 开发平台基本信息问题描述解决方法 关闭dm-verity引发的问题 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 在user版本增加root权限之后,每次进行remount的时候,总会提示 remount of the / superblock failed…

高通SDM450韦根数据输入过快导致数据丢失问题分析处理

问题: 两款产品都有韦根输入功能,这两款产品分别使用的是SDM450和MSM8953平台,韦根输入的驱动采用同一个,当外部输入韦根数据的时间间隔速度在1ms以内的情况下,SDM450平台会出现概率性丢失数据,而msm8953平台确没有丢…

[高通SDM450][Android9.0]CTA认证--Android6.0以下应用默认不授权

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 设备在进行入网认证的时候,实验室要求应用在使用特殊权限的时候,需要告知用户,要用户授权才能使用相应的权限&…

高通SDM450 主屏mipi转EDP

主屏通过lt8911exb 将mipi信号转换成EDP信号输出,调试从大的方向上看,主要是两方面,一个是bootloader阶段的lt8911exb初始化,为了让现实过程更完整,需要在lk的display init之前就要将lt8911exb准备好.当lt8911exb准备好…

[高通SDM450][Android9.0]debug串口转通用串口

文章目录 开发平台基本信息问题描述解决方法debug口转普通串口补丁 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 由于硬件起初设计的时候,没有预留通用串口,而usb转串口又不是特别稳定,经常会挂死&#xf…

[高通SDM450][Android9.0]同一套代码兼容不同的emmc

文章目录 开发平台基本信息问题描述解决方法1. 如何计算userdata分区大小2. 兼容不同规格的emmc3.MTP模式显示异常 开发平台基本信息 芯片: SDM450 版本: Android 9.0 kernel: msm-4.9 问题描述 一款设备,经常会出现搭配不同内存的情况,比如216跟464&…

高通SDM450平台配置SPI0接口

一、查看原理图,需要将GPIO_0、GPIO_1、GPIO_2、GPIO_3配置成SPI接口 二、查看安SDM450平台的数据手册,文档号:80-PC173-1,查看相关的手册可知,GPIO_0、GPIO_1、GPIO_2、GPIO_3可以复用成SPI1, 三、查看高通的文档号&a…

高通SDM450平台的LDO 输出与电压调节

开始之前,首先我们要知道什么是LDO?有什么作用?LDO调试需要调哪些? 什么是LDO,有什么作用? LDO为 低压线性稳压器,高通平台有多路LDO电压输出,以SDM450 为例 共有 LDO1~LDO23 23路。用于给外设提供电源。 LDO需要调什么? LDO的调试主要 有 打开和关闭 LDO电压 和 …