第6-8讲运输层课件_第1页
第6-8讲运输层课件_第2页
第6-8讲运输层课件_第3页
第6-8讲运输层课件_第4页
第6-8讲运输层课件_第5页
已阅读5页,还剩152页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第6-8讲_运输层第5章运输层

5.1运输层协议概述5.1.1进程之间的通信 5.1.2运输层的两个主要协议5.1.3运输层的端口5.2用户数据报协议UDP 5.2.1UDP概述 5.2.2UDP的首部格式1/6/20242计算机网络_运输层第5章运输层(续)5.3传输控制协议TCP概述 5.3.1TCP最主要的特点 5.3.2TCP的连接5.4可靠传输的工作原理5.4.1停止等待协议5.4.2连续ARQ协议5.5TCP报文段的首部格式1/6/20243计算机网络_运输层第5章运输层(续)5.6TCP可靠传输的实现5.6.1以字节为单位的滑动窗口

5.6.2超时重传时间的选择5.6.3选择确认SACK5.7TCP的流量控制5.7.1利用滑动窗口实现流量控制5.7.1必须考虑传输效率

1/6/20244计算机网络_运输层第5章运输层(续)5.8TCP的拥塞控制5.8.1拥塞控制的一般原理5.8.2几种拥塞控制方法 5.8.3随机早期检测RED5.9TCP的运输连接管理 5.9.1TCP的连接建立5.9.2TCP的连接释放5.9.3TCP的有限状态机1/6/20245计算机网络_运输层5.1.1进程之间的通信

为什么需要运输层两台主机通过网络层已可相互通信IP数据报包含源IP地址和目的IP地址为什么还要运输层?通信的终点并非主机;而是主机中的应用进程(QQ,IE等)一台主机中可能同时有多个应用进程与另一台主机的多个应用进程通信数据到达主机后,如何区分这些应用进程?1/6/20246计算机网络_运输层运输层的功能复用与分用复用:发送方的多个进程共用一个运输层协议分用:接收方的运输层把数据分交给不同进程其他重要功能可靠传输(差错检测)拥塞控制流量控制通过“端口”区分不同的进程1/6/20247计算机网络_运输层运输层协议和网络层协议的主要区别

应用进程…

应用进程…

IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网1/6/20248计算机网络_运输层运输层为相互通信的应用进程提供了逻辑通信54321运输层提供应用进程间的逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1LAN2WANAP2AP3AP4IP层LAN1AP1AP2AP4端口端口54321IP协议的作用范围运输层协议TCP和UDP的作用范围AP31/6/20249计算机网络_运输层应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。1/6/202410计算机网络_运输层5.1.3运输层的端口操作系统中,进程是用进程标识符来标志的但是,不同操作系统使用的进程标识符不统一为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志。1/6/202411计算机网络_运输层端口号(protocolportnumber)

简称为端口(port)解决这个问题的方法就是在运输层使用协议端口号(protocolportnumber),或通常简称为端口(port)。虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由TCP来完成。1/6/202412计算机网络_运输层辨析:软件端口与硬件端口在协议栈层间的抽象的协议端口是软件端口(即运输层的端口)。路由器或交换机上的端口是硬件端口。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各个进程与运输实体进行层间交互的一种地址。1/6/202413计算机网络_运输层TCP的端口端口用一个16位端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。1/6/202414计算机网络_运输层三类端口熟知端口,数值一般为0~1023。登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。1/6/202415计算机网络_运输层常用熟知端口80:http协议端口81:https协议端口53:域名解析服务DNS的端口21:FTP服务的端口……1/6/202416计算机网络_运输层TCP/IP的运输层有两个不同的协议:(1)用户数据报协议UDP

(UserDatagramProtocol)传送UDP报文(用户数据报)(2)传输控制协议TCP

(TransmissionControlProtocol)传送TCP报文段(Segment)5.1.2运输层的两个主要协议1/6/202417计算机网络_运输层TCP/IP体系中的运输层协议TCPUDPIP应用层与各种网络接口运输层1/6/202418计算机网络_运输层TCP与UDPUDP提供无连接服务不需要事先建立连接接收方收到UDP报文后,不需要返回确认UDP不提供可靠交付,但是却很高效TCP提供面向连接的服务支持可靠传输、拥塞控制和流量控制因此,TCP协议的开销比较大1/6/202419计算机网络_运输层5.2用户数据报协议UDP

UDP的主要特点UDP只在IP之上增加端口和差错检测的功能。UDP是无连接的,即发送数据之前不需要建立连接。UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制,很适合多媒体通信的要求。UDP支持一对一、一对多、多对一和多对多的交互通信。UDP的首部开销小,只有8个字节。1/6/202420计算机网络_运输层面向报文的UDP发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。应用程序必须选择合适大小的报文。1/6/202421计算机网络_运输层UDP是面向报文的IP数据报的数据部分IP首部IP层UDP首部UDP用户数据报的数据部分运输层应用层报文应用层1/6/202422计算机网络_运输层5.2.2UDP的首部格式1/6/2024计算机网络_运输层伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。1/6/202424计算机网络_运输层伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。1/6/202425计算机网络_运输层UDP基于端口的分用IP层UDP数据报到达端口2端口3端口1UDP分用1/6/202426计算机网络_运输层计算UDP检验和的例子1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101101→求和得出的结果0110100100010010→检验和04112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全01715108713

15

全0数据数据数据数据数据数据数据全01/6/202427计算机网络_运输层5.3传输控制协议TCP概述

5.3.1TCP最主要的特点

TCP是面向连接的运输层协议TCP连接是点对点(一对一)的,每条TCP连接只能有两个端点(endpoint)TCP提供可靠交付的服务TCP提供全双工通信TCP是面向字节流的1/6/202428计算机网络_运输层768H

TCP面向流的概念

发送TCP报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109H加上TCP首部构成TCP报文段TCPTCP字节流字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接1/6/202429计算机网络_运输层面向字节流的概念续TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。TCP根据接收方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节TCP可把太长的数据块划分短一些再传送TCP也可等待积累有足够多的字节后再构成报文段发送出去。不管上面发什么,也不管下面怎么组装1/6/202430计算机网络_运输层举例应用层35268字节106345218113046……FTPQQTCP102661026645124512……拥塞变化IP150015001500……根据拥塞组装TCP报文不同的应用不能混合组装1/6/202431计算机网络_运输层5.3.2TCP的连接TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。套接字=端口号+IP地址1/6/202432计算机网络_运输层套接字(socket)套接字socket=(IP地址:端口号)(5-1)http://56:8080/每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}(5-2)1/6/202433计算机网络_运输层5.4可靠传输的工作原理数据在传输过程中可能丢失,或者出错如何使接收方正确地接收所有数据IP协议不保障传输的可靠性它仅仅是“尽力发送”每一个IP数据报TCP需要提供传输的可靠性基本思想

确认重传机制接收方确认收到了报文超过时间发送方未收到确认,重传1/6/202434计算机网络_运输层本章与可靠传输相关的协议停止等待协议,又称自动重传请求ARQ最简单的可靠传输协议,缺陷明显只是为了引出可靠传输面临的各种问题连续ARQ协议ARQ的加强版,接近TCP所使用的机制滑动窗口协议TCP的可靠传输机制1/6/202435计算机网络_运输层5.4.1停止等待协议

一些假设A发送数据而B接收数据并回复确认不考虑该协议所处层次,数据单元称“分组”基本思想每发送完一个分组就停止发送等待收到对方的确认后,再次发送1/6/202436计算机网络_运输层5.4.1停止等待协议

(a)无差错情况A发送M1确认M1B发送M2发送M3确认M2确认M3A发送M1B超时重传M1发送M2确认M1丢弃有差错的报文

(b)超时重传tttt1/6/202437计算机网络_运输层请注意在发送完一个分组后,必须暂时保留已发送的分组的副本。分组和确认分组都必须进行编号。超时计时器的重传时间应当比分组传输的平均往返时间更长一些。重传时间很难设置,因为传输路径及其状态是未知的、动态的重传时间过长,通信效率就低重传时间过短,会产生不必要的重传1/6/202438计算机网络_运输层确认丢失和确认迟到A发送M1B超时重传M1发送M2丢弃重复的M1重传确认M1

(a)确认丢失确认M1A发送M1B超时重传M1发送M2丢弃该M1重传确认M1

(b)确认迟到确认M1收下迟到确认但什么也不做tttt1/6/202439计算机网络_运输层可靠通信的实现使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。这种可靠传输协议常称为自动重传请求ARQ(AutomaticRepeatreQuest)。ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。1/6/202440计算机网络_运输层信道利用率停止等待协议的优点是简单,但缺点是信道利用率太低。TDRTTATD+RTT+TAB分组确认tt分组确认TD:发送分组所需时间RTT:A和B之间的往返时间TA:发送确认所需时间1/6/202441计算机网络_运输层信道的利用率U

(5-3)分子:发送一个分组所需的时间分母:发送相邻两次分组间的间隔1/6/202442计算机网络_运输层流水线传输发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。B分组ttAACK1/6/202443计算机网络_运输层5.4.2连续ARQ协议123456789101112(a)发送方维持发送窗口(发送窗口大小是5)发送窗口(b)收到一个确认后发送窗口向前滑动向前123456789101112发送窗口发送窗口,即当前可连续发送的分组范围1/6/202444计算机网络_运输层累积确认接收方一般采用累积确认的方式不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认表示:到这个分组为止的所有分组都正确收到累积确认的优缺点容易实现,即使确认丢失也不必重传?不能向发送方反映出接收方已经正确收到的所有分组的信息。下一次确认补上1/6/202445计算机网络_运输层Go-back-N(回退N)如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。1/6/202446计算机网络_运输层TCP可靠通信的具体实现TCP连接的每一端都必须设有两个窗口一个发送窗口和一个接收窗口。可靠传输机制以字节而非分组为数据单元确认是基于字节序号而非报文序号。TCP两端的四个窗口处于动态变化之中。TCP连接的往返时间RTT也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。

需要由RTT推出重传时间1/6/202447计算机网络_运输层提问为什么需要运输层运输层有哪两种协议,它们的区别如何理解“TCP是面向字节流的”停止等待协议的基本思想连续ARQ的基本思想1/6/202448计算机网络_运输层TCP首部20字节的固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32位SYNRSTPSHACKURG位08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前5.5TCP报文段的首部格式1/6/202449计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充源端口和目的端口字段——各占2字节。与UDP的端口类似,用来区分应用进程。1/6/202450计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充序号字段——占4字节,TCP为每个字节都编上序号序号字段的值是本报文段所发送的数据的第一个字节的序号。1/6/202451计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充确认号字段——占4字节期望收到的下一个报文段的第一个字节的序号。1/6/202452计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充数据偏移——占4位即该TCP报文段的首部长度。以4字节为计算单位。1/6/202453计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充保留字段——占6位,保留为今后使用,但目前应置为0。1/6/202454计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充紧急URG——该比特为1,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。1/6/202455计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充确认ACK——只有当ACK

1时确认号字段才有效。当ACK

0时,确认号无效。1/6/202456计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充推送PSH(PuSH)——收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。1/6/202457计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充复位RST(ReSeT)——当RST

1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因)必须释放连接,然后再重新建立运输连接。1/6/202458计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充同步SYN——SYN=1表示这是一个连接请求或连接接受报文。1/6/202459计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充终止FIN(FINis)——用来释放一个连接。FIN

1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。1/6/202460计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充窗口字段——占2字节,由接收方设置。用于告知发送方应如何设置发送窗口,单位为字节。1/6/202461计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。1/6/202462计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充紧急指针字段——占16位,

指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

1/6/202463计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据部分最大长度是MSS个字节。”MSS(MaximumSegmentSize)是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。1/6/202464计算机网络_运输层关于最大报文长度MSSMSS太小,网络利用率低每个报文要加IP首部和TCP首部MSS太大,造成IP协议分片而且重传开销大(需要重传很长的报文)MSS默认值为536字节1/6/202465计算机网络_运输层窗口扩大选项选项占3字节(原窗口字段16位)用于扩大窗口字段的位数(一次连续地发送更多的字节)最多可再扩大16位(存放在该选项的2个字节中)选项剩下的1个字节指明具体扩大了多少位1/6/202466计算机网络_运输层131/6/202467计算机网络_运输层时间戳选项时间戳选项——占10字节主要包括时间戳值字段(4字节)和时间戳回送回答字段(4字节)。功能是计算往返时间RTT(见5.6.2节)防止序号绕回选择确认选项——在后面的5.6.3节介绍。1/6/202468计算机网络_运输层TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG位08162431填充填充字段——这是为了使整个首部长度是4字节的整数倍。1/6/202469计算机网络_运输层5.6TCP可靠传输的实现

5.6.1以字节为单位的滑动窗口前移不允许发送已发送并收到确认允许发送的序号26272829303132333435363738394041424344454647484950515253545556B期望收到的序号前沿后沿前移收缩确认号为31,窗口值为20A据此构造自己的发送窗口不赞成发送窗口前沿收缩A的发送窗口=20未再收到确认的情况下,A可把窗口内的数据连续发出1/6/202470计算机网络_运输层前沿和后沿的变化前移不允许发送已发送并收到确认允许发送的序号26272829303132333435363738394041424344454647484950515253545556前沿后沿前移收缩A的发送窗口=20后沿不动:未收到新的确认前沿一般不断前移,但也可能不动:后沿不可能向后移动后沿前移:收到了新的确认2.收到了新确认但对方通知窗口缩小,使得发送窗口前沿正好不动1.未收到新的确认且窗口大小不变1/6/202471计算机网络_运输层不允许发送已发送并收到确认A的发送窗口位置不变允许发送但尚未发送262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机B的接收窗口允许接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A发送了11个字节的数据P3–P1=A的发送窗口(又称为通知窗口)P2–P1=已发送但尚未收到确认的字节数P3–P2=允许发送但尚未发送的字节数(又称为可用窗口)1/6/202472计算机网络_运输层允许发送但尚未发送A的发送窗口向前滑动已发送并收到确认不允许发送已发送但未收到确认26272829303132333435363738394041424344454647484950515253545556P1P2P3允许接收B的接收窗口向前滑动已发送确认并交付主机不允许接收26272829303132333435363738394041424344454647484950515253545556未按序收到A收到新的确认号——34,发送窗口向前滑动缓存,等待缺少的数据到达1/6/202473计算机网络_运输层不允许发送已发送并收到确认A的发送窗口已满,有效窗口为零262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3A的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。1/6/202474计算机网络_运输层TCP的发送缓存最后被确认的字节应用程序已发发送缓存最后发送的字节发送窗口已发送序号增大(1)应用程序传给TCP准备发送的数据(2)TCP已发出但尚未收到确认的数据存储空间1/6/202475计算机网络_运输层TCP的接收缓存应用程序已收已收到接收窗口接收缓存下一个读取的字节序号增大下一个期望收到的字节(确认号)(1)按序到达,但应用程序未读取的数据(2)未按序到达的数据存储空间1/6/202476计算机网络_运输层发送缓存与接收缓存的作用发送缓存用来暂时存放:

发送应用程序传送给发送方TCP准备发送的数据;TCP已发送出但尚未收到确认的数据。接收缓存用来暂时存放:

按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。

1/6/202477计算机网络_运输层需要强调三点A的发送窗口并不总是和B的接收窗口一样大(因为有一定的时间滞后)。TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。1/6/202478计算机网络_运输层5.6.2超时重传时间的选择重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间已到但还没有收到确认,就要重传这一报文段。重传时间依据报文往返时延(RTT)而定1/6/202479计算机网络_运输层往返时延的方差很大由于TCP的下层是一个互联网环境,IP数据报所选择的路由变化很大。因而运输层的往返时间的方差也很大。时间数据链路层运输层T1T2T3往返时间的概率分布1/6/202480计算机网络_运输层加权平均往返时间TCP保留了一个加权平均往返时间RTTS(这又称为平滑的往返时间)。第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值。以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:

新的RTTS

(1

)

(旧的RTTS)

(新的RTT样本)(5-4)式中,0

1。若

很接近于零,表示RTT值更新较慢。若选择

接近于1,则表示RTT值更新较快。RFC2988推荐的

值为1/8,即0.125。报文被成功确认,即可算作样本1/6/202481计算机网络_运输层超时重传时间RTO(RetransmissionTime-Out)

RTO应略大于上面得出的加权平均往返时间RTTS。RFC2988建议使用下式计算RTO:

RTO

RTTS+4

RTTD

(5-5)RTTD是RTT的偏差的加权平均值。RFC2988建议这样计算RTTD。第一次测量时,RTTD值取为测量到的RTT样本值的一半。在以后的测量中,则使用下式计算加权平均的RTTD:新的RTTD=(1

)

(旧的RTTD)+

RTTS

新的RTT样本

(5-6)

是个小于1的系数,其推荐值是1/4,即0.25。1/6/202482计算机网络_运输层旧RTTS=0.25sRTT样本=0.30s新的RTTS=0.875*0.25+0.125*0.30=0.25625旧的RTTD是0.03s最新的偏差是0.04375RTTD

0.75*0.03+0.25*0.04375=0.0334375RTO

RTTS+4

RTTD1/6/202483计算机网络_运输层往返时间RTT?往返时间的测量相当复杂TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK。如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?发送一个TCP报文段超时重传TCP报文段收到ACK时间12往返时间RTT?是对哪一个报文段的确认?1/6/202484计算机网络_运输层Karn算法在计算平均往返时间RTT时,只要报文段重传了,就不将其作为往返时间样本。这样得出的加权平均平均往返时间RTTS和超时重传时间RTO就较准确。1/6/202485计算机网络_运输层报文段每重传一次,就把RTO增大一些:新的RTO

(旧的RTO)系数

的典型值是2。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和超时重传时间RTO的数值。实践证明,这种策略较为合理。修正的Karn算法1/6/202486计算机网络_运输层5.6.3选择确认SACK

(SelectiveACK)

接收方收到的字节流中间缺少了一些序号的数据,需要重传能否只重传缺少的数据,不重传已经正确到达接收方的数据?这就要使用“选择确认”SACK1/6/202487计算机网络_运输层110001501300035014500确认号=1001L1=1501L2=3501R1=3001R2=4501接收到的字节流序号不连续……连续的字节流………第一个字节块第二个字节块和前后字节不连续的每一个字节块都有两个边界:左边界和右边界。图中用四个指针标记这些边界。第一个字节块的左边界L1=1501,但右边界R1=3001。左边界指出字节块的第一个字节的序号,但右边界减1才是字节块中的最后一个序号。第二个字节块的左边界L2=3501,而右边界R2=4501。1/6/202488计算机网络_运输层RFC2018的规定如果要使用选择确认,那么在建立TCP连接时,就要在TCP首部的选项中加上“允许SACK”的选项。如果使用选择确认,那么原来首部中的“确认号字段”的用法仍然不变。只是以后在TCP报文段的首部中都增加了SACK选项,以便报告收到的不连续的字节块的边界。由于首部选项的长度最多只有40字节,而指明一个边界就要用掉4字节,因此在选项中最多只能指明4个字节块的边界信息。必须有至少1个字节用于指明选项类型1/6/202489计算机网络_运输层SACK选项使用举例110001501300035014500确认号=1001L1=1501L2=3501R1=3001R1=4501……连续的字节流………第一个字节块第二个字节块带SACK的确认TCP报文内容:确认号:1001Why?边界1:1501边界2:3001边界3:3501边界4:4501SACK选项:1/6/202490计算机网络_运输层5.7TCP的流量控制

5.7.1利用滑动窗口实现流量控制如果数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flowcontrol)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在TCP连接上实现流量控制。1/6/202491计算机网络_运输层seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许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为止的数据都收到了)丢失!B告诉A:“我的接收窗口rwnd=400(字节)”。rwnd:接收窗口;ACK:确认位;ack:确认字段但是A不知道丢失,认为自己还能发送100字节Why201~300,301~400都没被确认!假设每次都发送100字节1/6/202492计算机网络_运输层持续计时器

防止发送方就此停止发送TCP为每一个连接设有一个持续计时器。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出新的窗口值。若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。若窗口不是零,则发送方可以继续发送数据。1/6/202493计算机网络_运输层5.7.2必须考虑传输效率TCP协议是面向字节的不管应用进程何时发、发了多少TCP都自己把握组装和发送报文的时机那么,究竟何时发送报文比较好呢?1/6/202494计算机网络_运输层几种TCP报文发送机制可以用不同机制控制TCP报文段的发送时机第一种机制:只要缓冲的数据达到MSS字节时,就组装成一个TCP报文段发送出去。第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的推送(push)操作。第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过MSS)发送出去。前提都是不违背滑动窗口协议1/6/202495计算机网络_运输层广泛使用Nagle算法只有收到对前一个报文段的确认后,才继续发送下一个报文段到达的数据达到发送窗口的一半或已达到报文段的最大长度时,就立即发送一个报文1/6/202496计算机网络_运输层提问TCP报文首部确认号、窗口字段的含义最大报文长度MSS选项的作用TCP实现可靠传输的基本原理发送窗口后沿和前沿何时前移、何时向后收缩确定超时重传时间的步骤选择确认的含义TCP如何实现流量控制1/6/202497计算机网络_运输层发送窗口相关概念

指针P1,P2,P3的含义不允许发送已发送并收到确认A的发送窗口允许发送但尚未发送262728293031323334353637383940414243444546474849505152535455已发送但未收到确认56P1P2P3可用窗口1/6/202498计算机网络_运输层SACK选项使用举例110001501300035014500确认号=1001L1=1501L2=3501R1=3001R1=4501……连续的字节流………第一个字节块第二个字节块带SACK的确认TCP报文内容:确认号:1001边界1:1501边界2:3001边界3:3501边界4:4501SACK选项:1/6/202499计算机网络_运输层5.8TCP的拥塞控制

5.8.1拥塞控制的一般原理在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。出现资源拥塞的条件:对资源需求的总和>可用资源(5-7)若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。1/6/2024100计算机网络_运输层产生拥塞的原因某个结点的缓存太小,队列排不下如果无限增大缓存,则排队时间大大增加,也会造成发送端超时重传某个结点处理速度太慢提高该处理机的速率,往往把瓶颈转移使网络的各个部分趋于均衡拥塞常常趋于恶化拥塞造成分组丢失于是发送方重传,拥塞加剧1/6/2024101计算机网络_运输层拥塞控制与流量控制的关系拥塞控制就是防止过多的数据进入网络拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

1/6/2024102计算机网络_运输层拥塞控制所起的作用提供的负载吞吐量理想的拥塞控制实际的拥塞控制0死锁(吞吐量=0)无拥塞控制拥塞轻度拥塞1/6/2024103计算机网络_运输层开环控制和闭环控制开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:监测网络以检测拥塞在何时、何处发生。将拥塞发生的信息传送到可采取行动的地方。调整网络系统的运行以解决出现的问题。1/6/2024104计算机网络_运输层5.8.2几种拥塞控制方法

1.慢开始和拥塞避免发送方维持一个叫做拥塞窗口cwnd(congestionwindow)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,动态变化。发送方让自己的发送窗口等于拥塞窗口。如考虑接收方的接收能力,则发送窗口还可能小于拥塞窗口。发送方控制拥塞窗口的原则只要网络没有出现拥塞,拥塞窗口就增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。1/6/2024105计算机网络_运输层慢开始算法的原理在主机刚刚开始发送报文段时先设置拥塞窗口cwnd=1,即设置为一个最大报文段MSS的数值。每收到一个报文段的确认后,将拥塞窗口加1,即增加一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。1/6/2024106计算机网络_运输层发送方接收方发送M1确认M1发送M2~M3确认M2~M3发送M4~M7确认M4~M7cwnd=1cwnd=2cwnd=4发送M8~M15cwnd=8…tt发送方每收到一个对新报文段的确认(重传的不算在内)就使cwnd加1。轮次1轮次2轮次31/6/2024107计算机网络_运输层传输轮次

(transmissionround)使用慢开始算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。“传输轮次”强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。例如,拥塞窗口cwnd=4,这时的往返时间RTT就是发送方连续发送4个报文段,并收到这4个报文段的确认,总共经历的时间。Why?1/6/2024108计算机网络_运输层设置慢开始门限状态变量ssthresh慢开始门限ssthresh的用法如下:当cwnd<ssthresh时,使用慢开始算法。当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。当cwnd=ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长。1/6/2024109计算机网络_运输层当网络出现拥塞时无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认)就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。目的是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。1/6/2024110计算机网络_运输层2216慢开始和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段(便于理解)。初始时,慢开始门限ssthresh=16。24681012141618200048122024拥塞窗口cwndssthresh的初始值传输轮次发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。1/6/2024111计算机网络_运输层慢开始和拥塞避免算法的实现举例在执行慢开始算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。

221624681012141618200048122024拥塞窗口cwndssthresh的初始值慢开始传输轮次1/6/2024112计算机网络_运输层慢开始和拥塞避免算法的实现举例发送端每收到一个确认,就把cwnd加1。于是发送端可以接着发送M1和M2两个报文段。221624681012141618200048122024拥塞窗口cwndssthresh的初始值慢开始传输轮次1/6/2024113计算机网络_运输层慢开始和拥塞避免算法的实现举例接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的cwnd加1。现在cwnd从2增大到4,并可接着发送后面的4个报文段。221624681012141618200048122024拥塞窗口cwndssthresh的初始值慢开始传输轮次1/6/2024114计算机网络_运输层慢开始和拥塞避免算法的实现举例发送端每收到一个对新报文段的确认,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输轮次按指数规律增长。221624681012141618200048122024拥塞窗口cwnd指数规律增长ssthresh的初始值慢开始传输轮次1/6/2024115计算机网络_运输层慢开始和拥塞避免算法的实现举例当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。221624681012141618200048122024拥塞窗口cwndssthresh的初始值慢开始传输轮次指数规律增长1/6/2024116计算机网络_运输层221624681012141618200048122024拥塞窗口cwndssthresh的初始值慢开始慢开始拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了。传输轮次网络拥塞指数规律增长1/6/2024117计算机网络_运输层221624681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长慢开始慢开始慢开始拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例检测到拥塞后ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。传输轮次“乘法减小”1/6/2024118计算机网络_运输层221624681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例当cwnd=12时改为执行拥塞避免算法传输轮次cwnd是从8直接增加到16,还是先增加到12?拥塞窗口按线性规律增长,每经过一个往返时延就增加一个MSS的大小。1/6/2024119计算机网络_运输层乘法减小

(multiplicativedecrease)

“乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。1/6/2024120计算机网络_运输层加法增大

(additiveincrease)

“加法增大”是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。1/6/2024121计算机网络_运输层慢开始与拥塞避免小结慢开始是否真的很“慢”“慢”是指起步很低,cwnd初始值为1此阶段拥塞窗口的增长幅度很大(指数级)拥塞避免阶段(cwnd>ssthresh)拥塞窗口每次只增加1无论何时发现拥塞(未收到确认)ssthresh设为之前发送窗口的一半拥塞窗口降为1,重新进入慢开始阶段1/6/2024122计算机网络_运输层必须强调指出“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。1/6/2024123计算机网络_运输层2.快重传和快恢复快重传算法首先要求接收方每收到一个失序的报文段后就立即发出对之前已收到报文的重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。1/6/2024124计算机网络_运输层快重传举例发送方接收方发送M1确认M1t确认M2发送M2发送M3发送M4发送M5发送M6重复确认M2立即重传M3重复确认M2重复确认M2t发送M7收到三个连续的对M2的重复确认立即重传M3丢失能否确认M41/6/2024125计算机网络_运输层快恢复算法(1)当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh减半。但接下去不执行慢开始算法。(2)因为发送方现在认为网络很可能没有发生拥塞,所以现在不执行慢开始算法 即拥塞窗口cwnd现在不设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论