《传输控制协议》PPT课件.ppt

上传人:za****8 文档编号:13346891 上传时间:2020-06-16 格式:PPT 页数:98 大小:911.01KB
返回 下载 相关 举报
《传输控制协议》PPT课件.ppt_第1页
第1页 / 共98页
《传输控制协议》PPT课件.ppt_第2页
第2页 / 共98页
《传输控制协议》PPT课件.ppt_第3页
第3页 / 共98页
点击查看更多>>
资源描述
1,第8章传输控制协议(TCP),2,主要内容,TCP的服务TCP的端口号和套接字地址TCP的报文段TCP的连接管理与释放TCP的连接管理状态转换图流量控制傻瓜窗口综合症差错控制拥塞控制定时器管理,3,8.1TCP的服务,面向连接的服务要获得TCP服务,在一个应用进程向另一个应用进程开始发送数据之前,必须先在双方之间建立一条连接,数据传送结束后要释放连接。每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。,4,全双工服务TCP连接提供全双工服务,所有TCP连接都是点到点的。字节流传递服务一个TCP连接就是一个字节流,端到端之间不保留消息的边界。,5,TCP面向流的概念,发送TCP报文段,发送方,接收方,把字节写入发送缓存,从接收缓存读取字节,应用进程,应用进程,18,17,16,15,14,H,加上TCP首部构成TCP报文段,TCP,TCP,字节流,字节流,H,表示TCP报文段的首部,x,表示序号为x的数据字节,TCP连接,6,TCP连接,TCP连接是一条虚连接而不是一条真正的物理连接。TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节,而UDP发送的报文长度是应用进程给出的。TCP可把太长的数据块划分短一些再传送。TCP也可等待积累有足够多的字节后再构成报文段发送出去。,7,TCP的连接,TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。端口号拼接到(contatenatedwith)IP地址即构成了套接字。,8,8.2TCP的端口号和套接字地址,8.2.1TCP的端口号TCP采用16bit端口号来识别应用程序。服务器一般都是通过熟知端口来识别。而客户端通常使用的是临时端口号。,9,8.2.2套接字地址要使用TCP的服务,需要一对套接字地址。一个套接字有可能同时被用于多个连接。也就是说,两个或多个连接可能终止于同一个套接字。,10,套接字(socket),套接字socket=(IP地址:端口号)每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。TCP连接:=socket1,socket2=(IP1:port1),(IP2:port2),11,8.3TCP的报文段,TCP报文段由首部和数据两部分组成。首部前20字节是固定部分,后面有4N字节是根据需要而增加的选项。选项部分最多是40字节。,12,TCP报文段的首部格式,TCP首部,20字节的固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,32位,SYN,RST,PSH,ACK,URG,位08162431,填充,TCP数据部分,TCP首部,TCP报文段,IP数据部分,IP首部,发送在前,13,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,源端口和目的端口字段各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。,14,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,序号字段占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。,15,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,确认号字段占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。确认号=N:序号N-1为止的数据都已经正确接收。,16,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,数据偏移(即首部长度)占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字(以4字节为计算单位)。,17,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,保留字段占6位,保留为今后使用,但目前应置为0。,18,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,紧急URG当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。,19,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,确认ACK只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。,20,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,推送PSH(PuSH)接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。,21,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,复位RST(ReSeT)当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。,22,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,同步SYN同步SYN=1表示这是一个连接请求或连接接受报文。,23,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,终止FIN(FINish)用来释放一个连接。FIN1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。,24,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,窗口字段占2字节,指发送本报文段一方的接收窗口,从确认号开始允许对方发送的数据量;作为对方设置发送窗口的依据,单位为字节。,25,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,检验和占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。,26,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,紧急指针字段占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。,27,8.4.1建立连接TCP协议中建立连接采用三次握手(three-wayhandshake)的方式实现。,8.4TCP的连接管理与释放,28,TCP的运输连接的三个阶段,运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。连接建立过程中要解决以下三问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。,29,客户服务器方式,TCP连接的建立均是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立应用进程叫做服务器(server)。,30,三次握手建立TCP连接,CLOSED,CLOSED,A,B,客户,服务器,A的TCP向B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x。,31,用三次握手建立TCP连接,CLOSED,CLOSED,A,B,客户,服务器,B的TCP收到连接请求报文段后,如同意,则发回确认。B在确认报文段中应使SYN=1,使ACK=1,其确认号ack=x1,自己选择的序号seq=y。,32,CLOSED,CLOSED,A,B,客户,服务器,A收到此报文段后向B给出确认,其ACK=1,确认号ack=y1。A的TCP通知上层应用进程,连接已经建立。,33,CLOSED,CLOSED,A,B,客户,服务器,B的TCP收到主机A的确认后,也通知其上层应用进程:TCP连接已经建立。,34,用三次握手建立TCP连接的各状态,CLOSED,CLOSED,A,B,客户,服务器,35,CLOSED,数据传送,ESTAB-LISHED,ESTAB-LISHED,A,B,客户,服务器,CLOSED,TCP的连接释放,数据传输结束后,通信的双方都可释放连接。现在A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。A把连接释放报文段首部的FIN=1,其序号seq=u,等待B的确认。,36,数据传送,通知应用进程,ESTAB-LISHED,ESTAB-LISHED,A,B,客户,服务器,TCP的连接释放,B发出确认,确认号ack=u1,而这个报文段自己的序号seq=v。TCP服务器进程通知高层应用进程。从A到B这个方向的连接就释放了,TCP连接处于半关闭状态。B若发送数据,A仍要接收。,37,数据传送,ESTAB-LISHED,ESTAB-LISHED,A,B,客户,服务器,数据传送,TCP的连接释放,若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。,38,数据传送,ESTAB-LISHED,ESTAB-LISHED,A,B,客户,服务器,数据传送,TCP的连接释放,A收到连接释放报文段后,必须发出确认。,39,数据传送,ESTAB-LISHED,ESTAB-LISHED,A,B,客户,服务器,数据传送,TCP的连接释放,在确认报文段中ACK=1,确认号ackw1,自己的序号seq=u+1。,ACK=1,seq=u+1,ack=w1,40,ACK=1,seq=u+1,ack=w1,FIN=1,ACK=1,seq=w,ack=u1,FIN-WAIT-1,CLOSE-WAIT,FIN-WAIT-2,LAST-ACK,被动关闭,数据传送,ESTAB-LISHED,ESTAB-LISHED,A,B,客户,服务器,数据传送,CLOSED,5.9.2TCP的连接释放,TCP连接必须经过时间2MSL后才真正释放掉。,41,A必须等待2MSL的时间,MSL:最长报文段寿命(MaximumSegmentLifetime),用于时间等待计时器。为何要等待2MSL?第一,为了保证A发送的最后一个ACK报文段能够到达B。第二,防止“已失效的连接请求报文段”出现在本连接中。A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样可以使下一个新连接中不会出现这种旧的连接请求报文段。,42,8.4.3连接复位当TCP需要连接复位时使用RST报文段,其复位比特RST置1。,43,8.5TCP的连接管理状态转换,在任何时刻,机器只处于某一种状态,并一直保持这个状态,直到某个事件发生。发生的事件使机器进入一个新的状态,即事件可使机器完成某种操作。状态转换表示一个状态到另一个状态的迁移,包括迁移的条件和迁移的动作。,44,TCP的有限状态机,TCP有限状态机的图中每一个方框都是TCP可能具有的状态。每个方框中的大写英文字符串是TCP标准所使用的TCP连接状态名。状态之间的箭头表示可能发生的状态变迁。箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。图中有三种不同的箭头。粗实线箭头表示对客户进程的正常变迁。粗虚线箭头表示对服务器进程的正常变迁。另一种细线箭头表示异常变迁。,45,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,定时经过两倍报文段寿命后,关闭,46,86流量控制,TCP采用可变大小的滑动窗口协议进行流量控制。TCP的滑动窗口是面向字节的。窗口包括已发送的字节和未被确认的字节,以及可以发送的字节。接收方窗口是说明接收方还能再接收的字节数。在TCP报文段首部的窗口大小字段的值就是当前给对方设置的窗口值。,47,利用滑动窗口实现流量控制,一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flowcontrol)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在TCP连接上实现流量控制。,48,seq=1,DATA,seq=201,DATA,seq=401,DATA,seq=301,DATA,seq=101,DATA,seq=201,DATA,seq=501,DATA,ACK=1,ack=201,rwnd=300,ACK=1,ack=601,rwnd=0,ACK=1,ack=501,rwnd=100,A,B,允许A发送序号201至500共300字节,A发送了序号101至200,还能发送200字节,A发送了序号301至400,还能再发送100字节新数据,A发送了序号1至100,还能发送300字节,A发送了序号401至500,不能再发送新数据了,A超时重传旧的数据,但不能发送新的数据,允许A发送序号501至600共100字节,A发送了序号501至600,不能再发送了,不允许A再发送(到序号600为止的数据都收到了),丢失!,流量控制举例,A向B发送数据。在连接建立时,B告诉A:“我的接收窗口rwnd=400(字节)”。,49,8.7傻瓜窗口综合症,接收方通告一个小的窗口,引起发送的报文段很小,而降低传输效率。该现象可发生在两端中的任何一端.,50,8.7.1Nagle算法Nagle算法试图解决由于发送应用程序每次向TCP发送小的报文段,如报文段只包括1个字节的数据而引起的问题。强迫发送端TCP等待,让它收集数据,以便发送大块数据。(发送端),51,8.7.2Clark解决方案Clark解决方案是只要数据到达就发送确认,但宣布窗口值为零,直到在缓存有足够的空间能容纳具有最大长度的报文或者缓存已有一半的空间为空了,再发送窗口更新报文段。(接收端),52,8.7.3延迟确认对于应用程序消耗数据比到达得慢所产生的这种傻瓜窗口综合症,还有第二种解决方法,即延迟发送确认。(接收端)在TCP中,发送方并不要求一接到应用进程传递过来的数据就必须马上将数据传送出去;接收方也不要求尽可能快地发送确认报文段。,53,88差错控制,TCP差错控制包括检测受到损伤的报文段、丢失的报文段、失序的报文段和重复的报文段,以及检测出差错后纠正差错,它除了使用检验和,还使用确认技术和超时机制。,54,TCP发送方使用超时机制来恢复报文段丢失问题。TCP使用累计确认系统。,55,可靠传输的工作原理停止等待协议,(a)无差错情况,A,发送M1,确认M1,B,发送M2,发送M3,确认M2,确认M3,A,发送M1,B,超时重传M1,发送M2,确认M1,丢弃有差错的报文,(b)超时重传,t,t,t,t,56,请注意,在发送完一个分组后,必须暂时保留已发送的分组的副本。分组和确认分组都必须进行编号。Why?超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。,57,确认丢失和确认迟到,A,发送M1,B,超时重传M1,发送M2,丢弃重复的M1重传确认M1,(a)确认丢失,确认M1,A,发送M1,B,超时重传M1,发送M2,丢弃重复的M1重传确认M1,(b)确认迟到,确认M1,收下迟到的确认但什么也不做,t,t,t,t,58,可靠通信的实现,使用上述的确认和重传机制,就可以在不可靠的传输网络上实现可靠通信。这种可靠传输协议常称为自动重传请求ARQ(AutomaticRepeatreQuest)。ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。,59,信道利用率,停止等待协议的优点是简单,但缺点是信道利用率太低。,TD,RTT,A,TD+RTT+TA,B,分组,确认,t,t,分组,确认,RTT:Round-TripTime;D:Delivery;A:Acknowledgement,60,信道的利用率U,61,提高效率方法:流水线传输,发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。,B,分组,t,t,A,ACK,62,连续发送多个分组编号,由于连续发送多个分组中间可能有差错需重发,所以必须每分组加编号。一旦分组多那么将引起编号占数据位庞大的问题,如一次传送中数千分组是正常的,上千分组编号要占十多位。如何解决?窗口协议,63,连续ARQ协议实现,1,2,3,4,5,6,7,8,9,10,11,12,(a)发送方维持发送窗口(发送窗口大小是5),发送窗口,64,连续传送,累积确认,接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。,65,Go-back-N(回退N),如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。,66,TCP可靠通信的具体实现,TCP连接每一端都必须设有两个窗口:一个发送窗口和一个接收窗口。TCP的可靠传输机制用字节的序号进行控制。TCP所有的确认都是基于序号而不是基于报文段。TCP两端的四个窗口常处于动态变化之中。TCP连接的往返时间RTT也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。(具体算法略),67,TCP可靠传输的实现,前移,不允许发送,已发送并收到确认,A的发送窗口=20,允许发送的序号,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,B期望收到的序号,前沿,后沿,前移,收缩,根据接收端B给出的窗口值,发送端A构造出自己的发送窗口,68,TCP可靠传输的实现,前移,不允许发送,已发送并收到确认,A的发送窗口=20,允许发送的序号,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,B期望收到的序号,前沿,后沿,前移,收缩,滑动窗口以字节为单位;发送窗口:在没有收到B确认的情况下,A可以连续把窗口中的数据发送出去;已发送的数据在未收到确认之前必须保留,在超时重传时用;发送窗口后沿:前移收到新的确认;不动无新确认且窗口大小不变,或收到新确认但窗口缩小;发送窗口前沿:前移由后沿推动;收缩窗口缩小,不赞成这么做。,69,不允许发送,已发送并收到确认,A的发送窗口位置不变,允许发送但尚未发送,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送但未收到确认,56,P1,P2,P3,不允许接收,已发送确认并交付主机,B的接收窗口,允许接收,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,未按序收到,可用窗口,A发送了31-41号数据,P3P1=A的发送窗口(又称为通知窗口)P2P1=已发送但尚未收到确认的字节数P3P2=允许发送但尚未发送的字节数(又称为可用窗口),70,不允许发送,已发送并收到确认,A的发送窗口位置不变,允许发送但尚未发送,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送但未收到确认,56,P1,P2,P3,不允许接收,已发送确认并交付主机,B的接收窗口,允许接收,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,未按序收到,可用窗口,滑动窗口总结,B只能对按序收到的数据中的最高序号给出确认(按序确认);发送窗口由接收窗口确定;P1由接收窗口(过来的确认)确定;P2由发送过程确定;P3由P1确定,原因是在窗口大小不变的情况下,后沿P1推动前沿P3。,71,允许发送但尚未发送,A的发送窗口向前滑动,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送并收到确认,不允许发送,已发送但未收到确认,56,P1,P2,P3,允许接收,B的接收窗口向前滑动,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送确认并交付主机,不允许接收,56,未按序收到,A收到新的确认号,发送窗口向前滑动,先存下,等待缺少的数据的到达,72,不允许发送,已发送并收到确认,A的发送窗口已满,有效窗口为零,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,已发送但未收到确认,56,P1,P2,P3,A的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。,73,发送缓存,最后被确认的字节,发送应用程序,发送缓存,最后发送的字节,发送窗口,已发送,TCP,序号增大,重合:后沿,发送缓存用来暂时存放:-发送应用程序传送给发送方TCP准备发送的数据;-TCP已发送出但尚未收到确认的数据。,74,接收缓存,接收应用程序,已收到,接收窗口,TCP,接收缓存,下一个读取的字节,序号增大,下一个期望收到的字节(确认号),重合:前沿,接收缓存用来暂时存放:-按序到达的、但尚未被接收应用程序读取的数据;-不按序到达的数据。,75,需要强调三点,A的发送窗口并不总是和B的接收窗口一样大(因为有一定的时间滞后)。TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。,76,8.9拥塞控制,接收端通知的窗口和拥塞窗口接收端通知的窗口是接收方根据其可用缓存大小准许的窗口值。拥塞窗口是发送端根据所感知到的网络拥塞程度得出的窗口值。,77,慢启动算法拥塞避免算法,78,1.慢启动和拥塞避免,发送方维持一个叫做拥塞窗口cwnd(congestionwindow)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。,79,慢启动算法的原理,在主机刚刚开始发送报文段时可先设置拥塞窗口cwnd=1,即设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口加1,即增加一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。,80,发送方,接收方,发送M1,确认M1,发送M2M3,确认M2M3,发送M4M7,确认M4M7,cwnd=1,cwnd=2,cwnd=4,发送M8M15,cwnd=8,t,t,发送方每收到一个对新报文段的确认(重传的不算在内)就使cwnd加1。,轮次1,轮次2,轮次3,81,传输轮次(transmissionround),使用慢启动算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。“传输轮次”更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。例如,拥塞窗口cwnd=4,这时的往返时间RTT就是发送方连续发送4个报文段,并收到这4个报文段的确认,总共经历的时间。,82,设置慢启动临界值状态变量ssthresh,慢启动临界值ssthresh的用法如下:当cwndssthresh时,停止使用慢启动算法而改用拥塞避免算法。当cwnd=ssthresh时,既可使用慢启动算法,也可使用拥塞避免算法。拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长。,83,当网络出现拥塞时,无论在慢启动阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢启动临界值ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢启动算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。,84,22,16,慢启动和拥塞避免算法的实现举例,当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。,慢启动临界值的初始值设置为16个报文段,即ssthresh=16。,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,85,慢启动和拥塞避免算法的实现举例,发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,86,慢启动和拥塞避免算法的实现举例,在执行慢启动算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,87,慢启动和拥塞避免算法的实现举例,发送端每收到一个确认,就把cwnd加1。于是发送端可以接着发送M1和M2两个报文段。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,88,慢启动和拥塞避免算法的实现举例,接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的cwnd加1。现在cwnd从2增大到4,并可接着发送后面的4个报文段。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,89,慢启动和拥塞避免算法的实现举例,发送端每收到一个对新报文段的确认,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输轮次按指数规律增长。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,90,慢启动和拥塞避免算法的实现举例,当拥塞窗口cwnd增长到慢启动临界值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,91,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,慢启动和拥塞避免算法的实现举例,假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了。,传输轮次,92,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,慢启动和拥塞避免算法的实现举例,更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢启动算法。,传输轮次,93,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢启动,慢启动,慢启动,拥塞避免“加法增大”,拥塞避免“加法增大”,慢启动和拥塞避免算法的实现举例,当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。,传输轮次,94,8.10定时器管理,定时器重传定时器持续定时器保活定时器时间等待定时器,重传定时器,持续定时器,保活定时器,时间等待定时器,定时器,为了实现TCP协议,对每个连接TCP管理4个不同的定时器。,95,超时重传时间的选择,重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。,96,往返时延的方差很大,由于TCP的下层是一个互联网环境,IP数据报所选择的路由变化很大。因而运输层的往返时间的方差也很大。,时间,数据链路层,T1,T2,T3,往返时间的概率分布,97,加权平均往返时间,TCP保留了RTT的一个加权平均往返时间RTTS(这又称为平滑的往返时间)。第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值。以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:新的RTTS(1)(旧的RTTS)(新的RTT样本)式中,01。若很接近于零,表示RTT值更新较慢。若选择接近于1,则表示RTT值更新较快。RFC2988推荐的值为1/8,即0.125。,98,持续计时器,TCP为每一个连接设有一个持续计时器。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。若窗口不是零,则死锁的僵局就可以打破了。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!