1、第五章第五章 运输层运输层计算机网络计算机网络(第五版第五版)第1页第第 5 5 章章 运输层运输层 5.1 5.1 运输层协议概述运输层协议概述 5.1.1 5.1.1 进程之间通信进程之间通信 Go Go 5.1.2 5.1.2 运输层两个主要协议运输层两个主要协议 Go Go 5.1.3 5.1.3 运输层端口运输层端口 Go Go 5.2 5.2 用户数据报协议用户数据报协议 UDP UDP 5.2.1 UDP 5.2.1 UDP 概述概述 Go Go 5.2.2 UDP 5.2.2 UDP 首部格式首部格式 Go Go 5.3 5.3 传输控制协议传输控制协议 TCP TCP 概述概
2、述 5.3.1 TCP 5.3.1 TCP 最主要特点最主要特点 Go Go 5.3.2 TCP 5.3.2 TCP 连接连接 Go Go 第2页第第 5 5 章章 运输层运输层(续续)5.4 5.4 可靠传输工作原理可靠传输工作原理 5.4.1 5.4.1 停顿等候协议停顿等候协议 Go Go 5.4.2 5.4.2 连续连续 ARQ ARQ 协议协议 Go Go 5.5 TCP 5.5 TCP 报文段首部格式报文段首部格式 Go Go 5.6 TCP 5.6 TCP 可靠传输实现可靠传输实现 5.6.1 5.6.1 以字节为单位滑动窗口以字节为单位滑动窗口 Go Go 5.6.2 5.6.
3、2 超时重传时间选择超时重传时间选择 Go Go 5.6.3 5.6.3 选择确认选择确认 SACK SACK Go Go 5.7 TCP5.7 TCP流量控制流量控制 5.7.1 5.7.1 利用滑动窗口实现流量控制利用滑动窗口实现流量控制 Go Go 5.7.2 5.7.2 必须考虑传输效率必须考虑传输效率 Go Go 第3页第第 5 5 章章 运输层运输层(续续)5.8 TCP 5.8 TCP 拥塞控制拥塞控制 5.8.1 5.8.1 拥塞控制普通原理拥塞控制普通原理 Go Go 5.8.2 5.8.2 几个拥塞控制方法几个拥塞控制方法 Go Go 5.8.3 5.8.3 随机早期检测随
4、机早期检测 RED RED Go Go 5.9 TCP 5.9 TCP 运输连接管理运输连接管理 5.9.1 TCP 5.9.1 TCP 连接建立连接建立 Go Go 5.9.2 TCP 5.9.2 TCP 连接释放连接释放 Go Go 5.9.3 TCP 5.9.3 TCP 有限状态机有限状态机 Go Go 第4页5.1.1 5.1.1 进程之间通信进程之间通信l从从通通信信和和信信息息处处理理角角度度看看,运运输输层层向向它它上上面面应应用用层层提提供供通通信信服服务务,它它属属于于面面向向通通信信部部分分最最高高层层,同时也是用户功效中最低层同时也是用户功效中最低层l当当网网络络边边缘缘
5、部部分分中中两两个个主主机机使使用用网网络络关关键键部部分分功功效效进进行行端端到到端端通通信信时时,只只有有位位于于网网络络边边缘缘部部分分主主机机协协议议栈栈才才有有运运输输层层,而而网网络络关关键键部部分分中中路路由由器器在转发分组时都只用到下三层功效在转发分组时都只用到下三层功效第5页运输层为相互通信应用进程提供了逻辑通信运输层为相互通信应用进程提供了逻辑通信主机 A主机 B应用进程应用进程54321运输层提供给用进程间逻辑通信IP 层AP1AP2AP4端口端口54321AP3路由器 1路由器 2AP1LAN2WANAP2AP3AP4LAN1IP 协议作用范围运输层协议 TCP 和 U
6、DP 作用范围第6页运输层协议和网络层协议主要区分运输层协议和网络层协议主要区分应用进程应用进程IP 协议作用范围(提供主机之间逻辑通信)TCP 和 UDP 协议作用范围(提供进程之间逻辑通信)因 特 网Back第7页TCP/IP 运输层有两个不一样协议:(1)(1)用户数据报协议用户数据报协议 UDPUDP(User Datagram Protocol)(User Datagram Protocol)(2)(2)传输控制协议传输控制协议 TCPTCP(Transmission Control Protocol)(Transmission Control Protocol)l两个对等运输实体在
7、通信时传送数据单位叫作两个对等运输实体在通信时传送数据单位叫作运运输协议数据单元输协议数据单元 TPDU(Transport Protocol Data TPDU(Transport Protocol Data Unit)Unit)lTCP TCP 传送数据单位协议是传送数据单位协议是 TCP TCP 报文段报文段(segment)(segment)l UDP UDP 传送数据单位协议是传送数据单位协议是 UDP UDP 报文报文或或用户数据用户数据报报5.1.2 5.1.2 运输层两个主要协议运输层两个主要协议 第8页TCP/IP TCP/IP 体系中运输层协议体系中运输层协议 TCPUDP
8、IP应用层与各种网络接口运输层l l运输层运输层 UDP UDP 用户数据报与网际层用户数据报与网际层IPIP数据报有很大区分。数据报有很大区分。IP IP 数据报数据报要经过互连网中许多路由器存放要经过互连网中许多路由器存放转发,但转发,但 UDP UDP 用户数据报是在运用户数据报是在运输层端到端抽象逻辑信道中传送输层端到端抽象逻辑信道中传送l lTCP TCP 则提供面向连接服务。则提供面向连接服务。但不提供广播或多播服务但不提供广播或多播服务。因为。因为 TCP TCP 要提供可靠、面向连接运输服务,所以不可防止地增加要提供可靠、面向连接运输服务,所以不可防止地增加了许多开销。这不但使
9、协议数据单元首部增大很多,还要占了许多开销。这不但使协议数据单元首部增大很多,还要占用许多处理机资源用许多处理机资源第9页还要强调两点还要强调两点 l运运输输层层 UDPUDP 用用户户数数据据报报与与网网际际层层IPIP数数据据报报有有很很大大区区分分。IPIP 数数据据报报要要经经过过互互连连网网中中许许多多路路由由器器存存放放转转发发,但但 UDPUDP 用用户户数数据据报报是是在在运运输输层层端端到到端端抽抽象象逻逻辑辑信信道中传送道中传送lTCPTCP 报报文文段段是是在在运运输输层层抽抽象象端端到到端端逻逻辑辑信信道道中中传传送送,这这种种信信道道是是可可靠靠全全双双工工信信道道。
10、但但这这么么信信道道却却不不知知道道终终究究经经过过了了哪哪些些路路由由器器,而而这这些些路路由由器器也也根根本本不不知知道上面运输层是否建立了道上面运输层是否建立了 TCP TCP 连接连接Back第10页5.1.3 5.1.3 运输层端口运输层端口 l运行在计算机中进程是用运行在计算机中进程是用进程标识符进程标识符来标志。来标志。l运行在应用层各种应用进程却不应该让计算机操作运行在应用层各种应用进程却不应该让计算机操作系统指派它进程标识符。这是因为在因特网上使用系统指派它进程标识符。这是因为在因特网上使用计算机操作系统种类很多,而不一样操作系统又使计算机操作系统种类很多,而不一样操作系统又
11、使用用不一样格式进程标识符不一样格式进程标识符l为了使运行不一样操作系统计算机应用进程能够相为了使运行不一样操作系统计算机应用进程能够相互通信,就互通信,就必须用统一方法必须用统一方法对对 TCP/IP TCP/IP 体系应用进体系应用进程进行标志程进行标志 第11页需要处理问题需要处理问题 l因为进程创建和撤消都是动态,发送方几乎无法识因为进程创建和撤消都是动态,发送方几乎无法识别对方机器上进程别对方机器上进程l有时我们会变更接收报文进程,但并不需要通知全有时我们会变更接收报文进程,但并不需要通知全部发送方部发送方l我们往往需要利用目标我们往往需要利用目标主机提供功效主机提供功效来识别终点,
12、来识别终点,而而不需要知道不需要知道实现这个功效进程实现这个功效进程第12页端口号端口号(protocol port number)(protocol port number)l处理这个问题方法:在运输层使用处理这个问题方法:在运输层使用协议端口号协议端口号(protocol port number)(protocol port number),或通常简称为,或通常简称为端口端口(port)(port)l即使通信终点是应用进程,但我们能够把端口想象即使通信终点是应用进程,但我们能够把端口想象是通信终点,因为我们是通信终点,因为我们只要把要传送报文交到目标只要把要传送报文交到目标主机某一个适当目
13、标端口,剩下工作主机某一个适当目标端口,剩下工作(即最终交付即最终交付目标进程目标进程)就由就由 TCP TCP 来完成来完成注意:注意:l在协议栈层间抽象协议端口是在协议栈层间抽象协议端口是软件端口软件端口l路由器或交换机上端口是路由器或交换机上端口是硬件端口硬件端口第13页TCP/IP TCP/IP 端口端口 l端口用一个端口用一个 16 16 位位端口号进行标志端口号进行标志l端口号只含有端口号只含有当地当地意义意义三类端口三类端口l熟知端口:熟知端口:数值普通为数值普通为 01023 01023l登记端口号登记端口号:数值为:数值为102449151102449151,为没有熟知端,为
14、没有熟知端口号应用程序使用。使用这个范围端口号必须在口号应用程序使用。使用这个范围端口号必须在 IANA IANA 登记,以预防重复登记,以预防重复l客户端口号客户端口号/短暂端口号短暂端口号:数值为:数值为49152655354915265535,留,留给客户进程选择暂时使用给客户进程选择暂时使用Back第14页5.2.1 UDP 5.2.1 UDP 概述概述UDP UDP 主要特点主要特点1.UDP UDP 是是无连接无连接,即发送数据之前不需要建立连接,即发送数据之前不需要建立连接2.UDP UDP 使使用尽最大努力交付用尽最大努力交付,即不确保可靠交付,同,即不确保可靠交付,同时也不使
15、用拥塞控制时也不使用拥塞控制3.UDP UDP 是是面向报文面向报文4.UDP UDP 没有没有拥塞控制拥塞控制,很适合多媒体通信要求,很适合多媒体通信要求 5.UDP UDP 支持一对一、一对多、多对一和多对多交互通支持一对一、一对多、多对一和多对多交互通信信6.UDP UDP 首部开销小首部开销小,只有,只有 8 8 个字节个字节第15页面向报文面向报文 UDP UDPl发送方发送方 UDP UDP 对应用程序交下来报文,在添加首部对应用程序交下来报文,在添加首部后就向下交付后就向下交付 IP IP 层。层。UDP UDP 对应用层交下来报文,对应用层交下来报文,既不合并,也不拆分既不合并
16、,也不拆分,但保留这些报文边界,但保留这些报文边界l应用层交给应用层交给 UDP UDP 多长报文,多长报文,UDP UDP 就照样发送,即就照样发送,即一次发送一个报文一次发送一个报文l接收方接收方 UDP UDP 对对 IP IP 层交上来层交上来 UDP UDP 用户数据报,在用户数据报,在去除首部后就原封不动地交付上层应用进程,去除首部后就原封不动地交付上层应用进程,一次一次交付一个完整报文交付一个完整报文l应用程序应用程序必须选择必须选择适当大小报文适当大小报文第16页UDP UDP 是面向报文是面向报文 IP 数据报数据部分IP 首部IP 层UDP 首部UDP 用户数据报数据部分运
17、输层应用层报文应用层Back第17页5.2.2 UDP 5.2.2 UDP 首部格式首部格式 伪首部源端口目端口长 度检验和数 据首 部IP 数据报122222字节发送在前数 据首 部UDP 用户数据报第18页UDP UDP 基于端口分用基于端口分用 IP 层UDP 数据报抵达端口 2端口 3端口 1UDP 分用第19页UDP UDP 校验和伪首部校验和伪首部UDP长度源 IP 地址目 IP 地址017字节44112伪首部源端口目端口长 度检验和数 据首 部IP 数据报122222字节发送在前数 据首 部UDP 用户数据报第20页计算计算 UDP UDP 检验和例子检验和例子153.19.8.
18、104171.3.14.1112 字节伪首部8 字节UDP 首部7 字节数据填充全 0 17 15 1087 13 15 全 0数据 数据 数据 数据数据 数据 数据 全 010011001 00010011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和和 1700000000 00001111 1500000100 00111111 108700000000 00001101 1300000000 00001111 1500000000 0000
19、0000 0(0(检验和检验和)01010100 01000101 数据数据01010011 01010100 数据数据01001001 01001110 数据数据01000111 00000000 数据和数据和 0(0(填充填充)10010110 11101101 求和得出结果求和得出结果01101001 00010010 检验和检验和 按二进制反码运算求和将得出结果求反码Back第21页5.3.1 TCP 5.3.1 TCP 最主要特点最主要特点 lTCP TCP 是是面向连接面向连接运输层协议运输层协议l每一条每一条 TCP TCP 连接连接只能有两个端点只能有两个端点(endpoint
20、)(endpoint),每,每一条一条 TCP TCP 连接只能是连接只能是点对点点对点(一对一一对一)lTCP TCP 提供提供可靠交付可靠交付服务服务l TCP TCP 提供提供全双工全双工通信通信l面向字节流面向字节流第22页TCP TCP 面向流概念面向流概念 TCP7 68H发送 TCP 报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109 H加上 TCP 首部组成 TCP 报文段TCP字节流字节流H表示 TCP 报文段首部x表示序号为 x 数据字节TCP 连接Back第23页5.3.2 TCP 5.3
21、.2 TCP 连接连接 lTCP TCP 把连接作为最基本抽象把连接作为最基本抽象l每一条每一条 TCP TCP 连接有两个端点连接有两个端点lTCP TCP 连接端点不是主机,不是主机连接端点不是主机,不是主机IP IP 地址,不是地址,不是应用进程,也不是运输层协议端口。应用进程,也不是运输层协议端口。TCP TCP 连接端连接端点叫做点叫做套接字套接字(socket)(socket)或或插口插口l端口号拼接到端口号拼接到(contatenated with)IP(contatenated with)IP 地址地址即组成即组成了了套接字套接字第24页套接字套接字(socket)(socke
22、t)套接字 socket=(IP地址:端口号)(5-1)l每一条每一条 TCP TCP 连接唯一地被通信两端两个端点连接唯一地被通信两端两个端点(即即两个套接字两个套接字)所确定所确定。即:。即:TCP 连接:=socket1,socket2 =(IP1:port1),(IP2:port2)(5-2)Back第25页5.4.1 5.4.1 停顿等候协议停顿等候协议(停停-等协议等协议)(a)无差错情况A发送 M1确认 M1B发送 M2发送 M3确认 M2确认 M3ttA发送 M1B超时重传 M1发送 M2确认 M1丢弃有差错报文(b)超时重传tt第26页请注意请注意l在发送完一个分组后,必须在
23、发送完一个分组后,必须暂时保留暂时保留已发送分组已发送分组副本副本l分组分组和和确认分组确认分组都必须进行都必须进行编号编号l超时计时器超时计时器重传时间重传时间应该比数据在分组传输应该比数据在分组传输平均平均往返时间更长一些往返时间更长一些第27页确认丢失和确认迟到确认丢失和确认迟到 A发送 M1B超时重传 M1发送 M2丢弃重复 M1重传确认 M1(a)确认丢失确认 M1ttA发送 M1B超时重传 M1发送 M2丢弃重复 M1重传确认M1(b)确认迟到确认 M1收下迟到确认但什么也不做tt第28页信道利用率信道利用率 U U l停顿等候协议优点是简单,但缺点是信道利用率停顿等候协议优点是简
24、单,但缺点是信道利用率太低太低TDRTTATD+RTT+TAB分组确认tt分组确认(5-3)第29页流水线传输流水线传输 l发送方可发送方可连续发送连续发送多个分组,无须每发完一个分组多个分组,无须每发完一个分组就停顿下来等候对方确实认就停顿下来等候对方确实认l因为信道上一直有数据不间断地传送,这种传输方因为信道上一直有数据不间断地传送,这种传输方式可取得很高信道利用率式可取得很高信道利用率B分组ttAACKBack第30页5.4.2 5.4.2 连续连续 ARQ ARQ 协议协议 123456789101112(a)发送方维持发送窗口(发送窗口是 5)发送窗口(b)收到一个确认后发送窗口向前
25、滑动向前123456789101112发送窗口第31页累积确认累积确认 l接收方普通采取接收方普通采取累积确认累积确认方式。即无须对收到分组方式。即无须对收到分组逐一发送确认,而是对按序抵达最终一个分组发送逐一发送确认,而是对按序抵达最终一个分组发送确认,表示:确认,表示:到这个分组为止全部分组都已正确收到这个分组为止全部分组都已正确收到了到了l优点是:轻易实现,即使确认丢失也无须重传确认优点是:轻易实现,即使确认丢失也无须重传确认l缺点是:不能向发送方反应出接收方已经正确收到缺点是:不能向发送方反应出接收方已经正确收到全部分组信息全部分组信息第32页Go-back-N(Go-back-N(回
26、退回退 N)N)l假如发送方发送了前假如发送方发送了前 5 5 个分组,而中间第个分组,而中间第 3 3 个分组个分组丢失了。这时接收方只能对前两个分组发出确认。丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组下落,而只好把后面发送方无法知道后面三个分组下落,而只好把后面三个分组都再重传一次三个分组都再重传一次l这就叫做这就叫做 Go-back-N(Go-back-N(回退回退 N)N),表示需要再退回来,表示需要再退回来重传已发送过重传已发送过 N N 个分组个分组l可见当通信线路质量不好时,连续可见当通信线路质量不好时,连续 ARQ ARQ 协议会带协议会带来负面影响
27、来负面影响第33页TCP TCP 可靠通信详细实现可靠通信详细实现 lTCP TCP 连接每一端都必须设有两个窗口:连接每一端都必须设有两个窗口:发送窗口发送窗口和和接收窗口接收窗口lTCP TCP 可靠传输机制用可靠传输机制用字节序号字节序号进行控制。进行控制。TCP TCP 全全部确实认都是部确实认都是基于序号基于序号而不是基于报文段而不是基于报文段lTCP TCP 两端四个窗口经常处于两端四个窗口经常处于动态改变动态改变之中之中lTCPTCP连接往返时间连接往返时间 RTT RTT 也也不是固定不变不是固定不变。需要使。需要使用特定算法估算较为合理重传时间用特定算法估算较为合理重传时间
28、Back第34页5.5 TCP 5.5 TCP 报文段首部格式报文段首部格式 TCP首部20 字节固定首部目 端 口数据偏移检 验 和选 项(长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 位SYNRSTPSHACKURG位 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送方向第35页TCPTCP首部各字段含义首部各字段含义TCP首部20字节固定首部目 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24
29、 31填 充第36页选项字段选项字段l lTCPTCP最初只要求了一个选项,即最初只要求了一个选项,即最大报文段长度最大报文段长度MSS MSS(Maximum Segment Size)(Maximum Segment Size)。MSSMSS告诉对方告诉对方TCPTCP:我缓存所能我缓存所能接收报文段数据字段最大长度是接收报文段数据字段最大长度是MSSMSS个字节个字节。MSS MSS 是指数是指数据字段最大长度据字段最大长度(数据字段加上数据字段加上 TCP TCP 首部才等于整个首部才等于整个 TCP TCP 报报文段文段)l l窗口扩大选项窗口扩大选项:占:占3 3字节,其中有一个字
30、节表示移位值字节,其中有一个字节表示移位值 S S。新窗口值等于新窗口值等于TCP TCP 首部中窗口位数增大到首部中窗口位数增大到(16+S)(16+S),相当于,相当于把窗口值向左移动把窗口值向左移动 S S 位后取得实际窗口大小位后取得实际窗口大小l l时间戳选项时间戳选项:占:占1010字节,其中最主要域是字节,其中最主要域是时间戳值字段时间戳值字段(4(4 字节字节)和和时间戳回送回答字段时间戳回送回答字段(4(4 字节字节)l l选择确认选项选择确认选项:在后面:在后面5.6.35.6.3节介绍节介绍Back第37页5.6.1 5.6.1 以字节为单位滑动窗口以字节为单位滑动窗口前
31、移前移不允许发送不允许发送已发送并已发送并收到确认收到确认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 56B 期望期望收到序号收到序号窗口前沿窗口后沿前移前移收缩收缩l依据 B 给出窗口值,A 结构出自己发送窗口 lTCP 标准强烈不赞成发送窗口前沿向后收缩 第38页发送端发送端 A A 和接收端和接收端 B B 窗口窗口不允许发送已发送并收到确认A 发送窗口位置不变允许发送但还未发送26 27 28 29 3
32、0 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已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机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未按序收到可用窗口发送了11个字节数据P3 P1=A 发送窗口(又称为通知窗口)P2 P1=已发送但还未收到确认字节数P3 P2=允许发送但还未发送字节数(又称为可用窗口)第39页
33、 A A 和和 B B 窗口向前滑动窗口向前滑动允许发送但还未发送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已发送并收到确认不允许发送已发送但未收到确认56P1P2P3允许接收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先存下,等候缺乏数据抵达未按序收到第
34、40页 A 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已发送但未收到确认56P1P2P3A窗口已满,但还没有再收到B确认,必须停止发送,此时P2和P3重叠如果长时间内均未收到确认,发生超时,A要重传这些数据第41页发送缓存发送缓存 最终被确认字节发送应用程序发送缓存最终发送字节发送窗口已发送已发送TCP序号增大l发送缓存用来暂时存放:发送缓存用来暂时存放:发送应用程
35、序传送给发送方发送应用程序传送给发送方 TCP TCP 准备发送数据准备发送数据TCP TCP 已发送出但还未收到确认数据已发送出但还未收到确认数据最终写入字节第42页接收缓存接收缓存接收应用程序已收到已收到接收窗口TCP接收缓存下一个读取字节序号增大下一个期望收到字节(确认号)l接收缓存用来暂时存放:接收缓存用来暂时存放:按序抵达、但还未被接收应用程序读取数据按序抵达、但还未被接收应用程序读取数据不按序抵达数据不按序抵达数据第43页需要强调三点需要强调三点lA A 发送窗口并不总是和发送窗口并不总是和 B B 接收窗口一样大接收窗口一样大(因为有因为有一定时间滞后一定时间滞后)lTCP TC
36、P 标准没有要求对不按序抵达数据应怎样处理。标准没有要求对不按序抵达数据应怎样处理。通常是先暂时存放在接收窗口中,等到字节流中所通常是先暂时存放在接收窗口中,等到字节流中所缺乏字节收到后,再按序交付上层应用进程缺乏字节收到后,再按序交付上层应用进程lTCP TCP 要求接收方必须有要求接收方必须有累积确认累积确认功效,这么能够减功效,这么能够减小传输开销小传输开销Back第44页5.6.2 5.6.2 超时重传时间选择超时重传时间选择l因为因为 TCP TCP 下层是一个互联网环境,下层是一个互联网环境,IP IP 数据报所选数据报所选择路由改变很大,因而运输层择路由改变很大,因而运输层往返时
37、延方差也很往返时延方差也很大大时间数据链路层运输层T1T2T3往返时间概率分布第45页l lTCP TCP 保留了保留了 RTT RTT 一个加权平均往返时间一个加权平均往返时间 RTT RTTS S(又称为平滑又称为平滑往返时间往返时间)l l第一次测量到第一次测量到 RTT RTT 样本时,样本时,RTTRTTS S 值就取为所测量到值就取为所测量到 RTT RTT 样本值。以后每测量到一个新样本值。以后每测量到一个新 RTT RTT 样本,就按下式重新计样本,就按下式重新计算一次算一次 RTT RTTS S:新新 RTT RTTS S (1(1)(旧旧RTTRTTS S)(新新RTTRT
38、T样本样本)(5-4)(5-4)式中,式中,0 0 1 1。若。若 很靠近于零,表示很靠近于零,表示 RTT RTT 值更新较慢。值更新较慢。若选择若选择 靠近于靠近于1 1,则表示,则表示RTTRTT值更新较快值更新较快l lRFC 2988 RFC 2988 推荐推荐 值为值为 1/8 1/8,即,即 0.125 0.125加权平均往返时间加权平均往返时间第46页l lRTO RTO 应略大于上面得出加权平均往返时间应略大于上面得出加权平均往返时间 RTT RTTS Sl lRFC 2988 RFC 2988 提议使用下式计算提议使用下式计算 RTO RTO:RTO RTO RTT RTT
39、S S+4 +4 RTT RTTD D (5-5)(5-5)l lRTTRTTD D 是是 RTT RTT 偏差加权平均值偏差加权平均值l lRFC 2988 RFC 2988 提议这么计算提议这么计算 RTT RTTD D。第一次测量时,。第一次测量时,RTTRTTD D 值取值取为测量到为测量到 RTT RTT 样本值二分之一。在以后测量中,则使用下样本值二分之一。在以后测量中,则使用下式计算加权平均式计算加权平均 RTT RTTD D:新新RTTRTTD D=(1=(1)(旧旧RTTRTTD D)+)+RTTRTTS S 新新RTTRTT样本样本 (5-6)(5-6)l l 是个小于是个
40、小于 1 1 系数,其推荐值是系数,其推荐值是 1/4 1/4,即,即 0.25 0.25超时重传时间超时重传时间 RTO RTO(RetransmissionTime-Out)(RetransmissionTime-Out)第47页往返时间 RTT?往返时间测量相当复杂往返时间测量相当复杂 lTCP TCP 在时间在时间1 1发送报文段,但没有收到确认。在时发送报文段,但没有收到确认。在时间间2 2重传报文段后,收到了确认报文段重传报文段后,收到了确认报文段 ACK ACKl怎样判定此确认报文段是对原来报文段怎样判定此确认报文段是对原来报文段 1 1 确实认,确实认,还是对重传报文段还是对重
41、传报文段 2 2 确实认?确实认?发送一个TCP 报文段超时重传TCP 报文段收到 ACK时间12往返时间 RTT?是对哪一个报文段确认?第48页Karn Karn 算法算法 l在计算平均往返时间在计算平均往返时间 RTT RTT 时,只要报文段重传了,时,只要报文段重传了,就不采取其往返时间样本就不采取其往返时间样本修正修正 Karn Karn 算法算法l报文段每重传一次,就把报文段每重传一次,就把 RTO RTO 增大一些:增大一些:新新 RTO RTO (旧旧 RTO)RTO)l系数系数 经典值是经典值是 2 2 l当不再发生报文段重传时,才依据报文段往返时延当不再发生报文段重传时,才依
42、据报文段往返时延更新平均往返时延更新平均往返时延 RTT RTT 和超时重传时间和超时重传时间 RTO RTO 数值数值Back第49页5.6.3 5.6.3 选择确认选择确认SACKSACK(Selective ACK)(Selective ACK)l接收方收到了和前面字节流不连续两个字节块接收方收到了和前面字节流不连续两个字节块l假如这些字节序号都在接收窗口之内,那么接收方假如这些字节序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到数据送方,使发送方不要再重复发送这些已收到数据第5
43、0页接收到字节流序号不连续接收到字节流序号不连续 1 1000 1501 3000 3501 4500确认号=1001L1=1501L2=3501R1=3001R1=4501连续字节流第一个字节块第二个字节块l l和前后字节不连续每一个字节块都有和前后字节不连续每一个字节块都有左边界左边界和和右边界,右边界,但但TCPTCP首部没有哪个字段能提供这些边界信息首部没有哪个字段能提供这些边界信息l l要使用选择确认,要使用选择确认,在建立在建立 TCP TCP 连接时连接时,就要在,就要在 TCP TCP 首部选项首部选项中加上中加上“允许允许 SACK SACK”选项选项l l而且原来首部中而且
44、原来首部中“确认号字段确认号字段”使用方法依然不变,但在使用方法依然不变,但在首首部中都增加部中都增加SACKSACK选项选项l l在选项中最多只能指明在选项中最多只能指明 4 4 个字节块边界信息个字节块边界信息Back第51页5.7.1 5.7.1 利用滑动窗口实现流量控制利用滑动窗口实现流量控制l l流量控制流量控制(flow control)(flow control)就是让发送方发送速率不要太快,既就是让发送方发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞要让接收方来得及接收,也不要使网络发生拥塞l l在连接建立时,在连接建立时,B B通知通知A A接收窗口接收窗口
45、rwnd=400(rwnd=400(字节字节)seq=1,DATAseq=1,DATAseq=201,DATAseq=201,DATAseq=401,DATAseq=401,DATAseq=301,DATAseq=301,DATAseq=101,DATAseq=101,DATAseq=201,DATAseq=201,DATAseq=501,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=601,rwnd=0ACK=1,ack=501,ACK=1,ack=501,r
46、wndrwnd=100=100A AB B允许允许 A A 发送序号发送序号 201 201 至至 500 500 共共 300 300 字节字节A A 发送了序号发送了序号 101 101 至至 200 200,还能发送,还能发送 200 200 字节字节A A 发送了序号发送了序号 301 301 至至 400 400,还能再发送,还能再发送 100 100 字节新数据字节新数据A A 发送了序号发送了序号 1 1 至至 100 100,还能发送,还能发送 300 300 字节字节A A 发送了序号发送了序号 401 401 至至 500 500,不能再发送新数据了,不能再发送新数据了A
47、A 超时重传旧数据,但不能发送新数据超时重传旧数据,但不能发送新数据允许允许 A A 发送序号发送序号 501 501 至至 600 600 共共 100 100 字节字节A A 发送了序号发送了序号 501 501 至至 600 600,不能再发送了,不能再发送了不允许不允许 A A 再发送再发送(到序号到序号 600 600 为止数据都收到了为止数据都收到了)丢失!第52页连续计时器连续计时器(persistence timer)(persistence timer)lTCP TCP 为每一个连接设有一个为每一个连接设有一个连续计时器连续计时器l只要只要 TCP TCP 连接一方收到对方连
48、接一方收到对方零窗口零窗口通知,就开启通知,就开启连续计时器连续计时器l若连续计时器设置时间到期,就发送一个若连续计时器设置时间到期,就发送一个零窗口零窗口探测报文段探测报文段(仅携带仅携带 1 1 字节数据字节数据),而对方就在确认,而对方就在确认这个探测报文段时给出了现在窗口值这个探测报文段时给出了现在窗口值l若窗口依然是零,则收到这个报文段一方就重新若窗口依然是零,则收到这个报文段一方就重新设置连续计时器设置连续计时器l若窗口不是零,则死锁僵局就能够打破了若窗口不是零,则死锁僵局就能够打破了 Back第53页5.7.2 5.7.2 必须考虑传输效率必须考虑传输效率l能够用不一样机制来控制
49、能够用不一样机制来控制 TCP TCP 报文段发送时机报文段发送时机第一个机制是第一个机制是 TCP TCP 维持一个变量,它等于最大报文段维持一个变量,它等于最大报文段长度长度 MSS MSS。只要缓存中存放数据到达。只要缓存中存放数据到达 MSS MSS 字节时,就字节时,就组装成一个组装成一个 TCP TCP 报文段发送出去报文段发送出去第二种机制是由发送方应用进程指明要求发送报文段,第二种机制是由发送方应用进程指明要求发送报文段,即即 TCP TCP 支持推送支持推送(push)(push)操作操作第三种机制是发送方一个计时器期限到了,这时就把当第三种机制是发送方一个计时器期限到了,这
50、时就把当前已经有缓存数据装入报文段前已经有缓存数据装入报文段(但长度不能超出但长度不能超出 MSS)MSS)发发送出去送出去l lNagleNagle算法和算法和ClarkClark算法算法Back第54页5.8.1 5.8.1 拥塞控制普通原理拥塞控制普通原理 l在某段时间,若对网络中某资源需求超出了该资源在某段时间,若对网络中某资源需求超出了该资源所能提供可用部分,网络性能就要变坏所能提供可用部分,网络性能就要变坏产生产生拥拥塞塞(congestion)(congestion)l出现资源拥塞条件出现资源拥塞条件 对资源需求总和对资源需求总和 可用资源可用资源 (5-7)(5-7)l若网络中