第8章 传输层(6)_拥塞控制

6. 拥塞控制

6.1 拥塞控制的原理

(1)理想状态下:路由器R1和R2向R3提供负载不超过1000Mb/s,都能从R3发送到R4。当提供的负载超过1000Mb/s后,不能再提高了,多余的数据包将被丢弃

(2)实际情况:网络系统的吞吐量与输入负载之间的关系不是线性的。随着提供的负载增大,网络的吞吐量增长速率逐渐减小。在网络未达到饱和时就有一部分输入分组被丢弃,当网络的吞吐量明显小于理想吞吐量就开始出现轻度拥塞现象。当负载达到某一数值时,网络的网络的吞吐量反而随提供负载的增大而下降,这时网络进入拥塞状态。直至网络吞吐量下降到零,就产生所谓的死锁

6.2 拥塞控制方法:慢开始和拥塞避免

(1)慢开始(Slow-start)

  ①A和B建立TCP连接,协商参数(最大报文MSS=100字节,接收窗口rwnd=3000),假设假设B发送的每个分组100字节。为了避免网络拥堵时出现大量丢包,TCP会先感知一下网络状态,再调整发送速度如果发送一个分组,不丢包,就可以进一步提高发送速度,这就是慢开始。等丢包以后就可以断定出现堵塞(现代通信质量很高,出错而造成重传的概念很小(远小于1%)),再放慢增速,这就是慢开始。

  ②刚开始发送方将拥塞窗口(cwnd)初始为100字节(由MSS有关),先发送一个分组M1,接收方收到后确认M1,然后发送收到对M1的确认。

  ③发送方每收到一个新报文段的确认(重传的不算)就调整发送方的cwnd为原来的2倍。于是将cwnd从100增到200,便开始发送M2和M3两个分组。同样得到了接收方的确认。

  ④发送方继续将cwnd从200提高到400,并发送M4~M7共4个分组。因此慢开始算法就是每经过一轮次,拥塞窗口cwnd就加倍

(2)拥塞避免(Congestion Avoidance)

  ①当TCP连接初始化时,把拥塞窗口cwnd=100字节(即MSS的值),慢开始门限ssthresh初始值为1600。当cwnd<ssthresh时,使用慢开始算法。即发送方每收到一个对新报文段的确认ACK,就把拥塞窗口值加倍(指数规律增长),来增大发送分组的速率。

  ②当cwnd增加到超过ssthresh时就改为拥塞避免算法。即拥塞窗口按线性规律增大,每经过一个轮次增加一个MSS(100)的大小,来降低发送速率。

  ③但拥塞窗口增加到2400时,网络出现拥塞。就将sstresh值变1200(即发生拥塞时cwnd的1/2)。然后cwnd重新设置为100,并执行慢开始算法。

  ④慢开始算法的拥塞避免存在一个问题:网络一旦出现丢包(不一定是拥塞引起的),就会马上将ssthresh降低一半,同时cwnd减小为1个MSS,并重新执行慢开始算法。这代价很大,现在一般普遍使用的是快重传和快恢复算法。

6.3 拥塞控制方法:快重传和快恢复

(1)快重传(Fast Restransmit)

  ①快重传算法要求接收方每收到一个失序的分组后,发送方都能及早地发现于是就要求接收方立即重复确认(如图中M3丢弃后,会连续发送3个重复确认包M2),而不要等发送方对M3超时重传时才发现丢包。

  ②由于接收方收到了M1、M2并进行了确认,但不能确认M4,因为M4是收到的失序失组。于是根据快重传的规定,这时接收方会连续发出3个对M2的重复确认,以告诉发送方M3到达,要求重传。发送方接收到三个连续的对M2的重复确认,就会立即重传M3而不必等到M3的重传计时器到期。(该算法会使整个网络的吞吐量增加约20%,加大了网络的负担)。

(2)快恢复(Fast Recovery)

  ①当发送方连续收到三个重复确认时,就执行“乘法减小”算法。即把慢开始门限减半(为1200)。但请注意,接下来不执行慢开始算法,而是执行快恢复算法。

  ②发送方认为现在网络很可能没有发生拥塞,可能只是网络一些小故障。(因为如果网络发生了严重拥塞,就不会一连有好几个报文段连续到达接收方,就不会连续发送重复确认)。因此,与慢开始不同,现在它不执行慢开始算法而是执行快恢复,即cwnd不设为MSS,而是让cwnd=ssthresh=1200(即为2400的一半),然后加法线性增大

6.4 发送窗口的上限

(1)发送方的发送窗口受拥塞控制(cwnd)和接收方的接收窗口(rwnd)大小的影响。从接收方对发送方的流量控制的角度考虑,发送方的发送窗口一定不能超过对方给出的接收窗口值。

(2)发送方窗口的上限值=min(rwnd, cwnd)

时间: 2024-10-17 12:26:31

第8章 传输层(6)_拥塞控制的相关文章

第五章 传输层

传输层的两个协议 TCP(Transmission Control Protocol,传输控制协议)需要将要传输的        文件分段传输   建立会话     可靠传输      流量控制 UDP(User Data Protocol,用户数据报协议)  一个数据包就能够完成数据通信 不分段 不需要建立会话 不可靠传输  不需要流量控制 常见使用UDP协议:QQ消息  屏幕广播 多播 广播  DNS解析 查看会话 netstat -n 查看建立会话的进程 netstat -nb 传输层协议

第8章 传输层(1)_TCP/UDP协议的应用场景

1. 传输层的两个协议 1.1 TCP和UDP协议的应用场景 (1)TCP协议:如果要传输的内容比较多,需要将发送的内容分成多个数据包发送.这就要求在传输层用TCP协议,在发送方和接收方建立连接,实现可靠传输.流量控制和拥塞避免.(如下载500M电影.QQ好友传输文件.浏览网页.发送电子邮件等) (2)UDP协议:一个数据包就能发送全部内容,不需要持续发送,发送方和接收方不需要建立连接.由于就一个数据包不需要流量控制和拥塞避免,在传输层不需要负责可靠传输.如果数据包发送出去,应用程序没有收到返回

第8章 传输层(3)_TCP协议

3. 传输控制协议(TCP) 3.1 TCP协议的主要特点 (1)TCP是面向连接的传输层协议.即使用TCP协议之前必须先建立TCP连接.在传送数据完毕之后,必须释放己经建立的TCP连接. (2)每一条TCP连接只能有两个端点,即只能是一对一的. (3)TCP提供可靠交付服务,也就是说通过TCP连接传送的数据,无差错.不丢失.不重复且按序发送. (4)TCP提供全双工通信.TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据.这就允许通信双方在任何时候都可以发送数据. (5)面向

第二章 传输层:TCP、UDP和SCTP

//1. IPv4 : 网际协议版本4.使用32位地址.IPv4给TCP.UDP.SCTP.ICMP.IGMP提供分组递送服务. IPv6 : 网际协议版本6.使用128位地址.IPv6给TCP.UDP.SCTP.ICMPv6提供分组递送服务. TCP/IP协议概况: IP协议: //2. UDP简介: UDP是一个简单的传输层协议,应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报中, 该UDP数据包又被封装入一个IP数据报,然后发送至目的地.UDP不保证其数据报会到达

数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点

上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Control Procotol )协议是一个面向连接,可靠的协议.TCP为了提供面向连接的服务,专门定义了连接创建,数据传输.连接终止阶段.TCP使用GBN和SR协议来提供可靠性.为了实现可靠性这个目标,TCP使用检验和来进行误差控制.重传来处理数据包丢失和冲突.同时还利用了应答和计数机制.在本节,首先讨论

【知识强化】第五章 传输层 5.3 TCP协议

这节课我们来学习一下TCP协议的特点以及TCP报文段的格式. 首先呢我们来看一下TCP有哪些特点呢.之前我们说过TCP它是一个比较可靠的面向连接的协议,所以最主要的特点它是可以面向连接的一种传输层协议.那之所以说面向连接呢就是指应用程序在使用这个TCP协议之前,必须要先建立好一个TCP的连接,在传输数据完毕之后呢再释放这个已经建立的连接.也就是说俩应用进程之间的通信啊好像就是在打call一样,啊只要两个人电话打通了才可以进行数据的传输,也就是TCP它面向连接的一个特点.那这里面为什么说它是虚连接

第8章 传输层(5)_流量控制

5. 流量控制 (1)流量控制:就是让发送方的发送速率不要太快,要让接收方来得及接收. (2)流量控制原理 ①在客户端向服务器发送TCP连接请求时,TCP首部会包含客户端接收窗口的大小,服务器就会根据这个窗口调整自己发送窗口的大小. ②在传输过程中,客户端发送的确认数据包,除了确认号还包含窗口信息,服务器收到确认数据包后,会根据窗口信息调整发送窗口.通过这种方法进行流量控制. (3)流量控制过程 ①在连接建立时,B告诉A"我的接收窗口(rwnd)为400字节",这时A的发送窗口就被设置

第8章 传输层(2)_UDP协议

2. 用户数据报协议(UDP) 2.1 UDP的特点 (1)UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延. (2)UDP使用了尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表,通信的两端不用保持连接,因此节省系统资源. (3)UDP是面向报文的.UDP对应用层下来的报文即既不合并,也不拆分,而是保留这些报文的边界.也就是说应用层交给UDP多长的报文,UDP就原样发送,即一次发送一个报文.(这要求应用程序必须选择合适大小的报文,以免降低IP

第8章 传输层(7)_TCP连接管理

7. TCP连接管理 7.1 TCP的连接建立 (1)三次握手 ①三次握手过程 A.第1.2次握手,数据包的SYN均为1,表示用于同步.即第1次客户端发起请求,并将自己的连接参数(如接收窗口大小.MSS和是否支持SACK等)告知服务器.第2次连接是服务器收到连接请求后作出确认,同时其自己的连接参数告知客户端,这主要是出于双向通信的需要).因此SYN=1表示,这两个数据包主要用于协商和同步通信双方的连接参数).ACK=1表示是一个确认包.ack表示确认的数据包序号. B.第3次握手用于告知客户端服