【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )

简介: 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )

文章目录

一、TCP 拥塞控制

二、TCP 拥塞控制算法

三、慢开始 和 拥塞避免 算法

四、快重传 和 快回复 算法





一、TCP 拥塞控制


TCP 拥塞控制 :


① 拥塞出现表现 : 资源需求总和 大于 可用资源 ;


② 拥塞问题发展 : 网络中 资源 供应不足 -> 网络性能降低 -> 网络吞吐量随着负荷增加而降低


③ 拥塞控制 : 防止数据大量注入到网络中 , 降低整体网络中主机的发送速率 , 流量控制 是 降低一台主机的发送速率 ;


④ 流量控制 与 拥塞控制 : 流量控制 是 点到点 的问题 , 拥塞控制 是 全局性 问题 ;






二、TCP 拥塞控制算法


TCP 拥塞控制算法 :


慢开始

拥塞避免

快重传

快恢复


TCP 拥塞控制相关术语 :


① 单向传输 : 拥塞控制假定单向传输数据 , 发送方 向 接收方 发送 数据 , 接收方 向 发送方 回送 确认信息 ;


② 发送窗口 : 接收方 缓存空间 足够大 , 发送窗口大小 取决于 网络拥塞程度 ; 发送窗口大小 是 接收窗口 rwnd 和 拥塞窗口 cwnd 中的 较小的值 ;


③ 接收窗口 : 接收方 根据 接收缓存 设置 接收窗口 大小值 , 同时将该大小 告知发送方 , 可以反映接 收方容量 ;


④ 拥塞窗口 : 发送方 估算 网络拥塞程度 , 设置 合适的 拥塞窗口 值 , 反映当前 网络容量 ;



( 知道每个算法的原理 , 细节仅做了解 )






三、慢开始 和 拥塞避免 算法

image.png




坐标系说明 :


① 纵坐标 : 纵坐标 是 拥塞窗口 cnwd 大小 , 单位是 一个报文段 , 长度是一个最大报文段长度 MSS ;


如 : 纵坐标的 4 指的是 4 个 MSS , 8 指的是 8 个 MSS ;

② 横坐标 : 横坐标 是 传输轮次 ;


往返时延 : 一个传输轮次 是 发送一批报文段 , 并接收到它们的 确认信息 所花费的时间 ; 即 RTT ;

如 : 发送方 向 接收方 发送 N 个报文段 , 发送方 发送完毕后 , 接收到所有 N 个 报文段的确认信息 , 所花费的时间 , 就是 一个传输轮次 ;

报文段发送间隔 : 也可以理解成 发送方 开发发送一批 拥塞窗口 中的报文段 , 到 开始发送 下一批 拥塞窗口 报文段 的时间 ;



慢开始 和 拥塞避免 算法 :


① 慢开始 : 拥塞窗口 开始设置成 1 , 每隔一个 传输轮次 , 收到上一个报文段的确认报文后 , 拥塞窗口翻倍 , 即变为之前的 两倍 ;


② 慢开始门限值 ( ssthresh ) : 当 拥塞窗口 到达 慢开始门限值 ( ssthresh ) 初始值时 , 停止指数级增长 , 开始线性增长 ;


③ 拥塞避免 : 进入到 慢开始门限值 后 , 开始进行 拥塞避免算法 , 每个传输轮次 , 拥塞窗口 增加 1 ;


④ 网络拥塞 : 当 拥塞窗口 增加到一定值 , 检测到了 网络拥塞 , 此时瞬间将 拥塞窗口降为 1 ; 继续执行慢开始算法 , 新的 慢开始门限值 变为 网络拥塞时 的 拥塞窗口的 1/2 大小 ;



拥塞窗口改变时机 :


收到上一个报文段的确认报文后 , 拥塞窗口翻倍 ;

收到上一个报文段的拥塞信息后 , 拥塞窗口变为 1 ;





四、快重传 和 快回复 算法


image.png



快重传算法 : 收到 3 个冗余的 确认后 , 执行快重传算法 ;


示例 : 发送方 给 接收方 发送 1 2 3 4 5 , 五个报文 , 2 号报文丢失 , 如果收到 3 4 5 号报文 , 其中会携带期待 发送方 发送 2 号报文 , 此时触发 快重传 算法机制 , 在超时计时器到时之前 , 快速发送 丢失的 2 号 报文 ;



快回复算法 : 与 上面的 拥塞避免算法的 区别是 , 出现 网络拥塞 之后 , 拥塞窗口 不降为 1 , 而是降低到 慢开始门限值 , 即当前的 拥塞窗口大小的 1/2 , 然后线性增加 拥塞窗口 ;


目录
相关文章
|
13天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
21天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
46 10
|
1月前
|
域名解析 缓存 网络协议
TCP传输层详解(计算机网络复习)
本文详细解释了TCP/IP协议族的分层模型、各层的功能、TCP报文的格式以及TCP连接建立的三次握手和断开的四次挥手过程。
86 2
TCP传输层详解(计算机网络复习)
|
1月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
61 2
|
1月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
65 1
|
1月前
|
域名解析 存储 网络协议
TCP套接字【网络】
TCP套接字【网络】
33 10
|
1月前
|
XML 网络协议 算法
【TCP】网络原理
【TCP】网络原理
31 0
|
6月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
108 4
|
监控 网络协议 网络架构
IP协议【图解TCP/IP(笔记九)】
IP协议【图解TCP/IP(笔记九)】
143 0
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
294 0
IP协议, TCP协议 和DNS 服务分别是干什么的?