第五部分运输层_第1页
第五部分运输层_第2页
第五部分运输层_第3页
第五部分运输层_第4页
第五部分运输层_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机工程系,计算机网络,第五部分运输层,计算机工程系,主要知识点,端到端通信的概念运输层的主要功能用户数据报协议UDP传输控制协议TCP,计算机工程系,1端到端通信的概念,问题:通信双方如何识别?即通信进程如何标识?,IP层功能,运输层功能,计算机工程系,1端到端通信的概念,IP地址标识不同的主机或设备,即标识通信中的“点设备”;点设备中的通信进程如何标识?端口号,即用一个16bit的端口号来标识。因此,不同点设备上的进程之间的通信也称为端到端通信;而点设备之间的通信称为点到点通信。,计算机工程系,1端到端通信的概念,运输层实现的是端到端的通信。端到端通信是依赖于点到点的通信来实现,也可以说是多个端到端通信通过复用一个点到点通信的信道来实现。因此,运输层提供应用进程之间的逻辑通信。而IP层提供的是点设备之间的逻辑信道。,运输层为相互通信的应用进程提供了逻辑通信,54321,应用进程,应用进程,IP层,AP1,AP2,AP4,端口,端口,54321,AP3,计算机工程系,1端到端通信的概念,运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。,计算机工程系,运输层协议和网络层协议的主要区别,应用进程,应用进程,IP协议的作用范围(提供主机之间的逻辑通信),TCP和UDP协议的作用范围(提供进程之间的逻辑通信),因特网,计算机工程系,2运输层的主要功能,运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。由于应用进程之间的通信需求不同,有的需要尽力而为的传输,有的需要可靠传输,如何实现?运输层还要对收到的报文进行差错检测。运输层针对两种不同的需求提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP。,试想:为什么IP层不提供两种不同服务?,计算机工程系,运输层的端口,如何寻址?端口,即协议端口,16bit,取值范围为065535(2161)。针对不同的传输层协议,有各自独立的取值空间;但同一个协议取值空间相同。例如UDP和TCP分别对应不同的端口号取值空间,但TCP中所有进程在同一个空间取值,不能重复。,同一台点设备上同一个协议不同进程的端口号不能相同!,计算机工程系,软件端口与硬件端口,为了便于与网络设备中端口混淆:在协议栈层间的抽象的协议端口是软件端口。路由器或交换机上的端口是硬件端口。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。,计算机工程系,三类端口,如何分配端口号?熟知端口,数值一般为01023。登记端口号,数值为102449151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。客户端口号或短暂端口号,数值为4915265535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。,计算机工程系,用户数据报协议UDP(UserDatagramProtocol)运输层采用无连接的UDP协议时,这种逻辑通信信道是一条不可靠信道,提供尽力而为服务。,运输层的两个主要协议,计算机工程系,传输控制协议TCP(TransmissionControlProtocol)当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。,运输层的两个主要协议,计算机工程系,运输层的两个主要协议,TCP,UDP,IP,应用层,与各种网络接口,运输层,计算机工程系,因此,运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。,运输层的两个主要协议,计算机工程系,运输层的两个主要协议,UDP在传送数据之前不需要先建立连接。对方的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。TCP则提供面向连接的服务。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。,计算机工程系,运输层的两个主要协议,运输层的UDP用户数据报与网际层的IP数据报有很大区别。IP数据报要经过互连网中许多路由器的存储转发,但UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。TCP报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了TCP连接。,计算机工程系,3用户数据报协议UDP,UDP概述UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点。,计算机工程系,3用户数据报协议UDP,UDP的主要特点UDP是无连接的,即发送数据之前不需要建立连接。UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。UDP支持一对一、一对多、多对一和多对多的交互通信。UDP的首部开销小,只有8个字节。,计算机工程系,UDP是面向报文的,IP数据报的数据部分,IP首部,IP层,UDP首部,UDP用户数据报的数据部分,运输层,应用层报文,应用层,计算机工程系,面向报文的UDP,发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。应用程序必须选择合适大小的报文。,计算机工程系,UDP的首部格式,伪首部,源端口,目的端口,长度,检验和,数据,首部,UDP长度,源IP地址,目的IP地址,0,17,IP数据报,字节,4,4,1,1,2,12,2,2,2,2,字节,发送在前,数据,首部,UDP用户数据报,计算机工程系,UDP基于端口的分用,伪首部,源端口,目的端口,长度,检验和,数据,首部,UDP长度,源IP地址,目的IP地址,0,17,IP数据报,字节,4,4,1,1,2,12,2,2,2,2,字节,发送在前,数据,首部,UDP用户数据报,用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。,伪首部,源端口,目的端口,长度,检验和,数据,首部,UDP长度,源IP地址,目的IP地址,0,17,IP数据报,字节,4,4,1,1,2,12,2,2,2,2,字节,发送在前,数据,首部,UDP用户数据报,在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。,计算UDP检验和的例子,1001100100010011153.1900001000011010008.1041010101100000011171.3000011100000101114.1100000000000100010和170000000000001111150000010000111111108700000000000011011300000000000011111500000000000000000(检验和)0101010001000101数据0101001101010100数据0100100101001110数据0100011100000000数据和0(填充)1001011011101101求和得出的结果0110100100010010检验和,153.19.8.104,171.3.14.11,12字节伪首部,8字节UDP首部,7字节数据,按二进制反码运算求和将得出的结果求反码,全0171510871315全0数据数据数据数据数据数据数据全0,计算机工程系,UDP报文实例,以下为网络分析工具捕捉到的数据帧,对其中的UDP报文的构成进行分析。ffffffffffff001320dc57b208004500004319a600008011d4da0a014229ffffffff03ec03ec002f1ccb640a00001108000000352e302e302e3732041083190a014229ec03000000000000000025050000,计算机工程系,UDP报文实例,计算机工程系,4传输控制协议TCP,TCP协议是运输层的重要协议,提供可靠传输机制。,虚电路方式,由于其依赖IP层的不可靠传送机制实现,因此如何确保其可靠传输?,计算机工程系,4.1TCP可靠传输的实现原理,TCP连接如何实现可靠传输?IP层提供的是不可靠传输,如何实现可靠传输?停止等待协议重传机制,计算机工程系,停止等待协议,一定能可靠传输了吗?(1)发送报文出错?(2)发送报文丢失?(3)确认报文丢失?(4)确认报文出错?,计算机工程系,停止等待协议,在发送方设定超时重传计时器,实现超时重传:确保丢失和有差错的发送报文能够重新发送,此时,确认报文丢失、出错、甚至迟到后会出现什么情况?,计算机工程系,确认丢失和确认迟到,在接收方丢弃重复报文,在发送方同样丢弃重复确认报文,计算机工程系,停止等待协议,说明:在发送完一个报文(分组)后,必须暂时保留已发送的报文(分组)的副本。发送报文必须编号,以确认重复报文;同样,确认分组中必须包含对哪个发送报文的确认信息,即包含发送报文的编号,以丢弃重复确认。超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。,计算机工程系,4.1TCP可靠传输的实现原理,使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。这种可靠传输协议常称为自动重传请求ARQ(AutomaticRepeatreQuest)。ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。,计算机工程系,信道利用率分析,停止等待协议的优点是简单,但缺点是信道利用率太低。,信道利用率太低,如何提高?,计算机工程系,信道利用率分析,流水线传输发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。,如何实现?是否可以连续不断发送?,计算机工程系,连续ARQ协议,1,2,3,4,5,6,7,8,9,10,11,12,(a)发送方设置并维持发送窗口(发送窗口是5),发送窗口,如何实现确认?是否需要每个分组都确认?,在发送方引入滑动窗口,以实现对发送量的控制,计算机工程系,连续ARQ协议,累积确认考虑到信道的可靠性还是比较高的,因此,在接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。,如果确认失败如何处理?,计算机工程系,连续ARQ协议,Go-back-N(回退N)如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。,计算机工程系,4.1TCP可靠传输的实现原理,TCP可靠通信实现方式总结停止等待协议批量发送滑动窗口控制累计确认N步回退,问题:发送方滑动窗口的大小如何确认?与通信线路的闲忙有无关系?,在TCP中通过接收方的处理能力和信道忙闲状况来确定窗口大小。流量控制和拥塞控制,计算机工程系,4.2传输控制协议TCP概述,TCP协议便是以连续ARQ原理为实现依据进行实现,其最主要的特点包括:TCP是面向连接的运输层协议。每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。TCP提供可靠交付的服务。TCP提供全双工通信。面向字节流。,计算机工程系,TCP面向流的概念,发送TCP报文段,发送方,接收方,把字节写入发送缓存,从接收缓存读取字节,应用进程,应用进程,18,17,16,15,14,H,加上TCP首部构成TCP报文段,TCP,TCP,字节流,字节流,H,表示TCP报文段的首部,x,表示序号为x的数据字节,TCP连接,从应用进程的角度来看是流传输,TCP工作示意图,计算机工程系,TCP面向流的概念,说明:TCP连接是一条虚连接而不是一条真正的物理连接。TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。TCP可把太长的数据块划分短一些再传送。TCP也可等待积累有足够多的字节后再构成报文段发送出去。,计算机工程系,4.3TCP的连接,如何描述和建立TCP传输的”虚电路”?TCP连接TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。端口号拼接到(contatenatedwith)IP地址即构成了套接字。,计算机工程系,4.3TCP的连接,传输数据流的逻辑通路,TCP连接,计算机工程系,套接字(socket),套接字socket=(IP地址:端口号)每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:TCP连接:=socket1,socket2=(IP1:port1),(IP2:port2),网络连接:(IP1,Port1),(IP2,Port2),协议,计算机工程系,套接字(socket),说明:应用编程接口API称为socketAPI,简称为socket。socketAPI中使用的一个函数名也叫作socket。调用socket函数的端点称为socket。调用socket函数时其返回值称为socket描述符,可简称为socket。在操作系统内核中连网协议的Berkeley实现,称为socket实现。,TCP首部,20字节的固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,32位,SYN,RST,PSH,ACK,URG,位08162431,填充,TCP数据部分,TCP首部,TCP报文段,IP数据部分,IP首部,发送在前,4.4TCP报文段的首部格式,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,源端口和目的端口字段各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,序号字段占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,确认号字段占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,即该序号之前的报文已经收到。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,数据偏移(即首部长度)占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字(以4字节为计算单位)。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,保留字段占6位,保留为今后使用,但目前应置为0。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,紧急URG当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,确认ACK只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,推送PSH(PuSH)接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,复位RST(ReSeT)当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,同步SYN同步SYN=1表示这是一个连接请求或连接接受报文。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,终止FIN(FINis)用来释放一个连接。FIN1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,窗口字段占2字节,用来让对方设置发送窗口的依据,单位为字节。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,检验和占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,紧急指针字段占16位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,比特08162431,填充,选项字段长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”,MSS(MaximumSegmentSize)是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。,计算机工程系,其他选项,窗口扩大选项占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。时间戳选项占10字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)。选择确认选项在后面的5.6.3节介绍。,TCP首部,20字节固定首部,目的端口,数据偏移,检验和,选项(长度可变),源端口,序号,紧急指针,窗口,确认号,保留,FIN,SYN,RST,PSH,ACK,URG,位08162431,填充,填充字段这是为了使整个首部长度是4字节的整数倍。,计算机工程系,TCP数据报实例分析,0002b9f29f09000f1fb082ff0800450000281125400040065cbe0a01422ed155af680b5a0050662c9acb496e3adf5010f9f857ff0000,计算机工程系,TCP数据报实例分析,计算机工程系,4.4TCP可靠传输的实现,要解决的关键问题:滑动窗口如何实现?重传计时如何确定?,计算机工程系,滑动窗口的实现,滑动窗口的实现措施一:以字节为单位在发送端和接受端都设置滑动窗口,发送端的滑动窗口用于控制发送,而接受端的滑动窗口用于缓冲接收。,计算机工程系,滑动窗口的实现,前移,不允许发送,已发送并收到确认,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期望收到的序号,前沿,后沿,前移,收缩,发送方A根据B给出的窗口值构造出自己的发送窗口,TCP标准强烈不赞成发送窗口前沿向后收缩,发送端的滑动窗口,不允许发送,已发送并收到确认,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发送了11个字节的数据,P3P1=A的发送窗口(又称为通知窗口)P2P1=已发送但尚未收到确认的字节数P3P2=允许发送但尚未发送的字节数(又称为可用窗口),允许发送但尚未发送,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收到新的确认号,发送窗口向前滑动,先存下,等待缺少的数据的到达,不允许发送,已发送并收到确认,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的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。,通过这种方式可以调控发送方的数据发送速率,计算机工程系,滑动窗口的实现,滑动窗口的实现措施二:在发送方和接收方都设置相应的内存缓冲区,用于实现发送和接收的算法。滑动窗口就是依靠缓冲区机制来实现的。,计算机工程系,发送缓存,最后被确认的字节,发送应用程序,发送缓存,最后发送的字节,发送窗口,已发送,TCP,序号增大,计算机工程系,接收缓存,接收应用程序,已收到,接收窗口,TCP,接收缓存,下一个读取的字节,序号增大,下一个期望收到的字节(确认号),计算机工程系,发送缓存与接收缓存的作用,发送缓存用来暂时存放:发送应用程序传送给发送方TCP准备发送的数据;TCP已发送出但尚未收到确认的数据。接收缓存用来暂时存放:按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。,计算机工程系,超时重传时间如何确定?,重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。如何确定重传计时阈值?,计算机工程系,往返时延的方差很大,由于TCP的下层是一个互联网环境,IP数据报所选择的路由变化很大,这样传输时间差别也大。因而运输层的往返时间的方差也很大。,时间,数据链路层,T1,T2,T3,往返时间的概率分布,计算机工程系,超时重传时间如何确定?,是否可以通过求平均往返时间来确定,如何求平均往返时间?时效性如何考虑?指定时段平均法RTTs=(RTT1+RTT2+RTTn)/n加权平均法,即逐步累积法RTTs=(1-)*RTTs+*RTTi,计算机工程系,加权平均往返时间,TCP保留了RTT的一个加权平均往返时间RTTS(这又称为平滑的往返时间)。第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值。以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:新的RTTS(1)(旧的RTTS)(新的RTT样本)(5-4)式中,01。若很接近于零,表示RTT值更新较慢。若选择接近于1,则表示RTT值更新较快。RFC2988推荐的值为1/8,即0.125。,计算机工程系,超时重传时间RTO(RetransmissionTime-Out),RTO应略大于上面得出的加权平均往返时间RTTS。RFC2988建议使用下式计算RTO:RTORTTS+4RTTD(5-5)RTTD是RTT的偏差的加权平均值。RFC2988建议这样计算RTTD。第一次测量时,RTTD值取为测量到的RTT样本值的一半。在以后的测量中,则使用下式计算加权平均的RTTD:新的RTTD=(1)(旧的RTTD)+RTTS新的RTT样本(5-6)是个小于1的系数,其推荐值是1/4,即0.25。,计算机工程系,超时重传时间如何确定?,是否通过上述方式已经解决问题?往返时间如何确定呢?例如发生报文重传后如何确定往返时间?,计算机工程系,往返时间RTT?,往返时间的测量相当复杂,TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK。如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?,发送一个TCP报文段,超时重传TCP报文段,收到ACK,时间,1,2,往返时间RTT?,是对哪一个报文段的确认?,计算机工程系,Karn算法,在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本。这样得出的加权平均平均往返时间RTTS和超时重传时间RTO就较准确。,是否合理?,计算机工程系,报文段每重传一次,就把RTO增大一些:新的RTO(旧的RTO)系数的典型值是2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。实践证明,这种策略较为合理。,修正的Karn算法,计算机工程系,4.5TCP的流量控制,利用滑动窗口实现流量控制一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flowcontrol)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在TCP连接上实现流量控制。如何实现?,计算机工程系,4.5TCP的流量控制,利用滑动窗口实现流量控制通过接收方来控制发送方的滑动窗口大小的方法来控制发送方的发送速率,即在接收方的确认报文中指定发送方的滑动窗口大小。,流量控制举例,计算机工程系,4.5TCP的流量控制,可能会遇到的特殊情况:发送方产生数据比较慢,而造成发送报文段包含数据量比较小。造成报文往返频繁,降低了通信效率.接收方处理速度比较慢,每次只处理一个报文,然后发送确认,进而造成确认频繁,降低了通信效率。如何改进?,计算机工程系,Nagle算法,主要针对发送方产生数据比较慢,而造成发送报文段包含数据量比较小的情况。Nagle算法主要思想是强迫发送方等待,让它收集发送数据,以便发送大块数据,即通过降低发送次数来加大每次发送的数据量。,计算机工程系,Nagle算法,计算机工程系,Clark算法,主要针对接收方接收处理数据较慢,而造成频繁发送确认报文的情况。其处理方式如下:只要接收方的接收缓冲区已满,则每次接收到TCP报文后返回窗口值为0的确认报文,以停止发送方的数据发送,直到接收缓冲区的空闲区域已经能容纳最大长度的报文段或有一半以上的接收缓空间已经空闲,再发送一个窗口值不为0的确认窗口,以重新更新发送方的滑动窗口大小,使发送方可以继续发送报文段。,计算机工程系,延迟确认算法,实现原理是当接收方收到报文段后,并不马上回复确认报文,而是等接收缓冲区已经有一定数量的空闲空间后,再回送确认报文段。这样便可减慢发送方滑动窗口的滑动速度,进而降低数据的发送速度。同时也减少了确认报文的数量,进而减少了通信量。但是延迟确认的延迟时间过长有可能迫使发送方重传没有确认的报文,因此延迟确认的时间不能太长,一般不能超过500ms。,计算机工程系,4.6TCP的拥塞控制,拥塞控制的一般原理在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏产生拥塞(congestion)。出现资源拥塞的条件:对资源需求的总和可用资源若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。,计算机工程系,拥塞控制与流量控制的关系,流量控制是由于接收方不能及时处理数据而引发的控制机制;中间路由器或物理链路的超载所引起数据传输的严重延时,称为网络拥塞。,计算机工程系,拥塞控制与流量控制的关系,流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。,计算机工程系,拥塞控制与流量控制的关系,拥塞控制如何实现?拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。与流量控制类似,拥塞的控制也是通过降低传输速率来实现。在TCP中为了更好地实现拥塞控制,在发送方引入了拥塞窗口,利用该窗口来控制发送方发送数据的速率。,计算机工程系,拥塞控制,面临的问题:如何检测已经发生拥塞?如何控制拥塞?如果用拥塞窗口,那么在发送方就有两个控制窗口,即用于流量控制的窗口和用于拥塞控制的窗口,两个窗口的关系如何处理?如何确定拥塞窗口的大小?,计算机工程系,拥塞控制,流量控制窗口大小是由接收方指定,而拥塞窗口的大小是由发送方自己确定。实际发送窗口的大小是从这两个窗口中选取一个较小的窗口。,计算机工程系,几种拥塞控制方法,慢开始在建立连接时,发送方将拥塞窗口大小初始化为一个最大报文段的大小MSS,然后每收到一个接收方的确认报文,拥塞窗口的大小就增加一个MSS。这样,接收方的确认报文返回的越快,表明网络通信能力越强,因此拥塞窗口大小就增长得越快。而且拥塞窗口大小的增长实际上是一种指数型增长,如果对其增长速度不控制,拥塞窗口很快就将变得很大。,以试探方式逐步确认!,发送方,接收方,发送M1,确认M1,发送M2M3,确认M2M3,发送M4M7,确认M4M7,cwnd=1,cwnd=2,cwnd=4,发送M8M15,cwnd=8,t,t,发送方每收到一个对新报文段的确认(重传的不算在内)就使cwnd加1。,轮次1,轮次2,轮次3,计算机工程系,几种拥塞控制方法,拥塞避免算法为了避免拥塞窗口过快增长,尽量避免拥塞现象的出现。当拥塞窗口大小达到一个门限值时,便采取拥塞避免算法来改变拥塞窗口的大小,其方法是每收到一个确认报文,拥塞窗口大小增加一个MSS,即使该确认报文是针对多个报文段的,拥塞窗口也只增加一个MSS。这样,拥塞窗口大小的增长就变成了线性增长,增长速度减缓了。当然,由于拥塞窗口依然在增长,最终仍然可能导致拥塞。,减缓试探速率!,计算机工程系,几种拥塞控制方法,重传定时器由于上述两种策略都将使拥塞窗口变得很大,进而造成网络拥塞的发生。为此,TCP/IP中引入了重传定时器。当由于网络拥塞使重传定时器超时的时候,发送方则进入拥塞解决阶段。发送方在进行TCP报文段重传的同时,将拥塞窗口的门限值调整为拥塞窗口的一半,并将拥塞窗口恢复成一个MSS,然后进入新一轮的调整。,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的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,慢开始和拥塞避免算法的实现举例,发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,慢开始和拥塞避免算法的实现举例,在执行慢开始算法时,拥塞窗口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的初始值,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,慢开始和拥塞避免算法的实现举例,发送端每收到一个确认,就把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的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,慢开始和拥塞避免算法的实现举例,接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的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的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,慢开始和拥塞避免算法的实现举例,发送端每收到一个对新报文段的确认,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输轮次按指数规律增长。,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,慢开始和拥塞避免算法的实现举例,当拥塞窗口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的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,传输轮次,22,16,“乘法减小”,2,4,6,8,10,12,14,16,18,20,0,0,4,8,12,20,24,拥塞窗口cwnd,新的ssthresh值,网络拥塞,指数规律增长,ssthresh的初始值,慢开始,慢开始,慢开始,拥塞避免“加法增大”,拥塞避免“加法增大”,慢开始和拥塞避免算法的实现举例,假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了。,传输轮次,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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论