第7讲传输层.ppt

上传人:本田雅阁 文档编号:2567356 上传时间:2019-04-09 格式:PPT 页数:50 大小:470.01KB
返回 下载 相关 举报
第7讲传输层.ppt_第1页
第1页 / 共50页
第7讲传输层.ppt_第2页
第2页 / 共50页
第7讲传输层.ppt_第3页
第3页 / 共50页
第7讲传输层.ppt_第4页
第4页 / 共50页
第7讲传输层.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第7讲传输层.ppt》由会员分享,可在线阅读,更多相关《第7讲传输层.ppt(50页珍藏版)》请在三一文库上搜索。

1、1/38,第 17讲 传输层(3),2/38,知识回顾,TCP可靠传输工作原理 TCP可靠传输的实现 TCP的流量控制,3/38,本讲内容,理解TCP 拥塞控制 理解TCP 拥塞控制的四种算法及相互关系 了解采用随机早期丢弃 RED 进行拥塞控制 掌握TCP建立连接的三次握手 理解TCP连接的拆除,4/38,TCP拥塞控制思想,当网络中存在过多的报文时,网络的性能就会相应下降,这种现象就被成为拥塞 。 发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。 拥塞控制的思想就是网络中的节点采取一定的措施来保证尽量使得网络的负载保持在Knee(拐点)位置

2、,需要避免拥塞的发生或者对拥塞的发生作出反应,使其能够再次恢复到Knee位置,从而保持网络的整体性能最大化。,5/38,流量控制和拥塞控制比较,流量控制主要是考虑接收端,不要发送过快,超过对方的接收能力,而拥塞控制则是要考虑到整个网络环境,使其负载不能超过网络的最大承受能力。 出现资源拥塞的条件: 对资源需求的总和 可用资源 (5-7) 显然拥塞发生的原因是因为“需求”“供给”,网络中的有限资源被多用户共享使用,网络本身无法根据资源的利用情况来限制某些用户。 随着目前互联网的发展,上网的用户和应用的数量也随之增长,这样,如果不采取某种措施来协调资源的使用,那么拥塞的发生就是必然的。,6/38,

3、拥塞控制与流量控制的关系,拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。 拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。 流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。 流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。,7/38,拥塞控制所起的作用,提供的负载,吞吐量,0,8/38,开环控制和闭环控制,开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。 闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施: 监测网络系统以便检测到拥塞在何时、何

4、处发生。 将拥塞发生的信息传送到可采取行动的地方。 调整网络系统的运行以解决出现的问题。,9/38,拥塞控制算法,一般来说,拥塞控制算法包括拥塞避免和拥塞控制 拥塞避免是一种“预防”措施,维持网络的高吞吐量、低延迟状态,避免进入拥塞;拥塞控制是一种“恢复”措施,使网络从拥塞中恢复过来,重新进入高吞吐量和低延迟的状态 为了在传输层进行拥塞控制,1999年公布的互联网建议标准RFC 2581定义了四种算法,即慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery)。,10/38,慢开始和拥塞

5、避免,发送方维持一个叫做拥塞窗口 cwnd (congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。 发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。 发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。,11/38,TCP拥塞控制两个状态量,因此,每一个 TCP 连接需要有以下两个状态变量: 接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised

6、window)。这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。 拥塞窗口 cwnd (congestion window)。是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。,12/38,发送窗口的上限值,发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定: 发送窗口的上限值 Min rwnd, cwnd (7-1) 当 rwnd cwnd 时,是接收端的接收能力限制发送窗口的最大值。 当 cwnd r

7、wnd 时,则是网络的拥塞限制发送窗口的最大值。,13/38,慢开始算法的原理,在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。 在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。,慢开始和拥塞避免算法的实现举例,当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。,2,4,6,8,10,12,14,16,18,20,22,0,0,4

8、,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现举例,发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现

9、举例,在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1,发送第一个报文段 M0。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现举例,发送端收到 ACK1 (确认 M0,期望收到 M1)后,将 cwnd 从 1 增大到 2,于是发送端可以接着发送 M1 和 M2 两个报文段。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数

10、,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现举例,接收端发回 ACK2 和 ACK3。发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1。现在发送端的 cwnd 从 2 增大到 4,并可发送 M4 M6共 4个报文段。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,“乘法减小”,慢开始和拥塞

11、避免算法的实现举例,发送端每收到一个对新报文段的确认 ACK,就把发送端的拥塞窗口加 1,因此拥塞窗口 cwnd 随着传输次数按指数规律增长。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,“乘法减小”,慢开始和拥塞避免算法的实现举例,当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。,2,4,6,8,10,12,14,

12、16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现举例,假定拥塞窗口的数值增长到 24 时,网络出现超时(表明网络拥塞了)。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现举例,更新后的 ssthresh 值变为 12(即发送窗

13、口数值 24 的一半),拥塞窗口再重新设置为 1,并执行慢开始算法。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh = 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,慢开始和拥塞避免算法的实现举例,当 cwnd = 12 时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个 MSS 的大小。,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,24,传输次数,拥塞窗口 cwnd,ssthresh

14、= 16,慢开始,慢开始,拥塞避免,拥塞避免,更新后的 ssthresh = 12,24/38,两个原则,乘法减小(multiplicative decrease) 乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。 当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。 加法增大(additive increase) “加法增大”是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网

15、络过早出现拥塞。,25/38,发送方,接收方,发送 M1,确认 M1,发送 M2M3,确认 M2M3,发送 M4M7,确认 M4M7,cwnd = 1,cwnd = 2,cwnd = 4,发送 M8M15,cwnd = 8,发送方每收到一个对新报文段的确认 (重传的不算在内)就使 cwnd 加 1。,轮次 1,轮次 2,轮次 3,26/38,传输轮次 (transmission round),使用慢开始算法后,每经过一个传输轮次,拥塞窗口 cwnd 就加倍。 一个传输轮次所经历的时间其实就是往返时间 RTT。 “传输轮次”更加强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到

16、了对已发送的最后一个字节的确认。 例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。,27/38,设置慢开始门限状态变量ssthresh,慢开始门限 ssthresh 的用法如下: 当 cwnd ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。 拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓

17、慢增长。,28/38,快重传和快恢复,快重传算法规定,发送端只要连续收到三个重复的 ACK 即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。 不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。,快重传举例,主机 A,主机 B,B 确认 M1 和 M2,A 发送 M1 和 M2,A 收到了三个重复的确认 ACK3,就立即重传 M3,而不必等待超时重传。,A 发送 M3 但丢失了,A 发送 M4,A 发送 M5,B 发送第二个重复确认 ACK3,A 发送 M6,B 发送第三个重复确认 ACK3,B 只能再次确认 M2(因为

18、M3 没有收到),30/38,快恢复算法,(1) 当发送端收到连续三个重复的 ACK 时,就重新设置慢开始门限 ssthresh。 (2) 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为 ssthresh + 3 MSS。 (3) 若收到的重复的 ACK 为 n 个(n 3),则将 cwnd 设置为 ssthresh + n MSS。 (4) 若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。 (5) 若收到了确认新的报文段的 ACK,就将 cwnd 缩小到 ssthresh。,31/38,24,从连续收到三个重复的确认 转入拥塞避免,2,4,6,8,10,12,

19、14,16,18,20,22,0,0,4,8,12,16,20,传输轮次,拥塞窗口 cwnd,收到 3 个重复的确认 执行快重传算法,慢开始,“乘法减小”,拥塞避免 “加法增大”,TCP Reno 版本,TCP Tahoe 版本 (已废弃不用),ssthresh 的初始值,拥塞避免 “加法增大”,新的 ssthresh 值,慢开始,快恢复,32/38,随机早期丢弃 RED (Random Early Discard),使路由器的队列维持两个参数,即队列长度最小门限 THmin 和最大门限 THmax。 RED 对每一个到达的数据报都先计算平均队列长度 LAV。 若平均队列长度小于最小门限 TH

20、min,则将新到达的数据报放入队列进行排队。 若平均队列长度超过最大门限 THmax,则将新到达的数据报丢弃。 若平均队列长度在最小门限 THmin 和最大门限THmax 之间,则按照某一概率 p 将新到达的数据报丢弃。,33/38,随机早期丢弃 RED,RED 将路由器的到达队列划分成为三个区域,从队首 发送,最小门限 THmin,最大门限 THmin,数据报 到达,平均队列长度 Lav,排队,丢弃,以概率 p 丢弃,34/38,TCP 的传输连接管理,传输连接有三个阶段,即:连接建立、数据传送和连接释放。传输连接的管理就是使其连接的建立和释放都能正常地进行。 连接建立过程中要解决以下三个问

21、题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。,35/38,客户服务器方式,TCP 连接的建立都是采用客户服务器方式。 主动发起连接建立的应用进程叫做客户(client)。 被动等待连接建立的应用进程叫做服务器(server)。,36/38,用三次握手建立 TCP 连接,CLOSED,CLOSED,A,B,客户,服务器,A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送 数据时的第一个数据字节的序号是 x。

22、,37/38,用三次握手建立 TCP 连接,CLOSED,CLOSED,A,B,客户,服务器,B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。 B 在确认报文段中应使 SYN = 1,使 ACK = 1, 其确认号ack = x 1,自己选择的序号 seq = y。,38/38,CLOSED,CLOSED,A,B,客户,服务器,A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y 1。 A 的 TCP 通知上层应用进程,连接已经建立。,39/38,CLOSED,CLOSED,A,B,客户,服务器,B 的 TCP 收到主机 A 的确认后,也通知其上层 应用

23、进程:TCP 连接已经建立。,40/38,建立 TCP 连接的状态变化,CLOSED,CLOSED,A,B,客户,服务器,41/38,CLOSED,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,CLOSED,数据传输结束后,通信的双方都可释放连接。 现在 A 的应用进程先向其 TCP 发出连接释放 报文段,并停止再发送数据,主动关闭 TCP 连接。 A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。,TCP 的连接释放,42/38,数据传送,通知 应用 进程,ESTAB- LISHED,ESTAB- LISHED,A

24、,B,客户,服务器,B 发出确认,确认号 ack = u 1, 而这个报文段自己的序号 seq = v。 TCP 服务器进程通知高层应用进程。 从 A 到 B 这个方向的连接就释放了,TCP 连接 处于半关闭状态。B 若发送数据,A 仍要接收。,TCP 的连接释放,43/38,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。,TCP 的连接释放,44/38,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,A 收到连接释放

25、报文段后,必须发出确认。,TCP 的连接释放,45/38,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,在确认报文段中 ACK = 1,确认号 ack w 1, 自己的序号 seq = u + 1。,ACK = 1, seq = u + 1, ack = w 1,TCP 的连接释放,46/38,ACK = 1, seq = u + 1, ack = w 1,FIN = 1, ACK = 1, seq = w, ack= u 1,FIN- WAIT-1,CLOSE- WAIT,FIN- WAIT-2,LAST- ACK,被动关闭,数据传送,ES

26、TAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,CLOSED,5.9.2 TCP 的连接释放,TCP 连接必须经过时间 2MSL 后才真正释放掉。,47/38,A 必须等待 2MSL 的时间,第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。 第二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。 每个TCP必须选择一个报文段最大生存时间(MSL)。它是任何报文段被丢弃前在网络的最长时间。 处理原则:当TCP执行一个主动关闭,并发回最后一个ACK,该连接必须在TIME_WAIT状态停留的时间为2MSL。 这可以让TCP再次发送最后的ACK以避免这个ACK丢失(另一端超时并重发最后的FIN)。这种2MSL等待的另一个结果是这个TCP连接在2MSL等待期间,定义这个连接的端口不能被使用 。,48/38,TCP 的正常的连接建立和关闭,49/38,本讲小结,TCP的拥塞控制机制 慢开始 拥塞避免 快重传 快恢复 TCP连接建立与释放,50/38,作业,上交作业 P222,33,35,37,41,42,45,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1