传输层的拥塞控制讲解
《TCP的拥塞控制》课件
![《TCP的拥塞控制》课件](https://img.taocdn.com/s3/m/411d7b70b80d6c85ec3a87c24028915f804d841f.png)
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24 20
ssthresh 的初始值16
拥塞避免 “加法增大”
网络拥塞
拥塞避免 “加法增大” “乘法减小”
新的 ssthresh 值12
慢开始
8
4
指数规律增长
传输轮次
0
0 2 4 6 8 10 12 14 16 18 20 22
慢开始
慢开始
发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端 窗口 rwnd 中的最小值。我们假定接收端窗口足够大, 因此现在发送窗口的数值等于拥塞窗口的数值。
● 使用慢开始算法后,每经过一个传输轮次,拥塞窗 口 cwnd 就加倍。
● 一个传输轮次所经历的时间其实就是往返时间 RTT。
●“传输轮次”更加强调:把拥塞窗口 cwnd 所允许 发送的报文段都连续发送出去,并收到了对已发送 的最后一个字节的确认。
● 例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报 文段的确认,总共经历的时间。
慢开始算法的原理
●在主机刚刚开始发送报文段时可先设置拥塞 窗口 cwnd = 1,即设置为一个最大报文段 MSS 的数值。
●在 每 收 到 一 个 对 新 的 报 文 段 的 确 认 后 , 将 拥 塞窗口加 1,即增加一个 MSS 的数值。
●用 这 样 的 方 法 逐 步 增 大 发 送 端 的 拥 塞 窗 口 cwnd,可以使分组注入到网络的速率更加合 理。
cwnd = 1 cwnd = 2
发送方每收到一个对新报文段的确认 (重传的不算在内)就使 cwnd 加 1。
发送方
接收方
发送 M1
第4讲道客巴巴传输层之二
![第4讲道客巴巴传输层之二](https://img.taocdn.com/s3/m/a2d874bdd4d8d15abf234e12.png)
event: timer timeout for segment with seq # y
retransmit segment
event: ACK received, with ACK # y
ACK processing
主讲人: 西安交通大学 程向前
第4讲 传输层之二 4-5
TCP: 可 靠数据传 输
number"); -JAVA
服务器: 接受客户端的连接
Socket connectionSocket = welcomeSocket.accept();
(建立连接)三次握手:
Step 1: 客户端的end system向服 务器发送 TCP SYN 控制数据段 定义并初始化 seq #
Step 2: 服务器的end system接收 SYN, 用SYNACK控制数据段回 答
有序数据段到达, 没有缺失的段, 有一个延迟 ACK 等待
失序数据段到达 seq. # 高于预期值 测到间隔
延迟 ACK. 等待 500ms 看是否还有数据段到达. 如果没有, 发送ACK
立即发送一个 积欠的 ACK
发送重复的 ACK, 说明 seq. # 为下一个期望的字节
到达的数据段部分或全部填满 了缺失的段
15
if (y > sendbase) { /* cumulative ACK of all data up to y */
16
cancel all timers for segments with sequence numbers < y
17
sendbase = y
18
}
19
else { /* a duplicate ACK for already ACKed segment */
TCP系列54—拥塞控制—17、AQM及ECN
![TCP系列54—拥塞控制—17、AQM及ECN](https://img.taocdn.com/s3/m/ca4116759a6648d7c1c708a1284ac850ad0204f3.png)
TCP系列54—拥塞控制—17、AQM及ECN⼀、概述ECN的相关内容是在RFC3168中定义的,这⾥我简单描述⼀下RFC3168涉及的主要内容。
1、AQM和RED⽬前TCP中多数的拥塞控制算法都是通过缓慢增加拥塞窗⼝直到检测到丢包来进⾏慢启动的,这就会导致数据包在路由器缓存队列堆积,当路由器没有复杂的调度和缓存管理策略的时候,路由器⼀般简单的按照先进先出(FIFO)⽅式处理数据包,并在缓存队列满的时候就会丢弃新数据包(drop tail),这种FIFO/drop tail的路由器称为passive路由器,会导致多个TCP流同时检测到丢包,削减拥塞窗⼝,并进⾏对应的数据包重传流程。
⽽active的路由器则会有相对⾼级的调度和队列缓存策略,这种路由器⽤来管理缓存队列的⽅法就称为AQM(active queue management)机制。
路由器的AQM机制则会在路由器队列满之前探测到拥塞,并提供⼀个拥塞指⽰。
AQM可以使⽤丢包或者本⽂后⾯要介绍的IP头中的Congestion Experienced (CE) codepoint来指⽰拥塞,这样就削减了丢包重传的影响,降低了⽹络延迟。
之所以把CE 指⽰放到IP头中是因为多数路由器对IP头的处理效率要⾼于对IP选项的处理效率。
Random Early Detection (RED)则是AQM机制中⽤来探测拥塞和控制拥塞标记的⼀种⽅法。
RED中有两个门限⼀个是minthresh,另外⼀个是maxthresh,当平均队列长度⼩于minthresh的时候,这个数据包总是会被接收处理,当平均队列长度超过maxthresh的时候,这个数据包总是会被⽤来指⽰拥塞(可能通过丢包或者设置CE来指⽰拥塞),当平均队列长度位于⼆者之间的时候,则会有⼀定的概率这个数据包被⽤来指⽰拥塞。
RED算法是很多⽤在路由器和交换机中类似变种的基础,例如思科的WRED。
2、ECNECN(Explicit Congestion Notification)则是在AQM机制的基础上,路由器显式指⽰TCP发⽣拥塞的的⼀种机制,中⽂⼀般称呼为显式拥塞通告或者显式拥塞通知。
计算机网络传输层
![计算机网络传输层](https://img.taocdn.com/s3/m/dbc3c6a4b9f67c1cfad6195f312b3169a451ea24.png)
计算机网络传输层计算机网络传输层是网络模型的第四层,负责在不同主机之间提供端到端的可靠数据传输服务。
它通过使用传输协议来确保数据能够从发送方传送到接收方。
本文将对计算机网络传输层的功能、特点以及常见的传输协议进行详细介绍。
1.分段和重组:传输层将从应用层接收到的数据进行分段,并在接收端将分段的数据重组为原始数据。
分段和重组的目的是将应用层数据适应网络传输的需求,同时确保数据的完整性。
2.连接管理:传输层通过连接管理机制来建立和维护端到端的连接。
通常有两种连接方式,一种是面向连接的可靠传输,另一种是无连接的不可靠传输。
面向连接的可靠传输使用可靠的传输协议来确保数据的可靠传输,而无连接的不可靠传输则没有建立、维护和释放连接的过程。
3.流量控制:传输层通过流量控制机制来控制数据的发送速率,以避免接收方无法处理过多的数据而导致的数据丢失。
流量控制使得发送方根据接收方的处理能力来调整数据的发送速率。
4.拥塞控制:传输层通过拥塞控制机制来控制网络中的数据传输量,以避免过多的数据拥塞导致网络性能下降。
拥塞控制使得发送方根据网络的拥塞程度来调整数据的发送速率。
5.错误检测和纠正:传输层使用错误检测和纠正机制来检测和纠正数据传输过程中可能出现的错误。
常见的错误检测和纠正机制包括校验和、循环冗余检测码(CRC)和前向纠错码(FEC)等。
1.端到端传输:传输层提供端到端的数据传输服务,即数据从发送方经过所有中间设备传送到接收方。
传输层协议在源和目的主机之间建立连接,并将数据分段传输,然后在目的主机上将分段的数据重新组装为原始数据。
2.透明性:传输层对上层应用程序是透明的,即应用程序不需要关心传输层的具体实现细节。
传输层提供了一种通用的接口,使得应用程序可以通过该接口来传输数据,而无需关心底层的物理网络细节。
3.可靠性:传输层提供可靠的数据传输服务,即保证数据的完整性和可靠性。
通过使用确认和重传机制,传输层可以检测和纠正数据传输过程中可能出现的错误,确保数据的正确传输。
拥塞控制的一般原理
![拥塞控制的一般原理](https://img.taocdn.com/s3/m/be4e5da9b9f67c1cfad6195f312b3169a451eab7.png)
拥塞控制的一般原理拥塞控制是指在计算机网络中对网络流量进行管理和控制,以保证网络的正常运行和数据传输的稳定性。
在今天的互联网时代,拥塞控制变得尤为重要,因为随着网络用户和数据量的不断增加,网络拥塞的问题也越来越突出。
本文将介绍拥塞控制的一般原理,以及常见的拥塞控制算法。
一、拥塞控制的原理拥塞控制的目标是通过合理管理网络流量,避免网络拥塞的发生,保证网络的性能和吞吐量。
拥塞控制的核心原理包括以下几点:1. 检测拥塞:当网络中的数据流量超过网络的容量时,就会发生拥塞。
拥塞控制需要能够及时检测到网络拥塞的开始和结束。
2. 反馈机制:一旦检测到网络发生拥塞,拥塞控制需要通过反馈机制通知数据发送方降低发送速率,以减少网络流量。
反馈机制可以通过丢包、延迟等方式实现。
3. 动态调整:拥塞控制需要具备自适应的能力,在网络拥塞程度不同的情况下,能够动态调整发送速率,以适应网络的变化。
二、拥塞控制算法1. TCP拥塞控制算法TCP(Transmission Control Protocol)是一种常用的传输层协议,其拥塞控制算法被广泛应用于互联网中。
TCP的拥塞控制算法主要包括慢启动、拥塞避免、快速重传和快速恢复等。
- 慢启动:在连接建立之初,TCP发送方将初始窗口设为一个较小的数值,然后逐渐增加窗口的大小。
通过不断试探网络的容量,避免一开始就发送大量数据导致网络拥塞。
- 拥塞避免:当网络发生拥塞时,TCP发送方将发送速率进行调整,以减少数据的发送,通过线性增加发送速率,使网络逐渐恢复正常。
- 快速重传:当TCP发送方连续收到三个重复的确认信息时,即表示网络发生拥塞。
TCP发送方立即重传可能丢失的数据报,以便尽快恢复传输。
- 快速恢复:在快速重传之后,TCP发送方将进入快速恢复状态,将拥塞窗口减半,并继续线性增加发送速率。
2. UDP拥塞控制算法与TCP不同,UDP(User Datagram Protocol)是一种无连接的传输层协议,不提供拥塞控制机制。
TCPIP详解学习笔记(15)--TCP的流量控制和拥塞控制
![TCPIP详解学习笔记(15)--TCP的流量控制和拥塞控制](https://img.taocdn.com/s3/m/b0646b68178884868762caaedd3383c4bb4cb4de.png)
TCPIP详解学习笔记(15)--TCP的流量控制和拥塞控制TCP的流量控制1.概述所谓的流量控制就是让发送⽅的发送速率不要太快,让接收⽅来得及接受。
利⽤滑动窗⼝机制可以很⽅便的在TCP连接上实现对发送⽅的流量控制。
TCP的窗⼝单位是字节,不是报⽂段,发送⽅的发送窗⼝不能超过接收⽅给出的接收窗⼝的数值。
如图所⽰,说明了利⽤可变窗⼝⼤⼩进⾏流量控制。
设主机A向主机B发送数据。
双⽅确定的窗⼝值是400.再设每⼀个报⽂段为100字节长,序号的初始值为seq=1,图中的箭头上⾯⼤写ACK,表⽰⾸部中的却认为为ACK,⼩写ack表⽰确认字段的值。
接收⽅的主机B进⾏了三次流量控制。
第⼀次把窗⼝设置为rwind=300,第⼆次减⼩到rwind=100最后减到rwind=0,即不允许发送⽅再发送过数据了。
这种使发送⽅暂停发送的状态将持续到主机B重新发出⼀个新的窗⼝值为⽌。
假如,B向A发送了零窗⼝的报⽂段后不久,B的接收缓存⼜有了⼀些存储空间。
于是B向A发送了rwind=400的报⽂段,然⽽这个报⽂段在传送中丢失了。
A⼀直等待收到B发送的⾮零窗⼝的通知,⽽B也⼀直等待A发送的数据。
这样就死锁了。
为了解决这种死锁状态,TCP为每个连接设有⼀个持续计时器。
只要TCP连接的⼀⽅收到对⽅的零窗⼝通知,就启动持续计时器,若持续计时器设置的时间到期,就发送⼀个零窗⼝探测报⽂段(仅携带1字节的数据),⽽对⽅就在确认这个探测报⽂段时给出了现在的窗⼝值。
2.TCP报⽂段发送时机的选择TCP豹纹短短发送时机主要有以下⼏种选择途径。
1)TCP维持⼀个变量,它等于最⼤报⽂段长度MSS,只要缓存中存放的数据达到MSS字节就组装成⼀个TCP报⽂段发送出去。
2)由发送⽅的应⽤程序指明要求发送报⽂段,即TCP⽀持的推送操作3)是发送⽅的⼀个计时器期限到了,这时就把当前已有的缓存数据装⼊报⽂段发送出去。
TCP的拥塞控制1.拥塞控制的原理在某段时间,若对⽹络中的某⼀资源的需求超过了该资源所能提供的可⽤部分,⽹络的性能就要变化,这种情况叫做拥塞。
传输控制协议TCP课件
![传输控制协议TCP课件](https://img.taocdn.com/s3/m/40db4642f02d2af90242a8956bec0975f465a423.png)
TCP协议在传输数据之前需要先建立连接,并在数据传输结束后关闭连接。
TCP协议通过三次握手建立连接,四次挥手关闭连接。
01
TCP协议将数据分割成TCP段,通过网络发送,并在接收端重新组装成原始数据。
02
TCP协议通过确认和重传机制保证数据的可靠传输。
03
TCP协议通过滑动窗口机制实现流量控制。
TCP连接状态转换图
通过状态转换图可以清楚地展示TCP连接状态之间的转换关系和条件。
TCP连接状态的含义和作用
每种TCP连接状态都有其特定的含义和作用,例如LISTEN状态表示服务器等待客户端的连接要求,ESTABLISHED状态表示连接已建立等。了解TCP连接状态有助于更好地理解TCP协议的工作原理和应用场景。
慢开始:慢开始是一种拥塞控制算法,用于逐步增加发送方的数据发送速率,避免一开始就发送过量的数据。
06
TCP协议的错误控制
TCP协议使用一种称为"校验和"的机制来检测数据传输过程中的错误。在发送端,计算数据的校验和,并将该值附加到数据包的末尾。在接收端,重新计算校验和并与附加的校验和进行比较,以确定数据是否在传输过程中产生错误。
05
TCP协议的拥塞控制
拥塞控制
拥塞控制是TCP协议中用于防止网络拥塞的一种机制,通过控制发送方的数据发送速率,避免网络拥塞的产生。
拥塞的原因
当网络中的数据量过大,超过了网络的承载能力时,就会产生拥塞。拥塞会导致数据丢失、延迟增加和网络性能降落。
拥塞控制的必要性
随着互联网的发展,网络流量不断增加,如果不进行有效的拥塞控制,网络拥塞问题将越来越严重,影响用户体验和网络性能。
可靠性和错误控制
TCP协议提供了数据传输的确认和重传机制,以及流量控制和拥塞控制机制,以确保数据可靠地传输到目的地。
《无线传感器网络与物联网通信技术》教学课件 第2章 无线传感器网络体系结构 2.5 传输层
![《无线传感器网络与物联网通信技术》教学课件 第2章 无线传感器网络体系结构 2.5 传输层](https://img.taocdn.com/s3/m/3b86f62e178884868762caaedd3383c4bb4cb4a6.png)
2.5 传输层 2.5.1 传输层简介
目前,无线传感器网络传输层协议主要在能耗控制、拥塞控制和可靠性保证3个 方向开展研究与设计工作。其中,能耗控制协议又与拥塞控制协议、可靠性保证协 议紧密联系。
① 能耗控制方面。无线传感器网络的节点能量有限,网络的运行以节能控制为 首要考虑因素。
② 拥塞控制方面。在无线传感器网络中,事件发生区域中的节点监测到相关信 息后传输至汇聚节点,由于网络的分布特征,可能存在多个节点感知信息,都发往 一个汇聚节点,即形成“多对一”的传输模式。
无线传感器网络自身存在资源受限等特性,使得传统的TCP/IP协议不能直接应用 于无线传感器网络,而应根据无线传感器网络的具体应用需求、网络自身的特性与条 件来设计相应的协议,主要体现在以下几个方面。
① 无线传感器网络中节点的能量是有限的,过多的能耗会影响网络的生命周期。
② 无线传感器网络一般使用的是分布式、密集型的覆盖方式,无线传感器网络以 数据为中心,为减少数据量,节点具备一定的数据处理能力。
③ 无线传感器网络存在不稳定情况,网络拓扑结构的变化会影响TCP/IP协议的握 手机制。
④ 在无线传感器网络中,虽然传输层协议具备拥塞控制的能力,但通信质量、拓 扑结构变化等非拥塞情况也会造成丢包现象。
⑤ 无线传感器网络在大规模应用中,节点需要处理好自身与邻居节点之间的通信 即可。
无线传感器网络与物联网通信技术
针对不同的传输层协议设计与网络应用需求,一些简单的拥塞控制处理方式分为拥 塞信息反馈机制和传输路由切换机制。其中,拥塞信息反馈机制是接收节点检测到拥塞 之后,向它的发送节点发送一个包含拥塞控制信息的数据包,告知发送节点减缓甚至停 止发送数据包;传输路由切换机制是当前节点检测到拥塞之后,重新选择一条优化的路 径来传输数据,从而减少了当前节点的数据流,待拥塞缓解或消除之后,可再恢复先前 路径来继续传输数据。
拥塞控制
![拥塞控制](https://img.taocdn.com/s3/m/850f844a30b765ce0508763231126edb6f1a7600.png)
3)以往的工作主要采用局部线性化方法,缺乏对系统全局动力学的理论分析。此外,在多种源端拥塞控制策 略和路由器避免策略并存时,如何分析整个网络的稳定性,如何分析各种不确定因素对稳定性的影响等,也是需 要认真考虑的问题。
控制方法
分组丢弃法
缓冲区预分配法
定额控制法
拥塞控制该法用于虚电路分组交换网中。在建立虚电路时,让呼叫请求分组途经的节点为虚电路预先分配一个 或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个"忙"信号给呼叫者。这 样,通过途经的各节点为每条虚电路开设的永久性缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的分 组。此时的分组交换跟电路交换很相似。当节点收到一个分组并将它转发出去之后,该节点向发送节点返回一个确 认信息。该确认一方面表示接收节点已正确收到分组,另一方面告诉发送节点,该节点已空出缓冲区以备接收下一 个分组。上面是"停一等"协议下的情况,若节点之间的协议允许多个未处理的分组存在,则为了完全消除拥塞的可 能性,每个节点要为每条虚电路保留等价于窗口大小数量的缓冲区。这种方法不管有没有通信量,都有可观的资源 (线路容量或存储空间)被某个连接占有,因此网络资源的有效利用率不高。这种控制方法主要用于要求高带宽和 低延迟的场合,例如传送数字化语音信息的虚电路。
4) TCP/IP拥塞控制的设计和实现面临着众多的折中,不可能有一种设计和实现所有环境中都是“最好的”。 现有的拥塞控制思路、方法和技术在多目标的不同环境中面临着挑战,它们还有许多要改进的地方。
计算机网络基础连接和通信的基本原理
![计算机网络基础连接和通信的基本原理](https://img.taocdn.com/s3/m/e98fd491250c844769eae009581b6bd97e19bc7c.png)
计算机网络基础连接和通信的基本原理计算机网络是指通过通信线路将多台计算机连接起来,共享信息和资源的系统。
它的出现极大地方便了人们之间的信息交流和资源共享。
而实现计算机网络的基础,离不开连接和通信的基本原理。
本文将详细介绍计算机网络连接和通信的基本原理。
一、物理层连接的基本原理物理层是计算机网络的基础层,主要负责传输比特流。
在物理层连接中,常见的连接方式有以下几种:1. 点对点连接点对点连接是指两台计算机直接通过一根物理通信线路实现连接。
这种连接方式常用于局域网或广域网的最后一段连接,例如拨号连接、以太网连接等。
2. 多点连接多点连接是指一台计算机与多台计算机之间通过一个共享的物理通信线路实现连接。
在多点连接中,需要使用一种特定的拓扑结构,如总线型、星型、环形等,来实现各个计算机的连接。
3. 网状连接网状连接是指多台计算机通过多个物理通信线路相互连接,构成一个复杂的网络结构。
网状连接具有高度的冗余性和可靠性,能够在某些节点故障的情况下保持网络的正常运行。
二、数据链路层通信的基本原理数据链路层主要负责将比特流转化为帧,并通过物理层实现帧的传输。
在数据链路层通信中,需要考虑以下几个基本原理:1. 寻址和帧定界在数据链路层通信中,每个帧都需要包含源和目的地址,以便接收方能够正确地接收和处理数据。
同时,为了区分帧之间的界限,还需要在帧中加入帧定界符。
2. 流量控制流量控制是指接收方通过发送特定的控制帧,告知发送方当前可接收的数据量。
这样可以避免发送方过快地发送数据,导致接收方缓冲区溢出。
3. 差错检测和纠正在数据链路层通信中,为了保证数据的可靠性,需要在帧中加入差错检测码,常见的就是循环冗余检测(CRC)码。
接收方在接收到数据后,通过对帧中的差错检测码进行检测,可以发现是否存在差错,并进行相应的纠正。
三、网络层通信的基本原理网络层主要负责将数据链路层传输的帧进行路由选择,实现不同计算机之间的数据传输。
在网络层通信中,需要考虑以下几个基本原理:1. IP地址和路由选择每台联网的计算机都需要有一个唯一的IP地址,用来标识其在网络中的位置。
计算机网络中的拥塞控制与负载均衡
![计算机网络中的拥塞控制与负载均衡](https://img.taocdn.com/s3/m/0a5062285e0e7cd184254b35eefdc8d376ee14d1.png)
计算机网络中的拥塞控制与负载均衡在当今互联网时代,计算机网络已经成为了现代社会不可或缺的基础设施之一。
然而,随着网络用户数量的不断增加和网络流量的迅猛增长,网络拥塞问题愈发凸显。
为了保障网络能够高效稳定地运行,人们提出了拥塞控制和负载均衡的方法。
一、拥塞控制拥塞控制是指在网络中防止或减轻拥塞的过程。
当网络中的数据流量超过网络链路或节点的处理能力时,就会出现网络拥塞。
拥塞控制的目标是维持网络的稳定性和可靠性,避免拥塞引发的性能下降。
1. TCP拥塞控制算法TCP(传输控制协议)是一种常见的传输层协议,拥塞控制是其重要特性之一。
TCP拥塞控制算法主要有慢启动、拥塞避免和拥塞发生时的快速恢复等。
在慢启动阶段,TCP发送方发送的数据量较小,然后根据网络的拥塞情况逐渐增加发送的数据量。
拥塞避免阶段中,TCP通过跟踪网络的延迟时间和丢包情况来调整发送数据量,以维持网络的稳定性。
当网络发生拥塞时,TCP进入快速恢复阶段,通过减少发送的数据量来缓解网络拥塞。
2. 拥塞控制策略除了TCP拥塞控制算法,还有其他拥塞控制策略,如随机早期检测(RED)算法和主动队列管理(Active Queue Management, AQM)算法等。
这些策略通过监测网络链路的拥塞情况,及时采取措施来减轻拥塞,如丢包、降低数据的传输速率等。
二、负载均衡负载均衡是指将网络流量均匀地分发到多个服务器上,以提高整个系统的性能和可靠性。
通过负载均衡,可以避免某个服务器过载而影响整个系统的正常运行。
1. 集中式负载均衡集中式负载均衡采用单独的负载均衡设备,负责将流量分发到多个后端服务器。
负载均衡设备通过监测服务器的负载情况,动态地将请求分发给负载较轻的服务器,以实现负载均衡。
2. 分布式负载均衡分布式负载均衡将负载均衡功能集成到多个服务器中,每个服务器都具备负载均衡功能。
各个服务器通过通信协议相互协作,共同完成负载均衡的任务。
在负载均衡中,还有常见的调度算法,如轮询调度、最少连接调度和基于性能的调度等。
TCP系列39—拥塞控制—2、拥塞相关算法及基础知识
![TCP系列39—拥塞控制—2、拥塞相关算法及基础知识](https://img.taocdn.com/s3/m/573b41e67d1cfad6195f312b3169a4517723e5b5.png)
TCP系列39—拥塞控制—2、拥塞相关算法及基础知识⼀、拥塞控制的相关算法早期的TCP协议只有基于窗⼝的流控(flow control)机制⽽没有拥塞控制机制,因⽽易导致⽹络拥塞。
1988年Jacobson针对TCP在⽹络拥塞控制⽅⾯的不⾜,提出了“慢启动(Slow Start)”和“拥塞避免(Congestion Avoidance)”算法。
1990年Jacobson⼜做了两个修正。
在这⼆⼗来年的发展过程中,与拥塞控制相关的有四个⽐较重要的版本:TCP Tahoe、TCP Reno、TCP NewReno和TCP SACK。
TCP Tahoe是早期的TCP版本,它包括了3个最基本的算法-“慢启动”、“拥塞避免”和“快速重传(Fast Retransmit)”,但是在Tahoe版本中对于超时重传和快速重传的处理相同,⼀旦发⽣重传就会开始慢启动过程。
TCP Reno则在TCP Tahoe基础上增加了“快速恢复(Fast Recovery)”算法,针对快速重传作出特殊处理,避免了⽹络拥塞不严重时采⽤“慢启动”算法⽽造成过度减⼩发送窗⼝尺⼨的现象。
TCP NewReno对TCP Reno中的“快速恢复”算法进⾏了修正,它考虑了⼀个发送窗⼝内多个数据包丢失的情况。
在Reno版中,发送端收到⼀个新的ack number后就退出“快速恢复” 阶段,⽽在NewReno版中,只有当所有的数据包都被确认后才退出“快速恢复”阶段。
TCP SACK关注的也是⼀个窗⼝内多个数据包丢失的情况,它避免了之前版本的TCP重传⼀个窗⼝内所有数据包的情况,包括那些已经被接收端正确接收的数据包,⽽只是重传那些被丢弃的数据包。
传统的TCP拥塞控制算法主要就由慢启动、拥塞避免、快速重传、快速恢复这4个基础算法组成,这四个基础算法在RFC5681规范中进⾏了描述。
后续我们将会分别对这些拥塞控制相关的算法做介绍,在介绍这些拥塞控制的相关算法之前我们先介绍⼀下拥塞控制中的数据包守恒原则和linux中拥塞控制的背景知识,以⽅便后⾯进⾏更进⼀步的介绍。
全网最全-TCP传输控制协议详解
![全网最全-TCP传输控制协议详解](https://img.taocdn.com/s3/m/65ae7fc2112de2bd960590c69ec3d5bbfd0ada98.png)
TCP协议概述传输控制协议Transmission Control Protocol,TCP协议比较复杂,下文将由浅入深,对TCP 协议进行一般介绍,然后逐步深入介绍可靠传输、流量控制、拥塞控制等。
TCP主要特点(1)协议端口是在协议栈层间的抽象描述,是软件端口。
端口只具有本地意义,目的是标识本计算机应用层中各个进程在和传输层交互时的层间接口,采用16位标志共65535个端口号,传输层端口号共分为两类:●服务端使用的端口号熟知端口号(系统端口号):0~1023登记端口号:1024~49151●客户端使用的端口号(短暂端口号):49152~65535(2)面向连接TCP是面向连接的协议,应用程序在使用TCP前必须先建立TCP连接,数据传送完成后必须释放此连接。
(3)点对点每一条连接只能有两个端点,每一条TCP连接只能是点对点的(即一对一)。
TCP把连接作为最基本的抽象,TCP连接的端点叫做套接字或插口。
RFC793定义,端口号拼接到ip地址就构成了套接字。
即套接字=ip地址:端口号。
每一条TCP连接被通信两端的端点确定,而且是唯一确定。
(4)可靠TCP提供可靠交付的服务,通过TCP传送的数据,无差错、不丢失、不重复、按序到达。
(5)全双工TCP提供全双工通信,通信双方的应用程序在任何时候都能发生数据,TCP连接的两端都设有发送缓存和接收缓存,将发送或接收的数据放于缓存中,应用程序就可以忙别的事,等合适的时候再由TCP将缓存数据发出去,或者等合适的时候应用程序再从缓存中读取数据。
(6)面向字节流流(stream)是指流入到进程或者从进程流出的字节序列。
面向字节流的意思是:虽然应用程序将数据分成大小不一的数据块交付给TCP,但TCP将应用程序交下来的数据仅仅当成一连串无结构的字节流,不关心发送和接收数据块的对应关系。
这也要求应用程序必须能够识别字节流并将其还原成有意义的数据。
可靠传输的工作原理理想的传输条件:●传输信道不产生差错●不管发送方以多快的速度发送数据,就收方总是来得及接受和处理很显然实际网络不具备上述两个理想条件,TCP的可靠传输机制,可以解决上述问题。
传输层基本功能
![传输层基本功能](https://img.taocdn.com/s3/m/c128b32526d3240c844769eae009581b6bd9bdcf.png)
传输层基本功能传输层是计算机网络体系结构中的一层,负责在源主机和目的主机之间提供可靠的数据传输服务。
它的基本功能主要包括连接建立、数据分割与重组、流量控制和拥塞控制。
一、连接建立传输层通过建立连接来确保数据的可靠传输。
在传输层中,常用的连接是面向连接的TCP(Transmission Control Protocol)连接。
TCP连接是一种可靠的、有序的、全双工的连接,它通过三次握手的方式在源主机和目的主机之间建立起连接。
首先,源主机向目的主机发送一个连接请求报文,目的主机收到请求后向源主机发送一个确认报文,最后源主机再向目的主机发送一个确认报文,完成连接的建立。
二、数据分割与重组传输层负责将应用层发送的数据分割成适合传输的报文段,并在目的主机上将接收到的报文段重新组装成完整的数据。
这是因为应用层发送的数据往往是大于网络传输的最大单元(MTU)的,因此传输层需要将数据进行分割,以便在网络中进行传输。
在接收端,传输层根据报文段的序号和确认号进行重组,确保数据的完整性。
三、流量控制传输层通过流量控制机制来控制发送方向接收方发送数据的速率,以保证接收方能够及时处理接收到的数据。
流量控制主要基于滑动窗口协议,发送方和接收方各自维护一个窗口,用来控制发送和接收的数据量。
发送方根据接收方返回的确认信息来调整发送数据的速率,以避免接收方因为处理不过来而丢弃数据。
四、拥塞控制拥塞控制是传输层的重要功能之一,它用来控制网络中的拥塞程度,避免过多的数据注入到网络中而导致网络性能下降。
拥塞控制采取的措施包括减少发送方的发送速率、丢弃一部分数据、延迟发送等。
传输层通过使用拥塞窗口来控制发送方的发送速率,当网络拥塞时,发送方会减小拥塞窗口的大小,以减少发送的数据量。
总结:传输层作为计算机网络体系结构中的一层,承担着连接建立、数据分割与重组、流量控制和拥塞控制等基本功能。
通过建立连接,传输层确保了数据的可靠传输;通过数据分割与重组,传输层实现了大数据的分割和重组;通过流量控制,传输层控制了发送方向接收方发送数据的速率;通过拥塞控制,传输层避免了网络拥塞导致的性能下降。
《网络协议从入门到底层原理》笔记(五)传输层(UDP、TCP、流量控制、拥塞控制、建立连接。。。
![《网络协议从入门到底层原理》笔记(五)传输层(UDP、TCP、流量控制、拥塞控制、建立连接。。。](https://img.taocdn.com/s3/m/365ccf9ecd22bcd126fff705cc17552707225e96.png)
《⽹络协议从⼊门到底层原理》笔记(五)传输层(UDP、TCP、流量控制、拥塞控制、建⽴连接。
⽹络层是为主机之间提供逻辑通信;传输层为应⽤进程之间提供端到端的逻辑通信。
逻辑通信”的意思是“好像是这样通信,但事实上并⾮真的这样通信”。
从IP层来说,通信的两端是两台主机。
但“两台主机之间的通信”这种说法还不够清楚。
严格地讲,两台主机进⾏通信就是两台主机中的应⽤进程互相通信。
从运输层的⾓度看,通信的真正端点并不是主机⽽是主机中的进程。
也就是说,端到端的通信是应⽤进程之间的通信。
即“主机 A 的某个进程和主机 B 上的另⼀个进程进⾏通信”。
简称为“计算机之间通信”。
传输层有两个主要协议:TCP(Transmission Control Protocol),传输控制协议UDP(User Datagram Protocol),⽤户数据报协议TCP 传送的数据单位协议是 TCP 报⽂段(segment)。
UDP 传送的数据单位协议是 UDP 报⽂或⽤户数据报。
第⼀章 UDP协议UDP 只在 IP 的数据报服务之上增加了很少⼀点的功能:复⽤和分⽤的功能差错检测的功能1.1 UDP特点UDP 是⽆连接的,发送数据之前不需要建⽴连接,因此减少了开销和发送数据之前的时延。
UDP 使⽤尽最⼤努⼒交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
UDP 是⾯向报⽂的。
UDP 对应⽤层交下来的报⽂,既不合并,也不拆分,⽽是保留这些报⽂的边界。
UDP ⼀次交付⼀个完整的报⽂。
UDP 没有拥塞控制,因此⽹络出现的拥塞不会使源主机的发送速率降低。
这对某些实时应⽤是很重要的。
很适合多媒体通信的要求。
UDP ⽀持⼀对⼀、⼀对多、多对⼀和多对多的交互通信。
UDP 的⾸部开销⼩,只有 8 个字节,⽐ TCP 的 20 个字节的⾸部要短。
1.2 UDP数据格式UDP长度(Length)占16位:⾸部的长度 + 数据的长度UDP检验和(Checksum)检验和的计算内容:伪⾸部 + ⾸部 + 数据伪⾸部:仅在计算检验和时起作⽤,并不会传递给⽹络层UDP端⼝(Port)UDP⾸部中端⼝是占⽤2字节可以推测出端⼝号的取值范围是:0~65535客户端的源端⼝是临时开启的随机端⼝防⽕墙可以设置开启\关闭某些端⼝来提⾼安全性常⽤命令:netstat –an:查看被占⽤的端⼝netstat –anb:查看被占⽤的端⼝、占⽤端⼝的应⽤程序telnet 主机端⼝:查看是否可以访问主机的某个端⼝安装telnet:控制⾯板 – 程序 – 启⽤或关闭Windows功能 – 勾选“Telnet Client” – 确定第⼆章 TCP协议TCP 是⾯向连接的运输层协议,在⽆连接的、不可靠的 IP ⽹络服务基础之上提供可靠交付的服务。
TCP的拥塞控制
![TCP的拥塞控制](https://img.taocdn.com/s3/m/a40dee13df80d4d8d15abe23482fb4daa58d1d3f.png)
TCP的拥塞控制1.引⾔计算机⽹络中的带宽、交换结点中的缓存和处理机等,都是⽹络的资源。
在某段时间,若对⽹络中某⼀资源的需求超过了该资源所能提供的可⽤部分,⽹络的性能就会变坏。
这种情况就叫做拥塞。
拥塞控制就是防⽌过多的数据注⼊⽹络中,这样可以使⽹络中的路由器或链路不致过载。
拥塞控制是⼀个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。
2.慢开始与拥塞避免发送⽅维持⼀个叫做拥塞窗⼝cwnd(congestion window)的状态变量。
拥塞窗⼝的⼤⼩取决于⽹络的拥塞程度,并且动态地在变化。
发送⽅让⾃⼰的发送窗⼝等于拥塞窗⼝,另外考虑到接受⽅的接收能⼒,发送窗⼝可能⼩于拥塞窗⼝。
慢开始算法的思路就是,不要⼀开始就发送⼤量的数据,先探测⼀下⽹络的拥塞程度,也就是说由⼩到⼤逐渐增加拥塞窗⼝的⼤⼩。
这⾥⽤报⽂段的个数的拥塞窗⼝⼤⼩举例说明慢开始算法,实时拥塞窗⼝⼤⼩是以字节为单位的。
如下图:当然收到单个确认但此确认多个数据报的时候就加相应的数值。
所以⼀次传输轮次之后拥塞窗⼝就加倍。
这就是乘法增长,和后⾯的拥塞避免算法的加法增长⽐较。
为了防⽌cwnd增长过⼤引起⽹络拥塞,还需设置⼀个慢开始门限ssthresh状态变量。
ssthresh的⽤法如下:当cwnd<ssthresh时,使⽤慢开始算法。
当cwnd>ssthresh时,改⽤拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
拥塞避免算法让拥塞窗⼝缓慢增长,即每经过⼀个往返时间RTT就把发送⽅的拥塞窗⼝cwnd加1,⽽不是加倍。
这样拥塞窗⼝按线性规律缓慢增长。
⽆论是在慢开始阶段还是在拥塞避免阶段,只要发送⽅判断⽹络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为⽆法判定,所以都当做拥塞来处理),就把慢开始门限设置为出现拥塞时的发送窗⼝⼤⼩的⼀半。
然后把拥塞窗⼝设置为1,执⾏慢开始算法。
传输层功能及作用通俗的解释
![传输层功能及作用通俗的解释](https://img.taocdn.com/s3/m/3f0d6e736ad97f192279168884868762caaebb3c.png)
传输层功能及作用通俗的解释一、传输层是啥呢?咱就把网络想象成一个超级大的快递系统。
传输层啊,就像是这个快递系统里特别重要的一个环节。
它就像是负责把包裹准确送到每家每户的快递员一样。
你在网上和朋友聊天、看视频或者玩游戏,传输层就在背后默默工作着,确保你发出的消息能准确到达对方那里,对方回复的内容也能准确地回到你这儿。
比如说,你在手机上给朋友发了个超搞笑的表情包。
这个表情包就像是一个小包裹,传输层要做的就是把这个小包裹从你的手机送到你朋友的手机上。
而且啊,在网络这个超级复杂的环境里,有好多好多的数据在跑来跑去,就像马路上有很多车一样。
传输层就得保证你的表情包这个小包裹不会被其他数据给挤丢了,也不会送错地方。
二、传输层的功能1. 端口号的作用端口号就像是你家的门牌号一样。
在网络里,不同的应用程序就像是住在不同房子里的人。
比如说,你电脑上的QQ和浏览器,它们就是不同的应用程序。
每个应用程序都有自己的端口号,就像每个房子都有自己的门牌号。
传输层通过端口号来区分这些不同的应用程序,这样就能准确地把数据送到正确的应用程序那里。
就像快递员看到门牌号就能准确地把包裹送到对应的人家一样。
如果没有端口号,那数据就不知道该往哪个应用程序送了,就像快递员找不到门牌号,不知道把包裹放哪儿了,那可就乱套了。
2. 可靠传输和不可靠传输有时候啊,传输层会提供可靠传输。
这就好比你寄一个非常重要的文件,你希望快递公司能保证这个文件肯定能安全送到。
在网络里也是这样,像一些对数据准确性要求特别高的情况,比如你在网上转账,传输层就会采用可靠传输的方式,它会检查数据有没有在传输过程中出错或者丢失,如果出错或者丢失了,它会重新发送,直到数据准确无误地到达目的地。
但是呢,还有不可靠传输的情况。
比如说你在看在线视频,偶尔有一两个画面没显示清楚或者声音有点卡,其实也不太影响你看视频的整体感受。
这种情况下,传输层就可能采用不可靠传输,因为这样可以提高传输的速度,虽然可能会有一点点小问题,但总体上能让你更快地看到视频。
简述传输层中预防拥塞的主要策略
![简述传输层中预防拥塞的主要策略](https://img.taocdn.com/s3/m/6120c0c385868762caaedd3383c4bb4cf7ecb7f4.png)
简述传输层中预防拥塞的主要策略传输层中预防拥塞的主要策略有:流量控制、拥塞避免、拥塞检测和拥塞恢复。
1.流量控制:流量控制是通过控制发送方的传输速率,确保接收方能够及时处理接收到的数据,并避免数据的丢失或溢出。
流量控制通常通过滑动窗口协议实现,其中发送方根据接收方的传输能力自适应地调整发送速率。
滑动窗口的大小是发送方可以发送的数据量,接收方通过报告窗口大小来通知发送方可接收的数据量,并动态调整窗口大小,以适应网络的状况。
2.拥塞避免:拥塞避免的目标是让网络中的流量维持在一个合理的范围内,避免网络拥塞的发生。
拥塞避免常用的算法是TCP的拥塞避免算法(CA)中的慢启动和拥塞避免机制。
慢启动阶段中,发送方将初始拥塞窗口设为一个较小的值,然后每经过一个往返时间(RTT)就将窗口大小翻倍,直到达到一个阈值。
拥塞避免阶段中,发送方以线性增长的方式调整拥塞窗口大小,即每经过一个RTT就增加一个MSS的窗口大小。
如果出现数据包丢失,则认为网络存在拥塞,进行拥塞恢复。
3.拥塞检测:拥塞检测的目标是及时地发现网络中的拥塞,并作出相应的反应,以减轻网络的拥塞状态。
拥塞检测通常利用两个主要的指标来判断网络是否拥塞:丢包和延迟。
丢包率高和延迟增大可能是网络发生拥塞的迹象。
为了检测拥塞,TCP引入了超时重传机制和快速重传机制。
超时重传机制是当发送方连续重传指定的数据包次数仍然没有收到确认,就认为该数据包丢失,触发拥塞避免机制。
快速重传机制是当接收方收到重复的数据包时立即发送确认,通知发送方有数据包丢失,并触发拥塞避免机制。
4.拥塞恢复:拥塞恢复是在检测到网络拥塞后,采取一系列措施来减轻拥塞情况,使网络尽快恢复正常。
拥塞恢复机制主要包括以下几个方面:慢启动、快速重传、快速恢复和拥塞窗口的调整。
慢启动是在检测到网络拥塞时,将发送方的拥塞窗口大小重新设置为一个较小的值,然后重新进行拥塞避免和拥塞检测。
快速重传是接收方在收到重复数据包时立即发送确认给发送方,来快速通知发送方有数据包丢失。
计算机网络 传输层
![计算机网络 传输层](https://img.taocdn.com/s3/m/49ba892eaaea998fcc220e77.png)
计算机网络传输层传输层为OSI参考模型的第四层,是计算机网络体系结构的核心,其任务是为从发送端计算机到接收端计算机提供可靠的、透明的数据传输,并向高层用户屏蔽通信子网的细节,提供通用的传输接口。
传输层实现时主要考虑以下几点:1.连接管理传输层能够实现端-端的数据传输,即在数据传输前,经过各种交换设备,在两端建立一条链路。
链路建立后,发送端使用该链路发送数据,待数据发送完毕,接收端确认接收成功。
连接管理是传输层在发送端和接收端之间建立和释放连接所必须遵循的协议,一般通过三次握手协议来完成两端点连接的建立:计算机A传送一个请求一次连接的TPDU,它的序列号为X;计算机B会送一个确认该请求及其序列号的TPDU,它的序列号为Y;计算机A 通过在第一个数据TPDU中包含序列号X和Y,对计算机B的确认帧发回一个确认。
为避免由于请求或确认信息丢失而导致的错误,在计算机A和计算机B中分别设置了定时器。
如果计算机A的请求信息或计算机B的确认信息丢失,计算机A将在计时结束后重新发送请求。
如果计算机A的确认信息丢失,计算机B将在计时结束后终止连接。
当计算机A与计算机B通信完毕后,需要两端点终止连接操作。
而终止连接的操作为:首先计算机A请求终止连接,然后计算机B确认请求;如果计算机A接收到计算机B所发送的确认信息后,再发送一个确认信息,并终止连接;最后计算机B收到确认信息后,也终止连接。
2.差错控制在传输层的通信过程中,无论时面向连接还是面向无连接的传输,都需要对传输的内容进行差错控制编码、差错检测、差错处理三个方面的处理。
传输层的差错控制是通过在通信子网对差错控制的基础上最后的一道差错控制措施可,面对的出错率相对较低。
因此,传输层的差错控制编码一般采用比较简单的算法。
例如,在传输层协议数据单元TPDU内留有专门的校验和字段,用于存放校验码。
在对于差错的处理过程中,通常采用当即纠错、通知发送端重传和丢弃三种措施,具体采用什么措施与差错控制算法与传输层服务要求有关。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设置慢开始门限状态变量
ssthresh
慢开始门限 ssthresh 的用法如下: 当 cwnd < ssthresh 时,使用慢开始算法。 当 cwnd > ssthresh 时,停止使用慢开始算esh 时,既可使用慢开始算法,也可 使用拥塞避免算法。
拥塞避免 “加法增大”
网络拥塞
拥塞避免 “加法增大” “乘法减小”
慢开始
8
4
指数规律增长
0 0 2 4 6 8 10
慢开始
12 14 16
慢开始
传输轮次
18 20 22
当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中 的窗口单位不使用字节而使用报文段。
慢开始门限的初始值设置为 16 个报文段, 即 ssthresh = 16。
发送方控制拥塞窗口的原则是:只要网络没有出 现拥塞,拥塞窗口就再增大一些,以便把更多的 分组发送出去。但只要网络出现拥塞,拥塞窗口 就减小一些,以减少注入到网络中的分组数。
慢开始算法的原理
在主机刚刚开始发送报文段时可先设置拥塞窗 口 cwnd = 1,即设置为一个最大报文段 MSS 的数值。
在每收到一个对新的报文段的确认后,将拥塞 窗口加 1,即增加一个 MSS 的数值。
网络传输层的拥塞控制
拥塞产生原因
在某段时间,若对网络中某一资源(如 链路容量、交换机点的缓存和处理机) 的需求超过了该资源所能提供的可用部 分,网络性能就要变坏。
∑对资源的需求>可用资源(供不应求)
几种拥塞控制方法
慢开始 拥塞避免 快重传 快恢复
1. 慢开始和拥塞避免
发送方维持一个叫做拥塞窗口 cwnd (congestion window)的状态变量。拥塞窗口的大小取决于网 络的拥塞程度,并且动态地在变化。发送方让自 己的发送窗口等于拥塞窗口。如再考虑到接收方 的接收能力,则发送窗口还可能小于拥塞窗口。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24
拥塞避免 “加法增大”
网络拥塞 拥塞避免
20
ssthresh 的初始值16
“加法增大” “乘法减小”
新的 ssthresh 值12
慢开始
8
4
0 02
指数规律增长
传输轮次
4 6 8 10 12 14 16 18 20 22
慢开始
慢开始
发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端 窗口 rwnd 中的最小值。我们假定接收端窗口足够大, 因此现在发送窗口的数值等于拥塞窗口的数值。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24
拥塞避免 “加法增大”
20
ssthresh 的初始值16 新的 ssthresh 值12
慢开始
8
4
指数规律增长
0 0 2 4 6 8 10
慢开始
网络拥塞 拥塞避免
“加法增大” “乘法减小”
传输轮次
12 14 16 18 20 22
慢开始
接收端共发回两个确认。发送端每收到一个对新报文 段的确认,就把发送端的 cwnd 加 1。现在 cwnd 从 2 增大到 4,并可接着发送后面的 4 个报文段。
拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大, 即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规 律缓慢增长。
当网络出现拥塞时
无论在慢开始阶段还是在拥塞避免阶段,只要 发送方判断网络出现拥塞(其根据就是没有按 时收到确认),就要把慢开始门限 ssthresh 设 置为出现拥塞时的发送方窗口值的一半(但不 能小于2)。
确认 M4~M7 轮次 3
cwnd = 8 发送 M8~M15
…
t
t
传输轮次
(transmission round)
使用慢开始算法后,每经过一个传输轮次,拥塞窗口 cwnd 就加倍。
一个传输轮次所经历的时间其实就是往返时间 RTT。 “传输轮次”更加强调:把拥塞窗口 cwnd 所允许发
送的报文段都连续发送出去,并收到了对已发送的最 后一个字节的确认。 例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就 是发送方连续发送 4 个报文段,并收到这 4 个报文段 的确认,总共经历的时间。
用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。
cwnd = 1 cwnd = 2
发送方每收到一个对新报文段的确认 (重传的不算在内)就使 cwnd 加 1。
发送方
接收方
发送 M1
确认 M1
发送 M2~M3
确认 M2~M3
轮次 1 轮次 2
cwnd = 4 发送 M4~M7
然后把拥塞窗口 cwnd 重新设置为 1,执行慢 开始算法。
这样做的目的就是要迅速减少主机发送到网络 中的分组数,使得发生拥塞的路由器有足够时 间把队列中积压的分组处理完毕。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24 20
ssthresh 的初始值16 新的 ssthresh 值12
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24
拥塞避免 “加法增大”
20
ssthresh 的初始值16 新的 ssthresh 值12
慢开始
8
4
指数规律增长
0 0 2 4 6 8 10
慢开始
网络拥塞 拥塞避免
“加法增大” “乘法减小”
传输轮次
12 14 16 18 20 22
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24
拥塞避免 “加法增大”
20
ssthresh 的初始值16 新的 ssthresh 值12
慢开始
8
4
指数规律增长
0 0 2 4 6 8 10
慢开始
网络拥塞 拥塞避免
“加法增大” “乘法减小”
传输轮次
12 14 16 18 20 22
慢开始
发送端每收到一个确认 ,就把 cwnd 加 1。于是发送 端可以接着发送 M1 和 M2 两个报文段。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24
拥塞避免 “加法增大”
20
ssthresh 的初始值16 新的 ssthresh 值12
8
4
指数规律增长
0 0 2 4 6 8 10
慢开始
网络拥塞 拥塞避免
“加法增大” “乘法减小”
传输轮次
12 14 16 18 20 22
慢开始
在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1, 发送第一个报文段 M0。