1)流量控制机制该机制主要用于确保发送端发送的数据量不超过接收端的最大处理能力。TCP的流量控制具体通过滑动窗口算法来实现。地面网络常用TCP的拥塞控制机制主要包括TCP-Tahoe,TCP-Reno,TCP-SACT等。......
2025-09-29
(1)拥塞控制的基本原理
当计算机网络中的某个或多个资源(如带宽、缓存、路由器、主机等)的需求超过了该资源供给的能力而导致整个网络性能下降的现象,称为拥塞。网络出现拥塞最典型的表现是数据包的丢失,即网络吞吐量的下降。网络吞吐量与输入负荷的关系曲线如图8.9所示。
图8.9 吞吐量、拥塞控制与输入负载
对于具有理想拥塞控制的网络,在吞吐量饱和之前,网络吞吐量与提供的输入负荷是成正比的,当输入负荷达到某一数值后,由于网络资源有限,吞吐量就不再增长而保持水平线,此时吞吐量达到饱和状态。
实际情况则不同,在没有拥塞控制的情况下,随着输入负荷的增加,网络吞吐量的增长率会逐渐减慢,也就是说,在吞吐量尚未达到饱和的状态,就已经有一部分分组丢失,网络进入轻度拥塞。当输入负荷达到一定数值时,吞吐量反而会随着输入负荷的增大而下降,网络进入拥塞状态。当输入负荷继续增大到某一个数值时,吞吐量就会下降为零,各个站点无法进行有效的通信,网络无法运行。
为了改善网络性能,实际上都要采取一定的拥塞控制措施,此时的输入负荷与吞吐量的关系曲线情况就介于理想状态和无拥塞控制状态之间。从造成网络拥塞的原因来看,表面上似乎是资源短缺,只要增大网络的某些可用资源,或者减少一些用户对某些资源的需求,就可以解决网络拥塞的问题,其实不然。因为网络拥塞涉及很多因素,不能单纯通过增加网络资源解决拥塞问题。例如,增加网络结点的缓存空间,虽然有利于存放该结点的分组数目,但输出链路和主机的处理速率并未提高,只能使分组在结点中的排队时间增加,不利于解决拥塞问题。可见,只有改善整个网络输入负荷与网络资源的匹配情况,使得各部分保持平衡,才能从根本上解决拥塞问题。
实施拥塞控制有两种机制:一种是开环拥塞控制,它是在拥塞发生之前采用一些策略,以免网络进入拥塞状态,属于“预防”机制;另一种是闭环拥塞控制,它试图在拥塞发生后使网络从拥塞状态中摆脱出来,属于“恢复”机制。无论哪种拥塞控制机制,都必须了解网络内部的流量分布状况,需要在结点间传送相应的命令和信息。拥塞控制有时还需要将一些资源分配给个别用户单独使用,从而造成资源的短缺。总之,拥塞控制本身需要额外的开销,要付出一定的代价。
在互联网中,尽管网络层也试图进行拥塞控制,但真正解决网络拥塞问题需要通过传输层TCP 协议来完成。实践证明,实现拥塞控制并不容易,它属于动态控制问题。在开环控制方法中,在设计网络时必须周密地考虑产生拥塞的各种因素。在闭环控制方法中,可通过检测系统发现拥塞、发送拥塞信息、调整运行状态等达到拥塞控制的目的。过于频繁地采取措施将使网络处于不稳定的震荡状态,迟缓地采取行动又不具有任何价值,因此,在实际的拥塞控制中,只能选择某种折中措施。
从控制理论的角度分析,互联网中的拥塞控制主要采用闭环控制方法。这种拥塞控制的基本思路可描述为:网络各结点采取动态控制措施控制传输速率,使在网络拥塞时各结点的数据传输速率降低,整个网络的吞吐量下降;经过一段时间的数据传输与处理后,在网络畅通时,各结点的数据传输速率升高,从而提高网络的利用率。确定系统是否发生拥塞及拥塞情况的方法,可通过监测在发送数据时丢失数据包的情况来确定。
下面介绍TCP 采用的一些拥塞控制方法。
(2)TCP 采用的拥塞控制方法
为了进行拥塞控制,TCP 为每条连接维持两个变量:一个是拥塞窗口(cwnd);另一个是慢启动阈值(ssthresh)。ssthresh 被用来确定是进入慢启动阶段还是进入拥塞避免阶段,一般将ssthresh 的初始值设置为通告窗口(又称为接收窗口或通知窗口)的值。
引入拥塞窗口cwnd 后,TCP 发送方的最大发送窗口修改为“允许发送方发送的最大数据量为当前拥塞窗口和通告窗口的极小值”。这样,TCP 的有关窗口变量修改为:
MaxWindow=MIN(cwnd,rwnd)
EffectiveWindow=MaxWindow-(LastByteSent-LastByteAcked)
也就是说,在有效窗口的计算中,用最大窗口代替了通告窗口。这样,TCP 发送方发送报文的速率就不会超过网络或目的结点可接收速率中的较小值。
TCP 拥塞控制主要根据网络拥塞状况调节拥塞窗口的大小。针对如何控制拥塞窗口值的大小以达到拥塞控制的问题,TCP 曾出现过多种版本。2025年公布的RFC2581 定义了四种拥塞控制算法:慢启动、拥塞避免、快重传和快恢复。后来,RFC2582 和RFC3390 又对这些算法进行了改进。拥塞控制可以使这四个机制共同作用,以达到更好的效果。
1)慢启动和拥塞避免
慢启动是指TCP 刚建立连接时将拥塞窗口cwnd 设为一个报文大小,然后以指数方式放大拥塞窗口cwnd,直到拥塞窗口cwnd 等于慢启动阈值ssthresh。
慢启动算法的具体步骤描述如下:
①TCP 将拥塞窗口cwnd 的值设为“1”,然后TCP 发送一个报文;(https://www.chuimin.cn)
②如果TCP 收到接收方的确认报文,则TCP 设置拥塞窗口cwnd 等于原来拥塞窗口cwnd的两倍,然后TCP 按照有效窗口的值发送报文。
③重复执行步骤②,直到拥塞窗口大于等于慢启动阈值ssthresh 或监测到网络产生拥塞为止。
④进入拥塞避免阶段。
在拥塞避免阶段,TCP 采用线性增加的方式放大拥塞窗口,即发送方每收到一个确认报文,就将拥塞窗口的值增加“1”,然后TCP 按照有效窗口的值发送报文,直到监测到网络产生拥塞为止。
无论是慢启动阶段还是拥塞避免阶段,如果发生超时重传(即网络可能产生拥塞),则拥塞窗口的值回到慢启动阶段,即将拥塞窗口的值设为“1”,而慢启动阈值ssthresh 减半,表明其按照指数规律减小,这就是所谓的乘倍减小。
慢启动和拥塞避免算法示意图如图8.10所示。
图8.10 慢启动和拥塞避免算法
图8.10 的曲线表明:使用慢启动在网络拥塞时动态调整拥塞窗口的大小时,只要网络出现一次超时(即出现一次网络拥塞),就把阈值ssthresh 减半。当网络出现频繁拥塞时,阈值ssthresh 就下降得很快,大大减少了输入网络的分组数,使得发生网络拥塞时拥塞窗口的值迅速减小,从而使拥塞的情况得以缓解。当执行拥塞避免算法后,收到对报文的确认就将拥塞窗口加“1”,以使拥塞窗口慢慢增大,达到防止网络过早出现拥塞的目的。
2)快重传和快恢复
当TCP 报文不能按序到达接收方TCP 时,接收方就会产生一个重传ACK 给发送方;发送方收到这个重传ACK 后,还不能确定是由于报文丢失还是报文失序所产生的重传请求。实质上,有时个别报文段在网络中丢失,但网络也并未发生拥塞。如果发送方迟迟收不到确认,就会产生超时,则会误认为网络发生了拥塞,从而导致发送方错误地启动慢启动,降低了传输效率。
快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是立即发送确认,即收到了失序的报文段要立即发出对已收到报文段的重复确认。这样,如果发送方连续收到三个重复ACK,则意味着某个个别的报文丢失了,但网络还没有发生拥塞。此时发送方不必等待该报文的超时,而是立即重传该报文,这样就不会出现超时,发送方也不会误认为网络出现拥塞,这就是快重传。快重传避免了出现个别报文段丢失后发送方必须等待超时后才重传丢失的报文,可以使整个网络的吞吐量提高约20%。
在快重传后,发送方不是进入慢启动阶段,而是进入拥塞避免阶段,这就是快恢复的含义。当发送方收到重传ACK 后,不仅意味着某个报文的丢失,还意味着在丢失报文后还能收到后面的报文。由于网络上仍然可以传送报文,发送方认为网络拥塞还不是很严重,如果这时进入慢启动阶段显得有些保守,应该进入拥塞避免阶段。
如图8.11 给出了拥塞避免、慢启动、快重传和快恢复这四种机制组合在一起进行拥塞控制的拥塞窗口变化情况。
图8.11 四种机制组合的拥塞控制算法
当TCP 连接进行初始化时,拥塞窗口cwnd 值置为“1”。为了便于理解,图8.11 中的窗口单位使用报文段个数。在图8.11 中,慢启动门限的初始值设为16。在执行慢启动算法时,发送方每收到一个对新报文段的确认后,就将拥塞窗口cwnd 值增加一倍,然后开始下一轮的传输。当拥塞窗口cwnd 值增长到慢开始门限值ssthress 时,就改为执行拥塞避免算法,拥塞窗口按线性规律增长。
当拥塞窗口cwnd=24 时,网络出现了异常,发送方连续收到了三个重复ACK,则据此判断个别报文段丢失,按照快恢复算法,拥塞窗口cwnd 的值置为原来的1/2(即cwnd =12),并执行拥塞避免算法。若此时发送端产生了超时,则判断网络产生了拥塞。这种情况下,TCP 发送端将阈值ssthresh 减为产生拥塞时拥塞窗口cwnd 原值的一半(即ssthresh =12),同时设置拥塞窗口cwnd=1,进入慢启动阶段。
采用这样的拥塞控制方法使得TCP 的性能明显改进。
在拥塞控制的讨论中,假定的是接收方有足够大的缓存空间,因而发送窗口的大小由拥塞程度来决定。但实际上接收方的缓存空间总是有限的,接收方根据自己的接收能力设置接收窗口rwnd,并将这个窗口值写入TCP 首部中的窗口字段,传送给发送方。因此,结合流量控制,发送方的窗口上限值应当取接收窗口rwnd 和拥塞窗口cwnd 这两个变量中较小的一个。当rwnd <cwnd 时,接收方的接收能力限制发送窗口的最大值;反之,则是网络的拥塞程度限制发送窗口的值。
相关文章
1)流量控制机制该机制主要用于确保发送端发送的数据量不超过接收端的最大处理能力。TCP的流量控制具体通过滑动窗口算法来实现。地面网络常用TCP的拥塞控制机制主要包括TCP-Tahoe,TCP-Reno,TCP-SACT等。......
2025-09-29
TCP 连接的建立是从客户向服务器发送一个主动打开请求而启动的。当其中一方发送完数据后,就会关闭它这一方的连接,同时向对方发送撤销TCP 连接的报文。TCP 连接的建立使用了三次握手机制。实际上,TCP 要求建立连接的每一方随机地选择一个初始序号,这样可防止黑客容易猜测到初始序号而进行TCP 连接劫持攻击。收到一个FIN 只意味着这一方向上没有数据流动,一个TCP 连接在收到一个FIN 后仍然能够发送数据。......
2025-09-30
TCP 报文共分为两部分:TCP 首部和TCP 数据,如图8.3所示。图8.3TCP 报文格式TCP 首部各字段的含义如下:源端口和目的端口这两个字段分别表示源端口和目的端口。因为TCP 是面向字节流的协议,所以报文段中的每个字节都有编号。URG:URG 标志位为“1”时,表示TCP 报文的数据段中包含紧急数据,紧急数据在TCP 报文数据段的位置由紧急指针字段给出。MSS 告诉对方TCP“我的缓存所能接收的报文段其数据字段的最大长度是MSS 个字节”。......
2025-09-30
TCP/IP 模型各层的功能如下:网络接口层网络接口层是TCP/IP 模型的最底层,也被称为网络访问层,与OSI 模型的物理层及数据链路层对应。网际层网际层是TCP/IP 体系结构的关键,主要功能是处理来自传输层的分组,将分组形成数据包,并为该数据包进行路径选择,最终将数据包从源主机发送到目的主机。......
2025-09-30
TCP/IP协议是一个协议集,其中最重要的是TCP协议与IP协议,因此通常将这诸多协议统称为TCP/IP协议集,如图2.8所示。图2.8TCP/IP模型中的协议与网络图1.网际层协议网际协议IP。1).IP协议特点:一是提供无连接的数据报传输机制;二是能完成点对点的通信。2)IP协议的作用:用于主机与网关、网关与网关、主机与主机之间的通信。网际控制报文协议ICMP:为IP协议提供差错报告。UDP与IP比较,增加了提供协议端口的能力以保证进程间的通信。......
2025-09-30
接口电路是将由被控装置或生产系统的信号经转换引入计算机及计算机发出指令去控制调整被控装置或生产系统的重要通道,在这个通道里必须设置“防火墙”,也就是隔离器才能使系统正常工作。......
2025-09-29
与“争用型”的CSMA/CD 完全不同的另外一种介质访问控制方法是令牌技术。在令牌访问控制中,采取“轮询”方式访问共享信道。对于令牌环,线路利用率提高也意味着网络中的数据量增大,但由于其采用的是轮询的共享介质访问方法,虽然也会造成平均传输延迟的提高,但其影响程度较CSMA/CD 小。......
2025-09-30
相关推荐