TCP的拥塞控制
2023-09-14 09:06:46 时间
如上图所示很好的显示了TCP拥塞控制的算法流程
发送方的发送窗口=min【拥塞窗口,接收端的接收窗口(该窗口可由接收方在交互中动态调整)】
慢开始:
顾名思义,拥塞窗口以2的x次方进行缓慢的增加,但是在几次缓慢的测试后,窗口大小也因为其增长函数的特性在愈加的增大,当窗口增大到ssthresh的时候就会执行拥塞避免算法
拥塞避免:
拥塞避免还是顾名思义就是防止拥塞,为了防止窗口过大而导致的网络拥塞,此时可以看到窗口的上升函数变成了X,较2的x函数来说,增长的速率降低了很多,可以这么理解一开始进行快速的窗口增长,到了一个ssthresh警告值的时候,窗口的增长就不敢在那么离谱了。当拥塞避免模式下窗口进行增大的时候出现了超时重传,就会将拥塞窗口cwnd变为0,同时将sstresh变为发生拥塞窗口时窗口大小的二分之一。然后再进行慢开始和拥塞避免。
只有慢开始和拥塞避免的问题
如果只要慢开始和拥塞避免,那么主要的问题就是仅将出现超时重传作为网络拥塞的判断依据未免太过单薄,有的时候数据的一次两次的超时重传并不能代表整个网络此时的情况。所以就出现了快重传。
快重传
我们在进行传输的的时候一般会一次性传送多个报文,那么假设此时本轮传输报文数量为4个,那么假设第一个报文就出现了错误,快重传约定即使接收到失序报文也要对已接收报文进行确认,即在快重传模式下不能出现累积确认。那么当第一个报文出现错误后,后续的三个报文被对端接收后会发回重复的三个ack,那么发送方就不会重新进行慢开始,而是将当前窗口大小减少一半,然后继续执行拥塞避免的窗口增大,同时还会立即对缺失的报文进行重传。
相关文章
- Java实现 蓝桥杯VIP 算法提高 传染病控制
- Cocos2d-x如何控制动作速度
- Kotlin 朱涛-1 基础语法 变量 类型 函数 流程控制
- Qt编写安防视频监控系统60-子模块4云台控制
- 【库存控制】基于象鼻虫损害优化算法求解库存控制问题(Matlab代码实现)
- m基于GA遗传算法的高载能负荷响应优化控制模型matlab仿真
- 终端和控制台 串口 console tty pty /dev目录下终端文件 pts/ptmx 伪终端 控制终端 虚拟终端
- spring + springmvc+ mybatis 事务管理及控制
- TCP拥塞控制-慢启动、拥塞避免、快重传、快启动
- LabVIEW编程LabVIEW控制NI 9403例程与相关资料
- 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释
- TCP/IP 详解卷一 - TCP CWR、ECE、URG、ACK、PSH、RST、SYN、FIN控制位
- RabbitMQ用户角色及权限控制
- Java基础(12)-流程控制之选择结构
- S7-1500连接 V90 PN 实现运动控制
- 控制安卓手机物理返回键
- GUI摄像头控制
- 传输层 TCP 拥塞控制(2):拥塞避免
- 传输层 TCP 拥塞控制(3):快速重传与快速恢复
- Arduino 读取温湿度传感器控制led灯的亮灭——筑梦之路