资源描述
单击此处编辑母版文本样式,字体,字体,字体,计算机网络原理 金可音 欢迎学生使用 计算机与通信学院,02:22,单击此处编辑母版标题样式,75,第15讲,拥塞控制;连接管理,【第5章,运输层,(第4讲)】,上讲小结(快速提问1),上讲的重点是什么?,上讲要点复习(快速提问2),TCP 的主要特点,什么是面向字节流的控制方法,序号、确认序号、窗 口的作用,如何计算加权平均往返时间RTT,S,如何计算超时重传时间 RTO,流量控制的基本思想,TCP如何实现流量控制,TCP提高传输效率的措施,TCP 报文段首部的组成,本讲内容安排,1. 拥塞控制 (5.8),1.1 拥塞控制的基本概念 (5.8.1),1.2 TCP的拥塞控制方法(5.8.2),1.2.1 拥塞窗口cwnd,1.2.2 慢开始和指数增长,1.2.3 线性增长的拥塞避免算法,1.2.4 发现拥塞时的调整,1.2.5 提高效率的相关措施:快重传和快恢复,1.3 IP层的拥塞控制方法:随机早期检测 RED丢包策略 5.8.3,2 TCP 的传输连接管理 (5.9),2.1 传输连接的三个阶段,2.2 建立连接(5.9.1),2.3 TCP 的连接释放(5.9.2),2.4 TCP 的有限状态机 (5.9.3),本讲预习情况检查(快速提问3),什么是拥塞、拥塞控制,拥塞控制与流量控制的关系,拥塞控制所起的作用,闭环的拥塞控制的主要环节,TCP的拥塞控制方法的要点,拥塞窗口 cwnd,概念:传输轮次、 ssthresh 值,慢开始+指数规律增长,“加法增大”的拥塞避免,“乘法减小”的状态转换,传输连接的三个阶段,三次联络:连接请求、确认报文、再次确认,TCP 的连接释放,1. 拥塞控制 (5.8)1.1 拥塞控制的基本概念 (5.8.1),1.1.1 什么是拥塞(congestion) :,在某段时间,对网络中某资源的需求超过该资源能提供的可用部分,,整个网络的吞吐量随输入负荷的增大而下降,(网络的性能变坏)产生了,拥塞,轻度,拥塞,输入的负载,吞吐量,0,死锁(吞吐量 = 0),没有拥塞控制的情况,拥塞,1.1.2 拥塞控制,提供的负载,吞吐量,理想的拥塞控制,实际的拥塞控制,0,死锁(吞吐量 = 0),无拥塞控制,拥塞,轻度,拥塞,拥塞控制:检测、避免和缓解拥塞的方法,1.1.3 拥塞控制的一般原理,分析,出现拥塞的原因:,对(某种)资源总需求 可用资源 (5-7),简单地增加资源,不一定能避免拥塞,如,,只增加带宽,,,造成下游站缓存资源和CPU资源更缺乏,如,,只增加A站的缓存,, 大量分组到达A时,存储等待时间很长,,引起源站更多的超时重发,,使网络中的负载更重,即,拥塞是全局性、综合性问题,是动态变化的,分析:拥塞具有“恶性循环”的特征,部分资源的不足,引起其它资源消耗增加,缓存不够而造成丢包 源站重发 源站需要更多的缓存和带宽(资源的不足),类似于交通:开始轻度堵车车速降低更多地占用道路资源堵车加剧,二类拥塞控制,开环控制,闭环控制,开环控制,开环控制方法:,设计网络时,事先考虑有关发生拥塞的因素, 力求网络在工作时不产生拥塞。,何时接受新的流量,何时开始丢弃分组,丢弃哪些分组,流量如何分配,等,如,,通信量整形法:,数据包到达较快时,最多以一种预定的速率转发。,闭环控制,基于,反馈的思想,:网络运行时,检测是否发生或可能发生拥塞,采取必要措施预防或缓解拥塞:,监测网络系统,检测何时、何处发生拥塞,,如:检测超时重传的包的数目、重传次数;,如:检测平均包延迟、平均队列长度;,如:检测缺乏缓冲区造成的丢包率;,将拥塞发生的信息传送到可采取行动的地方。,如:发送拥塞通知到源站;,调整网络系统的运行以解决出现的问题。,如, 源站放缓发送数据,开销:检测拥塞信息、反馈拥塞信息,都占用网络资源, (处理不好,可能又引起或恶化拥塞,甚至死锁),拥塞控制与流量控制的关系,措施类似,降低发包速率:既是流量控制的主要措施, 也是拥塞控制的重要措施,区别:,流量控制,是给定的发送端和接收端之间通信量控制,控制发送PDU的速率,,使接收端来得及接收,。,拥塞控制,是一个全局性的过程,涉及到,所有的主机、所有的路由器,多种资源(信道带宽、缓存、处理能力),1.2 TCP的拥塞控制方法(5.8.2),教材的观点,,拥塞控制的四个算法(p207):,慢开始,拥塞避免(线性增长)、快重传、快恢复,本人以为,:是一个拥塞控制算法的四个要点,拥塞控制中一个周期的二个阶段,拥塞窗口的,指数增长,和,线性增长,慢开始、线性增长:都是避免拥塞的措施,快重传:是提高传输效率的措施,快恢复:是快重传时对拥塞算法的改进,TCP的拥塞控制方法要点,拥塞窗口 cwnd的概念,根据拥塞控制的要求,发送方允许发送的数据量,拥塞控制(一个周期)的二个阶段,慢开始,(,拥塞避免)和窗口的,指数增大,窗口的加法增大(,线性增长,)(,拥塞避免),二个阶段的转换,cwnd超过阈值时:,指数增大=加法增长:,超时重发时:,加法增大=,窗口骤减、阈值的减小,=指数增长,其它措施:,快重传,、,快恢复,1.2.1 拥塞窗口cwnd (congestion window),比较,通知窗口:根据,流量控制,要求允许发生的数据量 (描述流量控制的状态变量),拥塞窗口:根据,拥塞控制,要求允许发生的数据量 (描述拥塞控制的状态变量),发送方最终的发送窗口min(拥塞窗口,通知窗口),为了便于讨论,,假定通知窗口足够大, 即:发送窗口大小取决于拥塞窗口,拥塞窗口以MSS为单位(讨论通知窗口时是以字节为单位),拥塞窗口的概念(续),拥塞窗口,大小随网络拥塞程度动态变化,原则是:,网络没有出现拥塞,增大拥塞窗口 (允许发送更多的报文),只要网络出现拥塞,就减小拥塞窗口 (减少注入到网络中的报文数),如何判断网络是否发生拥塞,当信道误码率足够小时,,超时的主要原因是由于拥塞,没有及时到达,发送方“猜测”:,如果没有超时:就认为网络没有拥塞,如果发生超时:就认为网络出现拥塞,区别:,通知窗口:由,接收方,根据接收能力,调整,拥塞窗口:由,发送方,根据拥塞状态,调整,动态调整拥塞窗口的基本思想,1)初始,保守开始:cwnd很小(取1):,慢开始,(相当于停等协议),( 避免拥塞:避免新的TCP连接向网络大量发送数据),2)网络没有出现拥塞时,为提高发送效率:增大拥塞窗口:,前期:窗口不大,可以快速增长,,指数增长,后期:窗口较大,应该慢速增长,,线性增长(避免拥塞),设一个状态变量(阈值、ssthresh、门限值), 控制cwnd的二种增长方式,ssthresh,初值为M,单位:报文段(MSS),例,M16,当cwnd较小(cwnd 门限)时,采用“,线性增长”,拥塞避免,动态调整拥塞窗口的基本思想(续),3)网络出现拥塞时,应该减小拥塞窗口,消除拥塞,,二个操作:,调整门限ssthreshcwnd*0.5 (乘法减小),急速减小拥塞窗口: cwnd重新回到1(回到慢开始),1.2.2 慢开始和指数增长,慢开始:,启动时,拥塞窗口大小置为 1,22,2,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口 cwnd,ssthresh 的初始值,传输轮次,16,4,慢开始,拥塞窗口的指数增长,窗口门限、且没有发生超时重发时:,发送窗口不大,没有发生超时重发,说明网络没有拥塞 cwnd应该可以快的增大:指数增长,指数增长,的实现算法,: 发送端每收到一个报文的确认 , cwnd 加 1 (增加一个报文大小)。,为什么上述方法是指数增长?,以往返时间(传输轮次)为时间单位,是指数增长,“传输轮次” (transmission round)的概念,传输轮次,: 把发送窗口所允许发送的报文都连续发送出去,并收到了对这些报文的最后一个字节的确认,为一个传输轮次。,一个,传输轮次,经历的时间,大约是往返时间 RTT,。,运输层通信:一般情况下,发送时间小于往返时间 RTT,即:,一个轮次可以且只能传输一个窗口的数据,发送方,接收方,发送 M,1,确认 M,1,cwnd = 1,t,t,轮次 1,发送 M,2,M,3,确认 M,2,M,3,cwnd = 2,轮次 2,发送 M,4,M,7,确认 M,4,M,7,cwnd = 4,轮次 3,一个轮次可以传输一个窗口的数据,运输层:一般情况下,发送时间远远小于往返时间 RTT,以往返时间(传输轮次)为时间单位,是指数增长,Cwnd1时,一个 “传输轮次”内,只能发送一个报文,,只能收到一个确认cwnd,从 1 增大到2,Cwnd2时,一个 “传输轮次”内,可以发送二个报文,,可以收到二个确认cwnd,从 2增大到4,Cwnd4时,一个 “传输轮次”内,可以发送四个报文,,可以收到四个确认cwnd,从 4增大到8,可见,cwnd 按,指数规律增长,。,指数增长,(续),发送端每收到一个报文的确认 , cwnd 加 1 (增加一个报文大小),。,22,16,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口 cwnd,指数规律增长,ssthresh 的初始值,传输轮次,慢开始,1.2.3 拥塞窗口的线性增长,当 cwnd 增长到门限值 时,希望减慢窗口增大速度 (拥塞避免) : 每个,“,传输轮次,”,cwnd 加 1,cwnd按线性规律增长,22,16,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口 cwnd,比较:指数增长,ssthresh 的初始值,慢开始,拥塞避免,“线性增长”,传输轮次,22,16,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口 cwnd,超时,认为出现拥塞,ssthresh 的初始值,慢开始,指数增长,拥塞避免+,“加法增大”,1.2.4 发现拥塞时的调整:退回慢开始,网络出现超时,表明网络拥塞了,二个操作:,1),“乘法减小”更新 ssthresh (,取cwnd的一半,, 即,乘0.5 ),当网络频繁出现拥塞时,ssthresh 值就下降得很快,当网络偶尔现拥塞时,ssthresh 值不会降低 (,cwnd,线性增长到一个很大的值),2)拥塞窗口,cwnd重新设置为 1,,转入慢开始算法,传输轮次,新的 ssthresh 值,ssthresh 值,“乘法减小”,重新慢开始,22,16,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口 cwnd,新的 ssthresh 值,网络拥塞,指数规律增长,ssthresh 的初始值,慢开始,慢开始,拥塞避免,“加法增大”,重新开始下一趟调整,传输轮次,拥塞避免,“加法增大”,“乘法减小”,22,16,控制过程:每个周期二个阶段,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口 cwnd,新,的 ssthresh,值,网络拥塞,ssthresh,初始值,慢开始,慢开始,指数增长,拥塞避免,“加法增长”,拥塞避免,“加法增长”,传输轮次,慢开始,指数增长,一个调整周期,一个调整周期,比较:慢启动、指数增长、线性增长,条件,改变窗口的算法,慢启动,启动时或发生超时,拥塞窗口置为1,指数增长,1)未发生超时,2)拥塞窗口值小于阈值,一个轮次,拥塞窗口大小翻倍,线性增长,1)未发生超时,2)拥塞窗口值大于阈值,一个轮次,拥塞窗口大小加1,1.2.5 提高效率的相关措施:(,1),快重传,接收方每收到一个失序的报文段后就立即发出,重复确认,,让发送方及早知道有报文段没有到达对方。,发送方收到,连续三个重复确认,时,立即重传,(不等到“超时”就重发),发送方,接收方,发送 M,1,确认 M,1,t,确认 M,2,发送 M,2,发送 M,3,发送 M,4,发送 M,5,发送 M,6,重复确认,M,2,立即重传 M,3,重复确认 M,2,重复确认 M,2,t,发送 M,7,丢失,M,2,M,1,M,3,M,4,M,5,M,6,M,7,M,3,快重传时拥塞算法的处理,Tahoe 版本:快重传的重发与超时重发同等对待,24,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,传输轮次,拥塞窗口 cwnd,慢开始,ssthresh 的初始值,拥塞避免,“加法增大”,收到 3 个重复的确认,执行快重传算法,“乘法减小”,新的 ssthresh 值,TCP Tahoe 版本,慢开始,(2)快恢复,TCP Reno版本:若连续收到三个重复的确认,立即重传对方尚未收到的报文段,执行“乘法减小”算法:把门限值减半,cwnd置为 门限值减半后的数值(而不是置为 1),直接进入“线性增大”的拥塞避免阶段 (没有指数增大阶段),24,带有快恢复的快重传,2,4,6,8,10,12,14,16,18,20,22,0,0,4,8,12,16,20,传输轮次,拥塞窗口 cwnd,慢开始,ssthresh 的初始值,拥塞避免,“加法增大”,TCP Tahoe 版本,(已废弃不用),慢开始,收到 3 个重复的确认,执行快重传算法,比较,“乘法减小”,新的 ssthresh 值,拥塞避免,“加法增大”,TCP Reno,版本,快恢复,说明:发送方监测到“超时”时,仍然采用慢开始算法(即:只有TCP连接建立时和超时,才采用慢开始算法),发送窗口的上限值,接收方窗口 rwnd 、拥塞窗口 cwnd,最终的发送窗口的上限值,Min rwnd, cwnd (5-8),当 rwnd cwnd 时, 是接收方的接收能力限制发送窗口的最大值。,当 cwnd rwnd 时, 是网络的拥塞限制发送窗口的最大值。,1.3 随机早期检测 RED丢包策略,5.8.3,拥塞控制是复杂问题,要从多层加以控制,运输层,如,TCP的拥塞窗口,网络层,路由协议:有拥塞控制功能的路由选择算法,IP层的丢包策略:,随机早期检测 RED,(Random Early Discard/Drop/Detection):,网络层的FIFO队列+尾部丢弃策略的问题,网络层的,FIFO队列+尾部丢弃,策略的不足:当一连串分组的丢失时多个TCP连接同时将发送窗口缩小为1全网通信量大幅下降网络迅速恢复通信量又突然大幅增加。,改进,:I改为“随机早期丢弃,”,当队列超过一定长度之后,开始将包,以概率 p 丢弃,随机早期丢弃 RED,每个队列保持二个参数,队列长度最小门限TH,min,队列长度最大门限TH,max,经验数据:,THmax = 2*THmin,每到达一个数据报,计算平均队列长度,L,AV,计算丢弃概率,p,(丢包策略),若,L,AV,TH,max,, 分组全部丢弃,p,= 1,若TH,min,L,AV, TH,max,,按概率,p,丢弃, 0,p,p,max,1 (以1p的概率将分组存入队列),RED 将路由器的到达队列划分成为三个区域,队列超过THmin之后,少量丢包,使少量TCP连接减小拥塞窗口,避免发生拥塞,从队首,发送,最小门限 TH,min,最大门限 TH,max,分组,到达,平均队列长度,L,av,排队,丢弃,以概率,p,丢弃,平均队列长度,为什么用平均队列长度:计算机通信的“突发性”,如,短时的突发数据,瞬时队列长度可能超过TH,min,,这时丢包,使少量TCP连接产生不必要的减小拥塞窗口,(平滑的)平均队列长度的计算,L,AV,=(,1-,)*,L,AV,+,*当前队列长度 (0,1,),队列长度,时间,瞬时队列长度,平均队列长度,当然,若短时的突发数据使,瞬时队列长度超出路由器的缓冲区的大小,,虽然,平均队列长度没有超过THmax,,仍然做“尾部丢弃”的操作,丢弃概率,p,的计算方法之一,在TH,max,-TH,min,区间,直线方程为 ( p,max,可以事先设定) :,p =,p,max,*(L,av,-TH,min,)/(TH,max,-TH,min,),按线性规律变化,从 0 变到,p,max,最小门限 TH,min,最大门限 TH,max,平均队列长度,L,av,分组丢弃概率,p,1.0,0,p,max,概率,p,的计算方法改进之一,(p215),改进思路:使丢弃概率不仅与平均队列长度有关,还,与“连续没有被丢弃的数据报的个数count”有关,避免分组的丢弃过于集中,将改进前的丢弃概率记为,p,temp,:,p,temp,=,p,max,*(L,av,-TH,min,)/(TH,max,-TH,min,),改进算法:,p= p,temp,/(1-count*,p,temp,),初始: count=0,,p,=,p,temp,count增大,分母减小,,p,增大,2 TCP 的传输连接管理 (5.9)2.1 传输连接的三个阶段,可靠通信有三个阶段: 连接建立、数据传送和连接释放。,连接建立过程中要解决三个问题:,使每一方能够确知对方的存在,允许双方协商一些参数如,初始序号、最大报文段长度、最大窗口大小等,为传输实体分配资源,如,缓存区等,传输连接管理: 使传输连接的建立和释放都能可靠完成。,客户服务器方式,TCP 的用户一般是客户服务器结构的软件,客户,(client):一般是主动发起连接建立的应用进程,服务器,(server):被动等待连接建立的应用进程,如,FTP:,服务器(TCP的用户):发出LISTEN原语,服务器端的TCP实体:开始等待客户端的连接,客户端(TCP的用户):发出CONNECT原语,客户端的TCP实体: 向服务器端的TCP实体发出,TCP连接请求,客户端用户发出close原语,客户端的TCP实体: 向服务器端的TCP实体发出,TCP释放请求,TCP,首部,20,字节,固定,首部,目 的 端 口,数据,偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,seq,紧 急 指 针,窗 口,确 认 号,ack,保 留,F,I,N,S,Y,N,R,S,T,P,S,H,A,C,K,U,R,G,位 0 8 16 24 31,填 充,同步 SYN = 1:表示这是一个,连接请求,或,连接接受,报文,。,终止 FIN,1,:,请求释放连接,。,2.2 建立连接(5.9.1),在数据链路层,实现面向连接的可靠通信,建立连接(协商)的二次联络:一方提出连接请求,对方发送连接确认,是相邻二点建立连接,可以较准确地估计,连接请求帧,的延时,能准确判断是否丢失。,在运输层,实现面向连接的可靠通信,不相邻二点建立连接,连接请求在一个甚至多个网络中存转,延时难以估计,二次联络(握手)建立连接存在的问题,延迟到达的重复连接请求,造成错误的连接,二次联络建立连接的问题,主机A请求建立连接,超时,主机A再次请求连接,主机A收到主机B的应答, 连接成功,主机A,B之间通信,主机A请求释放连接,主机A收到主机B的应答, 释放成功,主机B收到主机A的、迟到的第一次建立连接请求,(主机B 并不知道是重复请求),主机B接受建立连接请求,主机B发送报文段,主机A不接受(不可靠的通信),A,B,A,TCP采用三次联络实现可靠连接,SYN = 1, seq = x,主动打开,A,B,客户端,服务端,SYN = 1, ACK = 1, seq = y, ack= x, 1,LISTEN,SYN-,SENT,SYN-,RCVD,ACK = 1, seq = x + 1, ack = y, 1,ESTAB-,LISHED,ESTAB-,LISHED,数据传送,被动打开,CLOSED,CLOSED,TCP 的连接建立:,第一次联络,进入“监听”状态,双方都可以请求连接,C/S结构:一般是客户端请求,设:A 向 B 发出连接请求,A进入“同步已发送”状态,同步位 SYN = 1,请求建立连接,序号 seq = x,本站将传送的第一个数据字节的序号是 x,第二次联络,B进入“同步已收到”状态,B 收到连接请求报文段,如同意,则发回确认报文,(注意各字段的值的含义),第三次联络,B 的 TCP 收到主机 A 的确认后,,也通知其上层 应用进程:TCP 连接已经建立,进入连接已建立(ESTABLISHED)状态,进入“数据传送”阶段,在连接建立后 TCP 就不再理睬某个延迟的连接请求,LISTEN,CONNECT,A的 TCP实体收到确认报文后,通知上层应用进程,连接已经建立,向 B 给出第三次联络(可以携带用户数据)(注意各字段的值的含义),进入连接已建立(,ESTABLISHED,)状态,2.3 TCP 的连接释放(5.9.2),当 TCP 的应用进程再没有数据需要发送时,就发关闭命令close, TCP实体向对方提出释放请求。,数据传输结束后,通信的双方都可释放连接。,提出释放的一方为“主动释放”,另一方为“被动释放”,两个方向需要分别释放,一个方向释放后,称为半关闭状态,CLOSED,FIN = 1, seq = u,ACK = 1, seq = v, ack= u, 1,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,等待 2MSL,TIME-,WAIT,主动关闭,被动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,ESTAB-,LISHED,客户A,服务器B,数据传送,CLOSED,TCP 连接的释放(正常情况:四次联络),A 收到连接释放报文段后,必须发出确认,报文段,。,发出释放请求,(FIN=1),本报文段可以携带数据,等待,B,的确认。,B,收到,A,确认报文段,释放完成,进入,CLOSED,状态,A,发出确认报文后 ,必须经过时间,2MSL,后才真正释放,设:A不再发送数据,请求关闭 TCP连接,B,:发出确认;,TCP,实体通知高层应用进程。,若,B,也不需向,A,发送的数据,,也要释放连接:,FIN,1,。,这时,A,到,B,方向的连接就释放了,,TCP,连接处于半关闭状态。,B,仍可发送数据,,A,仍要接收。,CLOSE,A 必须等待 2MSL (两倍最大的分组生命期 ),2MSL约4分钟,是较长的时间。,保证 A 发送的最后一个 ACK 报文段能够到达 B,如果该报文丢失。B会重传FIN+ACK报文,A在,2MSL时间内可以收到这个重传报文,重发,ACK 报文,防止 “已失效的连接请求报文段”出现在本连接中,经过 2MSL时间,本连接持续的时间内所产生的所有报文段,都将从网络中消失。,这样就使下一个新的连接中不会出现这种旧的连接请求报文段。,被动释放方:发一个 FIN 报文给对方后,收到确认后关闭连接,确认未及时到达,在等待一段时间后也关闭连接。,连接建立可以由A方、B方或双方同时发起,双方发起:同时打开( simultaneous open ),连接关闭可以由A方、B方或双方同时发起,同时发起:同时关闭( simultaneous close ) 。,TCP 的有限状态机 Finite State Machine (5.9.3),有限状态机,用于对象行为建模的一种工具,描述对象在生命周期内所经历的状态序列,以及状态之间的转换(响应外界的各种事件),由,一组状态,(一个初始状态)、,输入和转换函数,组成,转换函数,:根据输入及现有状态转换为另一个状态,TCP的有限状态机,CLOSED,ESTABLISHED,LISTEN,CLOSE_WAIT,SYN_RCVD,SYN_SENT,LAST_ACK,主动打开,被动打开,被动关闭,起点,(服务器)被动打开,(客户主动打开),发送 SYN,收到 ACK,数据传送,阶段,关闭,发送 FIN ACK,(主动关闭),发送 FIN,收到 SYN,发送 SYN, ACK,收到 ACK,收到 SYN, ACK,发送 ACK,收到 FIN,发送 ACK,关闭,正常,情况,FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT,主动关闭,收到 ACK,收到 FIN,发送 ACK,-2,-2,-2,-3,2MSL后,建立连接,释放连接,“事件,动作,”,方框,:可能具有的状态;,框中的字符串,:状态名,状态间的箭头:可能发生的状态变迁,紫色箭头:建立连接时,客户端,的正常变迁。,深蓝箭头:建立连接时,服务器端,的正常变迁,TCP的有限状态机,CLOSED,ESTABLISHED,LISTEN,CLOSE_WAIT,FIN_WAIT_1,SYN_RCVD,FIN_WAIT_2,CLOSING,TIME_WAIT,SYN_SENT,LAST_ACK,(主动打开),(被动打开),(被动关闭),(主动关闭),起点,用户LISTEN,(被动打开),用户CONNECT,(主动打开),发送 SYN,(同时打开),收到 SYN,,发送 SYN, ACK,收到 ACK,数据传送,阶段,用户close,发送 FIN,用户close,发送 FIN,用户close,发送 FIN,收到 RST,收到 SYN,发送 SYN, ACK,关闭,或超时,收到 ACK,收到 ACK,收到 ACK,收到 FIN,发送 ACK,收到 FIN, ACK,发送 ACK,(快速关闭),收到 FIN,发送 ACK,(同时关闭),收到 FIN,发送 ACK,服务器打开,发送 SYN,定时,经过两倍报文段寿命后,关闭,方框:可能具有的状态;,框中的字符串:状态名,状态间的箭头:可能发生的状态变迁,粗线箭头:客户端的正常变迁。,虚线箭头:服务器端的正常变迁,细线箭头:表示不常用的或异常变迁,收到 SYN, ACK,发送 ACK,建立连接,释放连接,“,事件,动作,”,箭头边的文字:,红字:引起变迁的原因,蓝字:变迁后的动作,同时打开,连接建立可以由A方、B方或双方同时发起,双方发起:同时打开( simultaneous open ),同时打开( simultaneous open ),发生的可能性极小,需要每一方使用一个对方周知的端口作为本地端口,没有所谓的主从关系:不管哪种方式建立连接一旦连接建立,就可以双向对等地传送数据,CLOSED,ESTABLISHED,SYN_RCVD,SYN_SENT,起点,(主动打开),发送 SYN,收到 SYN,发送 SYN, ACK,收到 ACK,数据传送,阶段,收到 SYN, ACK,发送 ACK,CLOSED,ESTABLISHED,SYN_RCVD,SYN_SENT,主动打开,起点,(主动打开),发送 SYN,收到 ACK,数据传送,阶段,收到 SYN, ACK,发送 ACK,同时打开,A,B,收到 SYN,发送 SYN, ACK,SYN = 1, seq = x,主动打开,A,B,客户,服务器,SYN = 1, ACK = 1, seq = y, ack= x, 1,SYN = 1, ACK = 1, seq = v, ack= u, 1,ESTAB-,LISHED,数据传送,CLOSED,TCP 的连接的同时打开:,四次联络,通知,应用,进程,通知,应用,进程,SYN-,SENT,CLOSED,主动打开,ESTAB-,LISHED,SYN-,RCVD,SYN-,SENT,SYN = 1, seq = u,SYN-,RCVD,TCP 连接的同时关闭,连接关闭可以由A方、B方或双方同时发起,同时发起:同时关闭( simultaneous close ) 。,两端应用层同时发出关闭命令时,各发送一个 FIN,均从 ESTABLISHED 变为 FIN_WAIT_1,收到 FIN 后,状态由 FIN_WAIT_1 变迁到 CLOSING ,并发送最后的 ACK 。,当收到最后的 ACK 时,状态变化为 TIME_WAIT 。,CLOSED,FIN = 1, seq = x,ACK = 1, ack= x, 1,FIN = 1, seq =u,FIN-WAIT-1,CLOS-ING,等待 2MSL,TIME-,WAIT,主动关闭,被动关闭,数据传送,通知,应用,进程,ESTAB-,LISHED,A,B,客户,服务器,CLOSED,等待 2MSL,TIME-,WAIT,ESTAB-,LISHED,CLOS-ING,FIN-WAIT-1,ACK = 1, seq = u + 1,同时关闭,快速关闭,条件:在主动关闭的 FIN_WAIT_1 状态,事件:收到的报文段包括ACK和 FIN (四次联络释放:这时应该收到FIN=0的ACK),变迁:直接进入 TIME_WAIT 状态, 给对方发送 ACK 报文段,然后等待超时,FIN = 1, seq = u,主动关闭,数据传送,ESTAB-,LISHED,ESTAB-,LISHED,A,B,客户,服务器,快速关闭(三次联络),通知,应用,进程,被动关闭,等待 2MSL,FIN = 1, ACK = 1, seq = v, ack= u, 1,ACK = 1, ack = v, 1,设:B收到释放请求时也不再发送数据,可以在响应A时同时请求释放反向的连接,CLOSED,CLOSED,FIN-WAIT-1,其它情况,服务方打开:,从 LISTEN发出 SYN 报文段,变迁到 SYN_SENT,Berkeley 版的 TCP 软件不支持它,重置连接(复位):,条件: SYN_RCVD 状态是从 LISTEN 状态收到一个 SYN后发送一个带 ACK 的 SYN进入的,事件:收到一个 RST (而不是一个 ACK),变迁:从 SYN_RCVD 回到 LISTEN 的状态,11个状态,CLOSED:关闭状态,没有连接活动或正在进行,被动打开:,LISTEN:监听,正在等待连接进入,主动打开:,SYN_SENT:已发送连接请求,已经发出连接请求,等待确认,SYN_RCVD:,“已收到连接请求(同步已收到)”状态,收到一个连接请求,尚未确认,ESTABLISHED:已建立连接,正常数据传输状态,主动关闭,FIN_WAIT_1:已经发送关闭请求,等待确认,FIN_WAIT_2:收到对方关闭确认,等待对方关闭请求,TIME_WAIT:完成双向关闭,等待所有分组死掉,被动关闭,CLOSE_WAIT:收到对方关闭请求,已经确认,LAST_ACK:等待最后一个关闭确认,并等待所有分组死掉,同时关闭,CLOSING:双方同时尝试关闭,等待对方确认,双方同时启动关闭,连接双方的应用进程同时发关闭命令,则双方 TCP 在发送完所以报文段后,发送 FIN 报文。,各方 TCP 在 FIN 前所发报文都得到确认后,发 ACK 确认它收到的 FIN 。,各方在收到对方对 FIN 的确认后,同样等待一段时间再关闭连接。,连接关闭可以由A方、B方或双方同时发起,同时发起:同时关闭( simultaneous close )。,TCP的有限状态机,CLOSED,ESTABLISHED,LISTEN,CLOSE_WAIT,FIN_WAIT_1,SYN_RCVD,FIN_WAIT_2,CLOSING,TIME_WAIT,SYN_SENT,LAST_ACK,主动打开,被动打开,被动关闭,主动关闭,起点,被动打开,主动打开,发送 SYN,同时打开,收到 SYN,发送 SYN, ACK,收到 ACK,数据传送,阶段,关闭,发送 FIN,关闭,发送 FIN,关闭,发送 FIN,收到 RST,收到 SYN,发送 SYN, ACK,关闭,或超时,收到 ACK,收到 SYN, ACK,发送 ACK,收到 ACK,收到 ACK,收到 FIN,发送 ACK,收到 FIN, ACK,发送 ACK,收到 FIN,发送 ACK,同时关闭,收到 FIN,发送 ACK,发送 SYN,定时经过两倍报文段寿命后,关闭,教材,小结之一,已经学习的协议,数据传输协议(为用户传送数据),PPP、CSMA/CD、IP、UDP、TCP,“描述网络控制信息”协议,LCP、ICMP,IGMP,描述网络路由信息及其传送规则的协议,RIP、OSPF、EGP,TCP协议自含“描述网络控制信息”的规则,SYN1、FIN1等报文(不传送用户数据),本讲小结,什么是拥塞、拥塞控制,拥塞控制与流量控制的关系,拥塞控制所起的作用,闭环的拥塞控制的主要环节,TCP的拥塞控制方法的要点,拥塞窗口 cwnd,概念:传输轮次、 ssthresh 值,慢开始+指数规律增长过程和作用,“加法增大”的拥塞避免,“乘法减小”的状态转换,传输连接的三个阶段,三次联络:连接请求、确认报文、再次确认,TCP 的连接释放,小结: TCP协议的主要控制技术,可靠传输控制:、,可靠的连接:,面向连接,(通信前双方建立连接),、三次联络,:,每条连接只能是点对点的,连接的端点是套接字,TCP 连接是一条虚连接而不是物理连接,差错控制:检错,有错重转,有效传输控制:,流量控制:避免因为接收方来不及接收造成丢失(需要重传),拥塞控制:避免由于负载太大等原因而造成网络吞吐量的下降,提供,全双工,通信。,采用,面向字节流,的控制技术,本章小结(下次课快速提问的问题),重点:面向连接的可靠通信,差错控制基本原理及TCP的实现方法,确认、超时RTO的计算,TCP流量控制的方法,TCP拥塞窗口的调整过程,可靠的传输连接的过程(三次联络),掌握,运输层的作用和重要性,运输层的端口及其规则、,UDP的特点,停等ARQ协议的基本要点和不足,连续ARQ协议的基本要点,拥塞、拥塞控制、拥塞控制的作用,释放传输连接过程(二个二次联络),本章作业 p220223,要交的题目:,第14,22,23,31,33,39,41题,提示,第31题:一个RTT最多传送一个窗口的数据,自学:,全部,说明:,部分题目教材有答案,希望:,明确学习目的,主动学习,独立思考,作业要写原理,计算依据和过程,下讲内容(预习、思考题),第六章,域名系统 DNS,域名结构,域名解析过程,文件传送协议,Have a rest ,
展开阅读全文