计算机网络(10)-----TCP的拥塞控制

TCP的拥塞控制

拥塞(congestion)

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

拥塞控制

  拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

  

  如图所示,横坐标是提供的负载(offered load),代表单位时间内输入给网络的分组数目。纵坐标是吞吐量(throughput),代表单位时间内从网络输出的分组数目。

  理想状态:在吞吐量饱和之前,网络吞吐量应等于提供的负载,故吞吐量曲线是45度的斜线。但当提供的负载超过某一限度时,由于网络资源受限,吞吐量不再增长而保持为水平线,即吞吐量达到饱和。

  实际状态:随着提供的负载的增大,网络吞吐量的增大速率逐渐减小。也就是说,在网络吞吐量还未达到饱和时,就已经有一部分的输入分组被丢弃了。当网络的吞吐量明显的小于理想的吞吐量时,网络就进入了轻度拥塞的状态。当提供的负载达到某一数值时,网络的吞吐量反而随提供的负载的增大而下降,这时网络就进入了拥塞状态。当提供的负载继续增大到某一数值时,网络的吞吐量就下降到零,网络无法工作,这就是所谓的死锁(deadlock)。

几种拥塞控制的方法

  慢开始(slow-start)

  发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态的在变化。

  慢开始的算法是这样的:

    如果立即把大量的数据字节注入到网络,那么就有可能引起网络阻塞,所以由小到大逐渐增大发送窗口数值,即由小到大逐渐增大拥塞窗口数值

  

    开始先设置cwnd = 1,发送第一个报文段M1,接收方收到后确认M1。发送方收到对M1的确认后,把cwnd从1增大到2,于是发送方接着发送M2和M3两个报文段。接收方收到后发回对M2和M3的确认。发送方每收到一个对新报文段的确认,就使发送方的拥塞窗口加1,因此发送方收到两个确认后,cwnd就从2增大到4,并可以发送M4-M7共4个报文段。因此使用慢开始算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍。

  为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量。用法如下

    当cwnd<ssthresh时,使用上述的慢开始算法。

    当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。

    当cwnd=ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。

   拥塞避免算法(congestion avoidance)

  算法思路:

    让拥塞窗口cwnd缓慢增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样,拥塞窗口cwnd按线性规律缓慢增长,比慢开始短发的拥塞窗口增长速率缓慢很多。

  

  实例:

    (1)为了便于理解,途中的窗口单位不使用字节而使用报文段的个数。慢开始门限的初始值设置为16个报文段。即ssthresh=16。

    (2)在执行慢开始算法时,拥塞窗口cwnd的初始值为1。拥塞窗口cwnd随着传输轮次按指数规律增长。当拥塞窗口cwnd增长到慢开始门限ssthresh时,就改为执行拥塞避免算法,拥塞窗口按线性增长。

    (3)假定拥塞窗口的数值增长到24时,网路出现超时。更新后的ssthresh值变为12(即为24的一半),拥塞窗口再设置为1,并开始慢开始算法。当cwnd=ssthresh=12时改为执行拥塞避免算法,拥塞窗口按线性规律增长。

  快重传(fast retransmit)

   

  算法思路:

    接收方每收到一个失序的报文段后就立即发出重复确认而不要等待自己发送数据时才捎带确认。如图所示,接收方收到了M1和M2后都分别发出了确认。现假定接收方没有收到M3,但是收到了M4。显然,接收方不能确认M4,因为M4是失序的报文段。根据可靠传输原理,接收方可以什么都不做,也可以在适当时机发送一次对M2的确认。但是在快重传的规定里,接收方应及时发送对M2的重复确认,这样做可以让发送方及早知道报文段M3没有达到接收方。发送方接着发送M5和M6。接受方收到后,也还要再次发出对M2的重复确认。这样,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段M3,不必等到重传计时器到期。

  快恢复(fast recovery)

  

  算法思想:

    当发送方连续收到三个重复确认时,不执行慢开始算法,由于发送方现在认为网络很有可能没有发生拥塞,因此,与慢开始不同之处是现在不执行慢开始算法,而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。如图所示,TCP Reno版本就是在快重传之后采用快恢复算法,而不是采用慢开始算法

时间: 2024-10-09 08:16:49

计算机网络(10)-----TCP的拥塞控制的相关文章

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽.交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这样的情况就叫做拥塞. 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载.要注意用拥塞控制与流量控制的差别,拥塞控制是一个全局性的过程,涉及到全部的额主机.路由器,以及与减少网 拥塞控制的算法有:慢開始.拥塞避免.快重传.快恢复四种. 慢開始和拥塞避免 发送方维持一个拥塞窗体的状态变量,其大小取决于网络的拥

TCP/IP拥塞控制

TCP/IP拥塞控制包括:慢启动和拥塞避免.其操作流程如下所述: 初始化.拥塞窗口cwnd = 1,慢启动门限ssthresh = 65535 如果没有发生拥塞 若 cwnd < ssthresh 则执行慢启动,cwnd = cwnd + 1.相当于发送字节数以指数形式上升 若cwnd >= ssthresh 则执行拥塞避免,cwnd = cwnd + 1/cwnd.相当于发送字节数以线性方式上升 如果发生拥塞 ssthresh = cwnd / 2 若因为超时引发拥塞.cwnd = 1 若因

【网络】TCP的拥塞控制

一.拥塞控制的一般原理 拥塞:对网络中某一资源的需求超过了该资源所能提供的可用部分 拥塞控制是防止过多的数据注入到网络,这样可以使网络中的路由器或链路不致过载,拥塞控制是一个全局性的过程. 流量控制往往指点对点通信量的控制,是个端到端的问题. 二.拥塞控制的四种算法 1.慢开始和拥塞避免 发送方维持一个叫做拥塞窗口cwnd的状态变量.拥塞窗口的大小取决于网络的拥塞程度,并且动态地变化.发送方让自己的发送窗口等于拥塞窗口. 慢开始算法:使用慢开始算法后,每经过一个传输轮次,拥塞窗口就加倍. 为了防

计算机网络之TCP拥塞控制

1. 首先,拥塞控制和流量控制是不一样的. 拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程.  流量控制是点对点通信量的控制,是一个端到端的问题,主要就是抑制发送端发送数据的速率,以便接收端来得及接收. 2. 拥塞的标志:1.重传计时器超时 2.接收到三个重复确认 3. 发送方维持一个叫做拥塞窗口的状态变量.拥塞窗口的大小取决于网络的拥塞程度,且动态地在变化. 慢开始和拥塞避免: 1.慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的

计算机网络知识—(TCP)

计算机网络在IT行业的重要性 IT即互联网技术,从事的工作和网络有很大的关系,前端要负责和后台(服务器)进行交互,其必然得经过网络,所以懂点网络知识有很大的帮助. 网络模型数据处理过程 传输层协议的作用 提供了一种端到端(end to end)的连接,一般为前端和后台服务器的连接 由于网络层只管传递数据,并不关心成功与否,TCP协议在数据丢失.损坏的情况下保证数据的可靠性 传输层协议的分类 传输控制协议TCP(Transimision Control Protocal): 可靠的.面向连接的协议

计算机网络(7)-----TCP协议概述

传输控制协议(Transmission Control Protocol) 概念 一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议. 主要特点 (1)TCP是面向连接的运输层协议.这就是说,应用程序在使用TCP协议之前,必须先建立TCP协议.在传送数据完毕后,必须释放已经建立的TCP连接.类似于“打电话”,需要先拨号建立连接,通话完之后要挂机释

计算机网络(11)-----TCP连接的建立和释放

TCP连接的建立和释放 概述 TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程,运输连接有三个阶段:连接建立,数据传送和连接释放. TCP连接的建立 如图所示,假定A主机是客户端程序,B主机是服务端程序.最初两端的TCP进程都是出于CLOSED(关闭)状态. (1)B的TCP服务器进程先创建传输控制块TCB(transmission Control Block),准备接受客户进程的连接请求.然后服务器就进入LISTEN(监听)状态,等待客户端的连接请求. (2)A的TCP客户进程

计算机网络之TCP协议与UDP协议

运输层向它上面应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层. 两个主机进行通信实际上就是两个主机中的应用进程互相通信.应用进程之间的通信又称为端到端的通信. 应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务. 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信).运输层还要对收到的报文进行差错检测. 运输层需要有两种不同的运输协议: (1)用户数据报协议 UDP (User Datagram Protocol)

【计算机网络】TCP协议详解

常见问题 Q1. TCP报文头结构多大? Q2. TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因? Q3. TCP为何采用四次挥手来释放连接? TCP协议 首先,我们需要知道TCP在网络OSI的七层模型中的第四层——传输层(Transport),IP在第三层——网络层(Network),ARP在第二层——(Data Link),在第二层上的数据,我们叫帧(Frame),在第三层上的数据叫包(Packet),第四层的数据叫报文段(Segment). 1. TCP报文头结构 首先