版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1计算机网络(第 5 版)第 5 章 运输层2n术语:n节点:主机和路由器。n链路:连接相邻节点的信道n无线链路、有线链路、局域网。n帧:链路层分组,封装数据报(datagrame)n链路层协议:定义了在链路两端的节点之间交互的分组格式,以及当发送和接收分组时这些节点采取的动作。n链路层协议所采取的动作包括差错检测、链路访问、重传和流量控制。链路层概念回顾2n数据链路层的任务:n通过一条链路把把数据报从一个节点传送到相邻节点。n不同的链路上可以使用不同的链路层协议传输数据报。ne.g.,在第一段链路应用以太网协议,在最后一段链路上应用802.11协议n每个链路层协议提供不同的服务ne.g.,是
2、否在链路上提供可靠数据传输n例子:从合肥到美国某城市An合肥到南京:汽车n南京到上海:火车n上海到美国城市A:飞机类比:n 乘客:datagramn 旅行阶段:信道n 传输模式:链路协议n 旅游社:路由算法34网络层概念回顾n网络层向传输层提供发送主网络层向传输层提供发送主机到接收主机的通信服务机到接收主机的通信服务n发送端把报文段发送端把报文段(segment)封封装成数据报装成数据报(datagrame),并并将其发送给相邻路由器;将其发送给相邻路由器;n路由器将路由器将datagrame从入链从入链路路转发转发到出链路;到出链路;n接收端提取接收端提取segment,并传递并传递给传输层
3、。给传输层。applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata li
4、nkphysicalnetworkdata linkphysicalnetworkdata linkphysical45本章学习重点n运输层(transport layer)提供的服务 (1) 分用/复用(2) 可靠传输(3) 流量控制(4) 拥塞控制nTCP/IP 的运输层的两个协议:(1) 用户数据报协议 UDP (User Datagram Protocol)(2) 传输控制协议 TCP (Transmission Control Protocol)6导航n5.1 概述n5.1.1 进程通信n5.1.2 进程寻址n5.1.3 两种运输层协议n5.1.4 分用与复用75.1 运输层协议概述
5、5.1.1 进程通信n进程:运行在主机上的程序;n同一主机上的进程使用进程间通信机制(由操作系统定义)互相通信。n不同主机上的进程通过交换报文(message)相互通信。n在给定的一对进程之间通信的会话中n客户机(client):发起通信的进程。n服务器(Server):在会话开始时等待联系的进程n运输层提供应用进程间的逻辑通信运输层协议和网络层协议的主要区别 应用进程应用进程IP 协议的作用范围(提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)因 特 网类比:n假定教师的信件通过收发室人员送到学校邮局。n教师的信件由收发室人员从学校邮局统一领取,并交到各教
6、师信箱。n进程:?n应用报文:?n主机:?n传输协议:?n网络层协议:?n注意,收发室人员只在本校工作。n传输层协议运行在端系统n运输层协议所能提供的服务受到了底层网络协议的服务模型的限制。n如果网络层协议不能为主机之间发送的segment提供时延和带宽保证,则传输层也不能为进程之间发送的报文提供时延和带宽保证。n但网络层协议不提供的某些服务,传输层协议也能够提供。n如,可靠传输服务。105.1.2 进程寻址运输层的端口 p182n为了使源主机上的发送进程能够识别目的主机上的接收进程,需要定义:n该主机的名称或地址。n目的主机上接收进程的标识。n进程标识符n不同的操作系统使用不同格式的进程标识
7、符。n必须用统一的方法对进程进行标志。 n在运输层使用协议端口号(protocol port number),简称为端口(port)。n两个主机的进程进行通信,不止要指明IP地址,还必须知道端口号。11TCP/IP 的端口 n端口用一个 16 位端口号进行标志。n端口号只具有本地意义,即只标志本计算机应用进程。n三类端口n熟知端口,数值一般为 01023。留给熟知应用层协议的。n登记端口号,数值为102449151,使用这个范围的端口号必须在 IANA 登记,以防止重复。n客户端口号或短暂端口号,数值为4915265535,留给客户进程选择暂时使用。通信结束后,这个端口号可供其他客户进程以后使
8、用。 125.1.3 两种不同的运输协议n运输层屏蔽了下面网络核心的细节, 在应用进程看来,两个运输层实体之间似乎有一条端到端的逻辑通信信道。n不同的传输层协议为应用进程提供不同的服务:nTCP,全双工的可靠信道。nUDP,不可靠信道。 面向连接服务:通信实体在传输数据前需要执行握手过程;面向连接服务可能会具有以下特性:可靠传输:无差错的、按序传递所有数据;流量控制:协调两端通信实体的发送速率和接收速率。拥塞控制:迫使端系统在网络拥塞时降低其发送分组的速率,避免网络核心(即路由器)出现缓存溢出和分组丢失现象。无连接的服务:通信实体在数据传输前没有握手过程;13TCP/IP 的运输层有两个不同的
9、协议:(1) 用户数据报协议 UDP (User Datagram Protocol)(2) 传输控制协议 TCP (Transmission Control Protocol)nTCP 传送的分组称为 TCP 报文段(segment)n UDP传送的分组称为UDP 报文或用户数据报。n为避免混淆,我们可以将传输层分组统称为segment。 TCP 与 UDP TCPUDPIP应用层与各种网络接口TCP/IP 体系中的运输层协议体系中的运输层协议5.1.4 分用(demultiplexing)与复用(multiplexing)每个应用进程有1个或多个socket;运输层通过socket将数据交
10、付给进程;同一时刻一台主机上有多个套接字,每个套接字都有唯一的标识符。接收端使用同一个运输层根据segement首部信息将应用层报文交付到目的应用进程(通过 correct socket)。分用:发送端使用同一个运输层从多个应用进程(通过 correct socket)收集数据块,并为其封装首信息,生成segment传递到网络层复用:applicationtransportnetworklinkphysicalP1applicationtransportnetworklinkphysicalapplicationtransportnetworklinkphysicalP2P3P4P1host
11、1host 2host 3套接字(socket)n进程通过套接字在网络上发送和接收报文。nSocket类似于门户nSocket也叫应用程序编程接口( Application Programming Interface - API )。process具有缓存变量的TCPsockethost orserverprocess具有缓存变量的TCPsockethost orserverInternetControlled by OS一旦应用程序开发者选择了一个运输层协议,则该应用程序就建立在由该协议提供的运输层服务上。controlled byapp developer应用程序开发者可以控制套接字在应用
12、端的 所有东西:如,选择传输协议,设置传输层参数.Socket是同一台主机内应用层与传输层之间的接口。分用的实现n一个IP datagramen含有源IP地址和目的IP地址。n封装segment,其首部含有源端口号和目的端口号。n主机根据IP地址和端口号将segment定位到合适的socketsource port #dest port #32 bitsapplicationdata (message)other header fieldsTCP/UDP segment formatUDP协议的分用方式n即UDP如何定位一个SocketnSocket由二元组唯一标识。n(目的 IP 地址, 目
13、的端口号)ClientIP:BP2client IP: AP1P1P3serverIP: CSP: 6428DP: 9157SP: 9157DP: 6428SP: 6428DP: 5775SP: 5775DP: 6428SP provides “return address”18导航n5.1 概述n5.2 用户数据报协议 UDP n5.2.1 UDP 概述 n5.2.2 UDP 的首部格式 195.2 用户数据报协议 UDP 5.2.1 UDP 概述 nUDP 只在 IP 的数据报服务之上增加了很少一点的功能:n复用和分用n差错检测n“尽最大努力的交付”,使得UDP 报文可能:n丢失n交付给应
14、用进程的报文失序。nUDP 用户数据报只能提供不可靠的交付。20nUDP 是无连接的:n通信双方没有握手过程。nUDP是面向报文的 :nUDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界( message boundaries )。n接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。n应用程序必须选择合适大小的报文。n太长:需要分割n太短:IP报文有效长度小UDP的特点:为什么使用UDP协议? n通信前不需要建立连接,因此不会引起建立连接的时延。nTCP在开始传输数据前要经过三次握手。n简单,不需
15、要维护连接状态n可以支持更多的客户机。n首部开销小:n8个字节;TCP20字节。n无拥塞控制225.2.2 UDP 的首部格式 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据(如果有) 首 部UDP 用户数据报伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报lUDP和TCP首部都包含一个12字节的伪首部,包含了IP首部和自身的一些字段,主要是为了计算检验和而设置的,不占实际空
16、间。 l因此,即检查了UDP数据报部分,又检查了IP地址。IP首部的协议字段值计算 UDP 检验和的例子 10011001 00010011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111 1500000100 00111111 108700000000 00001101 1300000000 00001111 1500000000 00000000 0(检验和)01010100 01000101 数据0101
17、0011 01010100 数据01001001 01001110 数据01000111 00000000 数据和 0(填充)10010110 11101101 求和得出的结果01101001 00010010 检验和 153.19.8.104171.3.14.1112 字节伪首部8 字节UDP 首部7 字节数据若UDP报文长度非偶数,则进行填充,填充字段不发送。按二进制反码运算求和将得出的结果求反码全 0 17 15 1087 13 15 全 0数据 数据 数据 数据数据 数据 数据 全 025练习n一个UDP数据报首部的16进制标识为:00 44 00 43 01 34 73 2f。求数据
18、包的源端口号、目的端口号、用户数据报的总长度、数据部分长度。26导航n5.1 概述n5.2 用户数据报协议 UDP n5.3 传输控制协议 TCP 概述 n5.3.1 TCP 最主要的特点 n5.3.2 TCP 连接 n5.3.4 TCP协议的分用275.3 传输控制协议 TCP 概述 5.3.1 TCP 最主要的特点 nTCP 是面向连接的运输层协议。l数据传输前要建立连接;l数据传输后要释放连接;l连接状态保存在端系统中。”面向”连接。nTCP 连接只能是点对点的(一对一)。l一个发送方对应一个接收方n一个发送方对应多个接收方的情况在TCP连接中不存在;反之亦然。 nTCP 提供可靠交付的
19、服务。l数据无差错、不丢失、不重复、按序到达n TCP 提供全双工通信。l通信双方的进程在任何时候都能发送数据。lTCP连接两端都有发送缓存和接收缓存7 68H发送 TCP 报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109 H加上 TCP 首部构成 TCP 报文段TCP发发送缓存送缓存TCP接接收缓存收缓存字节流字节流H表示 TCP 报文段的首部x表示序号为 x 的数据字节TCP 连接5. 面向字节流nTCP中,“流”(stream)指流入或流出进程的字节序列。n“面向字节流”:TCP不保存报文边界;nTCP
20、从发送缓存中取出的数据量受MTU限制。nTCP将segment中的数据放在接收缓存中,进程在合适的时候通过socket读取数据,并不以原始的报文为单位。socketsocketUDP是面向报文的 :发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。 1.1 UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界( message boundaries )。 1.2应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的
21、报文。应用程序应根据MTU选择合适大小的报文。29TCP 连接 := socket1, socket2 = (IP1: port1), (IP2: port2)5.3.2 TCP 的连接 n每一条 TCP 连接有两个端点。nTCP 连接的端点叫做套接字(socket)或插口。n每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即: 305.3.4 TCP协议的分用n与UDP不同,TCP 的Socket是通过4元组:(源IP地址,源端口号,目的IP地址,目的端口号)标识的。ClientIP:BP1client IP: AP1P2P4serverIP: CSP: 9157DP:
22、 80SP: 9157DP: 80P5P6P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: B31导航n5.1 概述n5.2 用户数据报协议 UDP n5.3 传输控制协议 TCP 概述 n5.4 可靠传输的工作原理n5.4.1 停止等待协议n5.4.2 连续 ARQ 协议5.4 可靠传输的工作原理5.4.1 停止等待协议 确认 M1确认 M2确认 M3n“停止等待”:n每发送一个分组就停止发送,等待对方确认;n在收到确认后再发送下一个分组。BttA发送 M1发送 M2发送 M31、无差错情况A发送 M1B发送 M2发送 M3tt确认
23、M1确认 M2确认 M3A发送 M1B超时重传 M1发送 M2确认 M1丢弃有差错的报文;2、 超时重传ttA超过一段时间没有收到确认,重传M1B什么也不做每发送完一个分组,设置一个重传计时器;计时器超时之前收到确认,则撤销计时器。3、确认丢失和确认迟到 A发送 M1B超时重传 M1发送 M2丢弃重复的 M1重传确认 M1(a) 确认丢失确认 M1A发送 M1B超时重传 M1发送 M2丢弃重复的 M1重传确认M1(b) 确认迟到确认 M1收下迟到的确认但什么也不做tttt36注意n在发送完一个分组后,必须暂时保留已发送的分组的副本。n分组和确认分组都必须进行编号。n超时计时器的重传时间应当比数
24、据在分组传输的平均往返时间更长一些。37自动重传请求ARQ (Automatic Repeat reQuest)nARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。38问: n信道失序时,仅使用一位序号的停止等待协议能否实现可靠传输?n停止等待协议中,收到重复报文什么都不做,是否可行?信道利用率 n停止等待协议的优点是简单,但缺点是信道利用率太低。 TDRTTATD + RTT + TAB分组确认tt分组确认ADDTTTURTT(5-3)假定没有重传假定没有重传忽略A处理确认分组的时间假设B收到分组后立刻发回确认当RTT远大于发送时间TD时,信道利用率会非常低。n
25、例:假定1200km的信道,往返时间RTT=20ms;分组长度为1200b,发送速率为1Mb/s;忽略处理时间。nU=0.0566n发送方只在5.66%的时间是忙的;n从另一角度看,发送方发送数据的速率仅为56.6kbn若出现重传,则发送方信道利用率还要下降;流水线传输(pipelining) n流水线传输对可靠传输协议的影响:n增加序列号范围n滑动窗口协议滑动窗口协议。n差错恢复方法: Go-back-N(GBN);选择重传(selcective repeat)B分组ttAACKn发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。425.4.2 连续 ARQ 协议 123
26、456789101112 发送方维持发送窗口(发送窗口是 5)表示位于发送窗中的5个分组可以连续发送发送窗口(b) 每收到一个确认后发送窗口向前滑动现在可以发送第6个分组向前123456789101112发送窗口43nGo-back-N(GBN)协议:n接收方采用累积确认的方式。n丢弃不按序到达的分组nGo-back-N(GBN,回退 N)n当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。一种连续 ARQ 协议 45一种连续 ARQ 协议n选择重传(Selcective Repeat)n接收方逐个确认正确接收的分组n发送方仅重传未被确认的分组n每个分组需要为自己设置一个计时器4647
27、48练习:n试证明:当用 n 个比特进行编号时,若接收窗口的大小为,则只有在发送窗口的大小Wt SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer /* end of loop forever */ 简化的TCP sender定时器管理过程RFC2988仅使用唯一 的重传定时器假定发送方不受TCP流量和拥塞控制的限制80重传情形分析Host ASeq=100, 20 bytes dataACK=100time过早超时Host BSeq=92, 8 bytes data
28、ACK=120Seq=92, 8 bytes dataSeq=92 timeoutACK=?Host ASeq=92, 8 bytes dataACK=100losstimeout由于丢失确认的重传Host BXSeq=92, 8 bytes dataACK=100timeSeq=92 timeoutSendBase= 100SendBase= 120SendBase= 120Sendbase= 10081Host ASeq=92, 8 bytes dataACK=100losstimeout累计确认:避免了第一个segment的重传Host BXSeq=100, 20 bytes dataA
29、CK=?timeSendBase= 12082快重传n超时重传的超时周期往往太长。这种长超时周期迫使发送方等待很长时间才重发丢失的分组。因而增加端到端时延。n快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(冗余确认,即以前已发送过的确认)。n发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。 83快重传举例发送方接收方发送 M1 确认 M1t 确认 M2 发送 M2发送 M3发送 M4 ?发送 M5发送 M6 重复确认 M2 立即重传 M3 重复确认 M2 重复确认 M2 t发送 M7收到三个连续的对 M2 的重复确认立即重传 M3丢失84 /Initial
30、SeqNum 是初始序号,可由通信双方随机选择是初始序号,可由通信双方随机选择 NextSeqNum = InitialSeqNum / NextSeqNum是下一个要发送字节的序号;是下一个要发送字节的序号; SendBase = InitialSeqNum / SendBase是最小未被确认的字节的序号。是最小未被确认的字节的序号。 loop (forever) switch(event) event: data received from application above create TCP segment with sequence number NextSeqNum if (ti
31、mer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: timer timeout retransmit not-yet-acknowledged segment with- smallest sequence number start timer event: ACK received, with ACK field value of y if (y SendBase) SendBase = y if (there are currently
32、 not-yet-acknowledged segments) start timer /* end of loop forever */ 简化的TCP sender假定发送方不受TCP流量和拥塞控制的限制; event: ACK received, with ACK field value of y if (y SendBase) SendBase = y if (there are currently not-yet-acknowledged segments) start timer else increment count of dup ACKs received for y if (
33、count of dup ACKs received for y = 3) resend segment with sequence number y a duplicate ACK for already ACKed segmentfast retransmit85接收端产生TCP ACK 的建议 RFC 1122, RFC 2581接收端事件期望序号seq #的报文段按序到达 所有先于seq #的数据均被确认期望序号seq #的报文段按序到达。 另一个按序报文段等待确认;比期望序号seq # 大的失序报文段到达;检测出数据流的间隔能部分或完全填充接收数据间隔的报文段到达接收端 动作延迟发送
34、ACK;对另一个按序到达的报文段最多等待0.5s.若下一个按序到达的报文段在该时间间隔内没有到达,则发送ACK;否则,发送累积ACK;立即发送累积ACK立即发送冗余ACK,ACK 字段为 seq. #若该报文段起始于间隔的底端,立即发送ACK 865.6.2 超时重传时间的选择n超时时间间隔如何确定?n必须大于TCP连接的往返时间(RTT),。n如果超时时间过长就会使网络空闲时间增大,降低了传输速率。n由于每个IP 数据报所选择的路由变化很大。因而RTT的方差也很大。87加权平均往返时间n加权平均往返时间 RTTS:nRTTS (1 ) (旧的 RTTS) (新的 RTT 样本) (5-4)n
35、式中,0 1。RFC 2988 推荐的 值为 1/8,即 0.125。 88Example RTT estimation:P222 5-3489RTT 的偏差的加权平均值n估计样本RTT偏离加权平均值RTTS多少。nRTTD 是 RTT 的偏差的加权平均值。n是偏离值的加权平均值;nRFC 2988 建议这样计算 RTTD:n第一次测量时,RTTD 值取为测量到的 RTT 样本值的一半。 新的 RTTD = (1 ) (旧的RTTD) + RTTS 新的 RTT 样本 (5-6)n 是个小于 1 的系数,其推荐值是 1/4,即 0.25。n若样本RTT波动很小,则RTTD很小90重传超时时间R
36、TO (RetransmissionTime-Out) nRTO 应略大于RTTS。nRFC 2988 建议使用下式计算 RTO:RTO RTTS + 4 RTTD (5-5)91往返时间 RTT?往返时间的测量相当复杂 发送一个TCP 报文段超时重传TCP 报文段收到 ACK时间12往返时间 RTT?是对哪一个报文段的确认?92Karn 算法 n在计算平均往返时间 RTT 时,只要报文段重传了,就不采用其往返时间样本。n缺陷:n报文段每重传一次,就把 RTO 增大一些:新的 RTO (旧的 RTO) n系数 的典型值是 2 。n当不发生报文段的重传时,才根据报文段的往返时延更新平均往返时延
37、RTT 和超时重传时间 RTO 的数值。n例,nRTO的初始值为0.75s。第一次超时,RTO被设置为1.5s;若1.5s 后又过期了,则设置为3s;n因此,发生超时时,超时时间指数增长; 修正的 Karn 算法 导航n5.1 概述n5.2 用户数据报协议 UDP n5.3 传输控制协议 TCP 概述 n5.4 可靠传输的工作原理n5.5 TCP 报文段的首部格式n5.6 TCP 可靠传输的实现n5.7 TCP 的流量控制955.7 TCP 的流量控制5.7.1 利用滑动窗口实现流量控制n流量控制(flow control)就是让发送方的发送速率不要太快,让接收方来得及接收。n利用滑动窗口机制
38、可以很方便地在 TCP 连接上实现流量控制。 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
39、 字节新数据A 发送了序号 1 至 100,还能发送 300 字节A 发送了序号 401 至 500,不能再发送新数据了A 超时重传旧的数据,但不能发送新的数据允许 A 发送序号 501 至 600 共 100 字节A 发送了序号 501 至 600,不能再发送了不允许 A 再发送(到序号 600 为止的数据都收到了)丢失!流量控制举例A 向 B 发送数据。每个报文段数据为100字节;在连接建立时,B 告诉 A:“我的接收窗口 rwnd = 400(字节)”。初建立连接时,接收窗口大小一般是接收缓存的大小接收窗口 是动态变化的97练习n主机A通过TCP连接向主机B发送一个大文件。A发送的未被确
40、认的字节数不会超过接收缓存的大小 ?(判断题)98持续计时器(persistence timer)。TCP 为每一个连接设有一个持续计时器n只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。n时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。n若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。995.7.2 必须考虑传输效率发送方n何时发送 TCP 报文段?n第一种机制是 :只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。n第二种机制是:由发送方的应用进程指明要求发送报文段,
41、即 TCP 支持的推送(push)操作。n第三种机制是:发送方的一个计时器期限到了n尽量不发送太小的报文段;eg.Telnet nNagle算法 p204接收方n如果接收方只要缓冲区有空余空间,就马上报告,则可能导致糊涂窗口综合症;n解决:接收端通过了一个0窗口后,必须推迟下一个非0窗口的通告,直到接收缓存有足够的空间容纳一个最长的报文段,或接收缓存有一半的空闲空间。导航n5.1 概述n5.2 用户数据报协议 UDP n5.3 传输控制协议 TCP 概述 n5.4 可靠传输的工作原理n5.5 TCP 报文段的首部格式n5.6 TCP 可靠传输的实现n5.7 TCP 的流量控制n5.8 TCP的
42、拥塞控制1025.8.1 拥塞控制的一般原理 n拥塞控制就是防止过多的数据注入到网络中,这样可以使网络的路由器或链路不至于过载。n拥塞控制与流量控制的对比? 拥塞场景1:共享单跳具有无限大缓存的两个连接103n连接的两端通过单跳路由器相连;互相发送数据和接收数据。n链路带宽为Cn具有无限缓存的路由器 n传输层不重传、不执行流量控制、拥塞控制。n发送速率超过C/2时,接收方的吞吐量只能达到C/2n但当发送速率接近C/2时,平均时延就会越来越大;n但当发送速率超过C/2时,路由器中排队的分组数目就会无限增长,平均时延就会变成无穷大;unlimited shared output link buff
43、ersHost Alin : original dataHost Blout吞吐量、时延与发送速率之间的关系网络拥塞的代价:当分组到达速率接近网络容量时,分组将经历巨大的排队时延。拥塞场景2:共享单跳具有有限大缓存的两个连接n两个发送方,两个接收方n一个路由器,有限缓存 n可靠传输:发送端重传丢失的分组。nin= outfinite shared output link buffersHost Alin : original dataHost Bloutlin : 原始数据加重传数据n理想情况理想情况:n主机A能够确定路由器中缓存是否空闲(不现实),仅当缓存空闲时才发送分组。这种情况下不会产生
44、丢包。nin = in = out(不考虑首部开销)n重传情况重传情况1 1:发送端仅在确定分组丢失时才重传;理想重传n如,设置足够长的超时时间。nin outn重传情况重传情况2 2:发送端重传了在队列中已推迟但还未丢失的分组;则原始数据和重传数据都可能到达接收端。 nin 比 out大的更多。R/2R/2linloutb.仅当分组丢失时传送仅当分组丢失时传送R/2R/2linlouta.R/2R/2linloutc.假定每个分组都被重传两次假定每个分组都被重传两次R/4R/3拥塞场景3:4个发送方,具有有限缓存的路由器和多跳路径n可靠传输:超时重传机制。n每台主机具有相同的in值n所有路由
45、器的链路容量都是Rfinite shared output link buffersHost Alin : original dataHost Bloutlin : original data, plus retransmitted dataHost DHost CR1R2R3R4ABloutCD1234n当in很小时, in增大, out?n考虑路由器R1:n当所有连接上的in很大时nB-D流量到达速率可能比C-A流量到达速率快得多;当B-D连接的in越来越大时, C-A连接上成功通过R1的流量会越来越小。n极限情况下,当负载无穷大时,R1的空闲空间会被B-D连接的分组占满,因此C-A连接在
46、R1上的吞吐量趋近于0n拥塞代价:n当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量被浪费了。n因此,路由器转发分组时最好优先考虑那些已经经过一定数量的上游路由器的分组。108拥塞控制所起的作用 提供的负载:单位时间输入网络的数据量;吞吐量:单位时间从网络输出的数据量;理想的拥塞控制实际的拥塞控制0死锁(吞吐量 = 0)无拥塞控制拥塞轻度拥塞1095.8.2 几种拥塞控制方法nTCP使用端到端的拥塞控制。n发送方维持一个叫做拥塞窗口 cwnd (congestion window)的状态变量。n发送方控制拥塞窗口的原则是:n只要网络没有出现拥塞,拥塞窗口就
47、再增大一些,以便把更多的分组发送出去。n网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。 1101. 慢开始和拥塞避免n慢开始算法的原理n在主机刚刚开始发送报文段时可先设置拥塞窗口 cwnd 为一个最大报文段 MSS 的数值。n在每收到一个对新的报文段的确认后,将拥塞窗口增加一个 MSS 的数值。n用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。 111发送方接收方发送 M1 确认 M1发送 M2M3 确认 M2M3 发送 M4M7 确认 M4M7 cwnd = 1 cwnd = 2 cwnd = 4 发送 M8M15cwnd = 8 tt发送
48、方每收到一个对新报文段的确认(重传的不算在内)就使 cwnd 加 1。 轮次 1轮次 2轮次 3为方便表述,cwnd的值以报文段为单位n事实上,TCP每收到一个确认,就把cwnd加1cwnd是逐渐增加的;发送窗口向后滑动,并发送下一个segment;n一个传输轮次所经历的时间约等于一个RTT。n一个传输轮次传输数据的速率约等于 cwnd*MSS/RTTHost Aone segmentRTTHost Btimetwo segmentsfour segments慢开始的“慢”并不是指cwnd增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段,目的是测
49、试一下网络的拥塞情况。113TCP时延建模n假定n发送方能传输的数据量仅受限于拥塞窗口n分布不会丢失和损坏,因此没有重传n忽略各层分组的首部开销n要传输的对象是整数倍的MSS长度n仅考虑最大MSS长度TCP分组的传输时间n慢开始门限值很大,拥塞窗口永远达不到114serverclientserverclienttt第1个窗口 = 1完成传输第2个窗口 = 2第3个窗口 = 4第4个窗口 =8115n窗口数:) 1(log2.22:min2110MSSOMSSOkKk其中MSS是报文段长度,O是文件长度n第k个窗口与下一个窗口之间的停滞时间:RMSSRTTk*) 12(1其中R是传输速率116n
50、发送一个长度为O的文件的时延为:11122KkkRMSSRTTRMSSRORTT117拥塞避免n让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。118慢开始门限状态变量ssthreshn慢开始门限 ssthresh 的用法如下:n当 cwnd ssthresh 时,使用拥塞避免算法。n当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。119丢包事件 n丢包事件发生时,把慢开始门限 ssthresh 设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。n
51、丢包事件:超时事件 和 3次冗余确认:120丢包事件为超时事件时n把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。1212216慢开始和拥塞避免算法的实现举例 图中的窗口单位不使用字节而使用报文段。ssthresh = 16。“乘法减小”24681012141618200048122024拥塞窗口 cwnd新的 ssthresh 值超时事件指数规律增长ssthresh 的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次122丢包事件为3次冗余确认时n执行快恢复算法。123快恢复算法 (1)慢开始门限 ssthresh 设置为出现拥塞时的发送方窗口值的一半(但不能小
52、于2) 。 (2) 拥塞窗口 cwnd 设置为ssthresh 的当前值(3) 执行拥塞避免算法,使拥塞窗口缓慢地线性增大。 采用快恢复算法时,慢开始算法只有在TCP连接建立时和网络出现超时时才使用。Why?12424从连续收到三个重复的确认转入拥塞避免 2468101214161820220048121620传输轮次拥塞窗口 cwnd收到 3 个重复的确认执行快重传算法慢开始“乘法减小”拥塞避免“加法增大”TCP Reno版本TCP Tahoe 版本(已废弃不用)ssthresh 的初始值拥塞避免“加法增大”新的 ssthresh 值慢开始快恢复125AIMDn“加法增大” (Additiv
53、e Increase) :是指执行拥塞避免算法时,经过一个往返时间,把拥塞窗口 cwnd增加一个 MSS 大小。 n“乘法减小“(Multiplicative Decrease) :只要出现丢包事件,就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。n当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。 126发送窗口的上限值发送窗口的上限值 Min rwnd, cwnd (5-8)StateEvent TCP Sender Action CommentarySlow Start (SS) ACK receipt for previou
54、sly unacked data CongWin = CongWin + MSS, If (CongWin Threshold) set state to “Congestion Avoidance”Resulting in a doubling of CongWin every RTTCongestionAvoidance (CA) ACK receipt for previously unacked dataCongWin = CongWin+MSS * (MSS/CongWin) Additive increase, resulting in increase of CongWin by
55、 1 MSS every RTTSS or CALoss event detected by triple duplicate ACKThreshold = CongWin/2, CongWin = Threshold,Set state to “Congestion Avoidance”Fast recovery, implementing multiplicative decrease. CongWin will not drop below 1 MSS.SS or CATimeoutThreshold = CongWin/2, CongWin = 1 MSS,Set state to “
56、Slow Start”Enter slow startSS or CADuplicate ACKIncrement duplicate ACK count for segment being ackedCongWin and Threshold not changed1285.8.3 随机早期检测 RED (Random Early Detection) nRED是一种路由器的分组丢弃策略;n为避免全局同步,在缓存满前便丢弃分组,以便向发送方提供一个拥塞信号。129RED 将路由器的到达队列分成为三个区域 n使路由器的队列维持两个参数,即队列长度最小门限 THmin 和最大门限 THmax。n
57、RED 对每一个到达的数据报都先计算平均队列长度 LAV。n若平均队列长度小于最小门限 THmin,则将新到达的数据报放入队列进行排队。n若平均队列长度超过最大门限 THmax,则将新到达的数据报丢弃。n若平均队列长度在最小门限 THmin 和最大门限THmax 之间,则按照某一概率 p 将新到达的数据报丢弃。lRED的优点:当平均队列长度超过门限 THmin时,就会有少量分组被丢失,这就使得少量的TCP连接会减小其窗口值,使得到达路由器的分组减少。结果,队列平均长度就减小了,从而避免网络拥塞的发生。同时,网络的吞吐量仍然保持较高的值。130拥塞控制所起的作用 提供的负载:单位时间输入网络的数
58、据量;吞吐量:单位时间从网络输出的数据量;理想的拥塞控制实际的拥塞控制0死锁(吞吐量 = 0)无拥塞控制拥塞轻度拥塞131导航n5.1 概述n5.2 用户数据报协议 UDP n5.3 传输控制协议 TCP 概述 n5.4 可靠传输的工作原理n5.5 TCP 报文段的首部格式n5.6 TCP 可靠传输的实现n5.7 TCP 的流量控制n5.8 TCP的拥塞控制n5.9 TCP 的运输连接管理1325.9 TCP 的运输连接管理n运输连接有三个阶段,即:连接建立、数据传送和连接释放。n运输连接的管理就是使运输连接的建立和释放都能正常地进行。133nTCP 连接的建立都是采用客户服务器方式。n主动发
59、起连接建立的应用进程叫做客户(client)。n被动等待连接建立的应用进程叫做服务器(server)。 134用三次握手建立 TCP 连接 SYN = 1, seq = xCLOSEDCLOSED应用程序发出主动打开命令应用程序发出被动打开命令AB客户服务器5.9.1 TCP 的连接建立TCP规定SYN报文段不能携带数据,但要消耗掉一个序号。SYN-SENTLISTENTCP进程接收到应用程序的命令后,首先先创建传输控制块TCB。TCB中保存了每个连接中的一些重要信息:地址、端口号;平均RTT、 RTTd、 RTTo;到发送和接收缓存的指针;等等。135用三次握手建立 TCP 连接 SYN = 1, seq = xCLOSEDCLOSED主动打开被动打开AB客户服务器5.9.1 TCP 的连接建立SYN = 1, ACK = 1, seq = y, ack= x 1 B 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年徽州麻饼项目投资价值分析报告
- 二零二五年度劳动争议诉讼财产保全担保协议
- 2025至2030年在建工程项目管理系统项目投资价值分析报告
- 二零二五年度离婚协议中财产分割与子女教育基金合同3篇
- 2025年维生物磷酸酯镁项目可行性研究报告
- 2025年窄条分切机项目可行性研究报告
- 二零二五年度苏州房屋买卖双方责任合同
- 2025年无纺贴墙布项目可行性研究报告
- 2025至2030年油缸用珩磨管项目投资价值分析报告
- 2025至2030年动物剥制标本项目投资价值分析报告
- T-ACEF 095-2023 挥发性有机物泄漏检测红外成像仪(OGI)技术要求及监测规范
- 2023年全国高考乙卷历史真题试卷及答案
- 数学小故事-二年级
- 骨科手术的术后饮食和营养指导
- 旅游定制师入行培训方案
- 2024年中国南方航空股份有限公司招聘笔试参考题库含答案解析
- 六年级上册数学应用题100题
- 个人代卖协议
- 赏析小说语言(二)
- 【立高食品公司的偿债能力现状及问题分析(论文9000字)】
- 10.《运动技能学习与控制》李强
评论
0/150
提交评论