计算机网络 第六章传输层.ppt

上传人:少林足球 文档编号:4132994 上传时间:2019-10-21 格式:PPT 页数:66 大小:2.77MB
返回 下载 相关 举报
计算机网络 第六章传输层.ppt_第1页
第1页 / 共66页
计算机网络 第六章传输层.ppt_第2页
第2页 / 共66页
计算机网络 第六章传输层.ppt_第3页
第3页 / 共66页
计算机网络 第六章传输层.ppt_第4页
第4页 / 共66页
计算机网络 第六章传输层.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《计算机网络 第六章传输层.ppt》由会员分享,可在线阅读,更多相关《计算机网络 第六章传输层.ppt(66页珍藏版)》请在三一文库上搜索。

1、第六章 传输层,传输服务 传输协议 一个简单的传输协议 因特网传输协议,传输层整个协议层次结构的核心,传输层位于面向通信的低三层和面向信息处理的高三层之间,为高层用户提供独立于具体网络的、经济、有效和可靠的端到端数据传输服务。 在OSI参考模型中,底下4层为传输服务的提供者(transport service provider);上面3层是传输服务的用户(transport service user)。,OSI参考模型,6.1 传输服务,传输层提供两种类型的服务: 面向连接的传输服务。 无连接的传输服务。 传输服务的必要性: 可靠的服务:用户不能控制通信子网来满足自己所需的网络服务,只能在网络

2、层上增加一个属于用户自己的传输层来保证所需的传输服务。 统一的接口:由于传输服务是独立于网络服务的,应用程序便能采用一个标准统一的传输服务原语来调用各种不同的网络服务(服务质量、接口定义等五花八门)。,传输层与上下层的逻辑关系,传输协议数据单元(TPDU),TPDU(transport protocol data unit)表示对等传输层间传递的数据单元。 用户将报文封装在TPDU中交给网络层进行处理。,服务质量QoS(Quality of Service),传输层的主要功能可看成是增强网络层提供的服务质量。服务质量的好坏是由一组服务质量参数来衡量的,主要有: 连接建立延迟(Connectio

3、n establishment delay):建立一个连接所需的时间。 连接建立失败的概率(Connection establishment failure probability):在指定的最大连接建立延迟内未能建立连接的可能性。 吞吐率(Throughput):一个连接上每秒钟传输的用户数据的字节数。 传输延迟(Transit delay):用户报文从源端发送到目的端所需的时间。,残余误码率(Residual error ratio):丢失或错乱报文的百分比。 保护(Protection):要求传输层提供保护,以防止未经授权的第三方窃听或篡改用户报文。 优先级(Priority):能指示被

4、服务的连接的优先级别。 恢复(Resilience):传输层释放一个连接的可能性。 以上服务质量参数一般是传输用户和传输层在建立连接时通过选项协商(option negotiation)而设定的。,传输服务原语,传输服务原语是传输用户用来访问传输服务的接口。每种传输服务均有各自的访问原语。,伯克利套接字(Berkeley Socket),下表为面向连接的TCP中的套接字原语:,面向连接的套接字通信,连接的建立: 服务器端: 执行SOCKET,创建一个新的套接字通信端点并为其分配表空间。 执行BIND为套接字分配一个本地地址和名字。 执行LISTEN表示服务器进程愿意接受连接请求,并指定连接等待

5、队列的最大长度。 执行ACCEPT,阻塞服务器进程,等待客户的连接请求。一旦客户的连接请求到达,传输实体即为其创建一个新的具有相同属性的套接字,并产生一个进程或线程在新套接字上处理该连接。然后服务器进程回到原来的套接字上继续监听连接请求。,客户端: 执行SOCKET,创建一个新的套接字通信端点。不需BIND。 执行CONNECT,阻塞连接请求者并主动开始建立连接的进程。当服务器的应答到来后,客户进程被唤醒,连接即告建立。 连接建立后,双方都可使用SEND和RECEIVE在已有的连接上发送和接收数据。 连接的释放是对称的,当双方都执行了CLOSE后,连接即被释放。,面向连接的 套接字通信 示意图

6、,6.2 传输协议,传输层协议与网络层提供的服务质量有很大关系。网络层提供的服务越完善,传输层协议就越简单,反之,传输层协议越复杂。 子网根据其提供的服务质量的差异可以分为三类: A类:可提供完善的数据传输服务,分组的丢失、重复和错序等情况极少出现,可忽略不计。有些局域网可提供接近A类的服务。 B类:单独的分组丢失很少发生,但网络层会因为内部拥塞或软、硬件故障等原因而时常发出N-RESET原语。传输层协议要纠正由于重置而出现的混乱,建立新的网络连接,重新同步,恢复正常传输,使传输服务用户对网络层出现的重置一无所知。大多数广域网属于此类。 C类:这类子网提供的传输服务最不可靠。会出现分组丢失和重

7、复,还可能出现重置。提供数据报服务的广域网、无线分组交换网、以及互联网均属此类。,传输层协议与网络服务质量的关系,根据网络层提供的服务质量,ISO/OSI把传输层协议分为5类:,传输层协议与数据链路层协议的比较,传输层协议和数据链路层协议非常相似,都必须进行顺序控制、差错控制、流量控制等工作。 但由于运行的环境不同,两者的具体操作是大不相同。传输层的端到端之间经过一个复杂的、具有存储能力的通信子网,使得其在寻址、连接的管理、控制协议等方面都非常复杂。,寻址,用传输服务访问点TSAP(transport service access point)和网络服务访问点NSAP(network serv

8、ice access point)来描述传输地址和网络地址。 寻址的两个问题: 客户进程如何获知服务器进程的传输地址TSAP? 客户传输实体如何从目的传输地址获得目的网络地址NSAP?,一、服务器传输地址TSAP的定位,有两个途径: 众所周知的地址:对于一些经常使用的服务,可为其指定固定的传输地址,印在手册或指南上广为传播。 对临时不常用的地址,有两种方法: 初始连接协议(initial connection protocol) 使用称为名字服务器(name server)或目录服务器(directory server)的特殊服务器进程。,初始连接协议,如UNIX中的inetd。 服务器(机器

9、)上运行一个具有众所周知传输地址的特殊的进程服务器(process server),作为各种服务器(进程)的代理。,名字服务器或目录服务器,客户进程从众所周知的名字服务器中通过对服务的名字(已注册到名字服务器)进行查找,即可获得相应的服务器进程的传输地址。,二、目的网络地址NSAP的定位,传输地址TSAP为层次型地址(hierachical address):NSAP可直接来自于TSAP。如TCP/IP的传输地址由网络地址和端口号组成。 传输地址TSAP为平面型地址空间(flat address space):需要名字服务器将TSAP转换成NSAP。 在某些场合下(如LAN中),可采用广播方式

10、询问目的机器的NSAP。,建立连接(connection establishment),由于通信子网的不可靠性和存储能力,造成不可预知的延迟,使得可靠地建立传输连接变得十分困难。一些解决的方法有: 给每个连接分配一个唯一的连接标识,每个传输实体将用过的连接标识记在表中,以区别新旧连接。 限制分组的寿命:为每个分组设置一个寿命域(计数器),每隔一定的时间寿命减1,减至0时就丢弃分组。可以设定一个时间T(根据不同的协议,为分组最大寿命的若干倍),当一个分组发送后,经时间T,所有和该分组有关的分组就全不存在了,这大大简化了问题。 为每台主机设置一个一直运转的计时时钟(二进制计数器,位数足够大),每隔

11、一定时间加1,当建立连接时,用时钟的低k位作为本连接的初始序号。此后的发送序号按序递增,不再参考计数器值,但发送序号不能进入禁止区。,时间和初始序号之间的线性关系,基于时钟的方法解决了数据TPDU的延迟重发问题,其前提条件是双方已建立了传输连接,知道对方的初始序号。但由于控制TPDU也会延迟,造成建立传输连接的复杂。可采用三次握手(three-way handshake)的方法加以解决。,释放传输连接有两种方式: 非对称释放(asymmetric release):任何一方发出断连请求即可终止连接。容易造成数据丢失。 对称释放(symmetric release ):一条连接的两个方向被看成是

12、两个单独的连接。一方发出断连请求表明它的数据已发送完毕,但仍可以在连接上接收对方的数据。只有双方都发出了断连请求,连接才被终止。,释放连接(connection release),三次握手连接释放法,为了可靠地终止连接,一方在发出断连请求后,必须收到对方的断连请求(响应)才能终止连接。实际上做不到。 实际中采用的三次握手连接释放法不是绝对可靠的,但已令人足以满意了。 考虑后面图中的第4种情况,若主机2一次都没有收到主机1的断连请求,就不会释放连接,形成一个半开的连接(half-open connection),导致失败。 为了清除半开的连接,协议规定任何一方在一给定的时间内没有收到连接上的任何

13、TPDU,就自动释放连接。 每个传输实体都设置一个定时器,只要发送TPDU就复位定时器,一旦定时器超时就自动发送一个哑(dumb)TPDU,以防止连接长时间没有数据传输而被对方终止。 若哑TPDU丢失,则对方释放连接,稍候本方也释放连接。,三次握手连接释放的四种情况,流量控制和缓冲策略,传输层虽然和数据链路层一样都采用了滑动窗口协议等机制来实现流量控制,但由于传输层上(主机)的连接数多且不定,而中间通信子网的传输能力有限,不可能为每条连接分配固定数量的缓冲区。 由于发送流量涉及到接收端的接收能力和通信子网的传输能力,因此必须从这两个方面来讨论传输层上的流量控制。 发送流量应该取接收端和通信子网

14、所能允许的流量值中的较小值。,从接收能力出发,传输层连接须对收发双方动态地分配缓冲区数量:发送端应向接收端申请所需的缓冲空间(接收端一侧),接收端也应能根据情况决定为发送端预留多少空间(动态可变),通过确认及时告知发送端,以便调整发送流量。 死锁问题: 由于包含缓冲区分配数的控制TPDU(确认)可能会丢失,从而造成死锁。 解决方法:每台主机应定期向每个连接发送控制TPDU。 随着内存价格大幅度下降,可以为主机配置大容量的内存,基本上可解决收发缓冲匮乏的问题。,动态缓冲的分配管理,从子网能力出发,发送方采用可动态调整窗口大小的滑动窗口协议来匹配网络的承载能力。 发送方定期地监视网络的传输能力c(

15、网络每秒钟可传输的TPDU数量)和循环时间r(从发出TPDU到收到其确认为止所需的时间),然后计算出发送窗口的大小(cr)。 c可以简单地通过计算在某段时间间隔内确认的TPDU数除以时间间隔来决定。测量时应尽快发送数据。 r可以从发送端精确获得,一般取某段时间内的平均值。,多路复用(multiplexing),向上多路复用(upward multiplexing): 将去往相同目的节点的不同传输连接复用到同一条网络连接上,使它们共同承担一条网络连接的通信费用(按时)。 为了实现向上多路复用,每个主机应能将各传输连接按目的主机进行分组,并将它们映射到最少数量的网络连接上。 每个网络连接上的传输连

16、接数应适中。 向下多路复用(downward multiplexing): 为一条传输连接建立多条网络连接,传输实体按一定顺序在各个网络连接上并行发送数据,从而提高了数据的整体传输速率。 物理线路须有足够大的容量。,两种多路复用示意图,崩溃恢复,一个主机通过执行一个操作和返回一个确认作为收到一个TPDU的响应。但当一台主机从一次崩溃中恢复时,他如何知道在此之前已执行了多少操作和发送了多少返回的确认? 从第N层崩溃中恢复只能由第N+1层来完成,并且只有在第N+1层保留有足够的状态信息的情况下才能完成。,6.3 一个简单的传输协议,一个简单易懂而又贴近实际的传输层协议实例 面向连接的服务原语,传输

17、实体,网络层的分组,连接的状态,每个连接总是处于下面7种状态之一:,有限状态机,状态图示,6.4 因特网传输协议,有两个主要的协议: 面向连接的TCP(Transmission Control Protocol)协议 无连接的UDP(User Data Protocol)协议,TCP协议,TCP是专门设计用于在不可靠的Internet上提供可靠的、端到端的字节流(非报文流)通信的协议。 发送方TCP实体将应用程序的输出流分为不超过64k字节(实际通常为1500字节)的数据片段(piece),并将每个数据片段封装在一个IP分组中发送出去。 接收方TCP实体根据字节序号(32位)将接收到的各个数据

18、片段组装成连续的字节流交给应用程序。 TCP服务是通过收发双方分别创建的称为套接字(socket,包含IP 地址和端口号)之间的连接来获得的。 所有的TCP连接都是全双工的点到点的连接,不支持组播和广播。,TCP的基本数据单元,TCP实体交换数据的基本单元(TPDU)称作数据段(segment)。每个数据段包含一个固定的20字节的头(还可加一个可选部分)和若干数据字节,其总长度可在建立连接时通过互相声明自己所能接收的最大段长MSS(maximum segment size)来选定或双方使用一个缺省的MSS(536字节),但MSS的选取应使得每个段封装成IP分组后,其长度不超过IP分组的载荷能力

19、(65535字节)及相应网络的最大传输单元MTU(maximum transfer unit)。 一个段超过网络的MTU限制时会被分段(fragmentation),每个小分段(分组)都有TCP头(20字节)和IP头(20字节),增加了系统的总开销。,TCP数据段的头,源端口和目的端口用来标识本地和对方的应用进程(端连接点)。端口号加上其主机的IP地址构成一个48比特的TSAP。 sequence number指示TCP段中第一个字节的序号。建立一个新的TCP连接时(SYN标志为1),该域是主机为该连接选择的初始序号,连接建立后发送的第一个字节将具有的序号为sequence number+1。

20、由于全双工,每个连接的端点都必须单独维持一个序号。 acknowledgement number表示发送该TCP段的主机准备从对方接收的下一个字节序号,即该序号之前的字节已全部正确收到。 header length指示TCP头的长度(以4字节为单位),最大值为15(60字节)。 URG标志指示urgent pointer域是否有效,urgent pointer用来指示紧急数据距当前字节序号的偏移字节数。当接收方收到一个URG为1的段后,立即中断当前正在执行的程序,根据urgent pointer找到段中的紧急数据,优先进行处理。,ACK标志为1时表示acknowledgement number

21、中是一个有效的应答序号。 PSH标志为1时表示接收方收到数据后应尽快交给应用程序,而不是等接收缓冲区满后再递交。 RST标志为1时表示复位一个连接。通常在主机崩溃后复位连接,也可表示拒绝建立一个连接或拒绝接收一个非法的段。 SYN标志为1时表示建立一个连接。 FIN标志为1时表示数据发送结束,但仍可继续接收另一个方向的数据。 windows size表示发送方可以发送的字节数,为0时表示接收缓冲区满。用于TCP的流量控制。 checksum对TCP头、TCP数据域及TCP伪头(pseudo header,12字节长,其中的内容来自于IP分组的头)进行校验。 选项用于提供一种增加额外设置的方法,

22、在常规的TCP头中并不包括。重要的选择有: MSS选项(设定能接受的最大TCP载荷能力;窗口比例选项(可扩大窗口尺寸);选择重发选项等。,TCP数据段的头结构,TCP数据段的伪头结构,TCP采用三次握手的方法建立连接,服务器方执行LISTEN和ACCEPT原语,被动监听; 客户方执行connect原语,产生一个SYN为1和ACK为0的TCP段,表示连接请求; 服务器方的传输实体接收到这个TCP段后,首先检查是否有服务进程在所请求的端口上监听,若没有,回答RST置位的TCP段; 若有服务进程在所请求的端口上监听,该服务进程可以决定是否接受该请求。在接受后,发出一个SYN置1和ACK置1的TCP段

23、表示连接确认,并请求与对方的连接; 发起方收到确认后,发出一个SYN置0和ACK置1的TCP段表示给对方的连接确认; 若两个主机同时试图建立彼此间的连接,则只能建立一条连接。 初始连接序号的选择采用基于时钟的方案,每隔4微妙初始连接序号加1。 分组的最长寿命为120秒。,TCP采用对称释放法释放连接,TCP的全双工连接可看成一个双单工的连接,每个单工连接都独立地释放。 通信双方必须都向对方发送FIN=1的TCP段并得到对方的应答,连接才能被释放,有四个阶段。 可以将第一个ACK数据段和第二 个FIN数据段合并,从而变为三次 握手。 为防止半连接,必须使用定时器计 时,对FIN数据段的应答在两个

24、最 大分组生命期内未到达,就释放连 接。对方也会超时释放。,建立和释放连接过程中的11种状态,TCP连接 管理有限 状态机,TCP传输策略,TCP的窗口管理机制 基于确认和可变窗口大小; 窗口大小为0时,正常情况下,发送方不能再发TCP段,但有两个例外 紧急数据可以发送; 为防止死锁,发送方可以发送1字节的TCP段,以便让接收方重新声明确认号和窗口大小。 如何改进传输层的性能? 策略1:发送方缓存应用程序的数据,等到形成一个比较大的段再发出; 策略2:在没有可能进行“捎带”的情况下,接收方延迟发送确认段;,TCP传输策略,策略3:使用Nagle算法:当应用程序每次向传输实体发出一个字节时,传输

25、实体发出第一个字节并缓存所有其后的字节直至收到对第一个字节的确认;然后将已缓存的所有字节组段发出并对再收到的字节缓存,直至收到下一个确认; 策略4:使用Clark算法解决傻窗口症状(silly window syndrome) 傻窗口症状:当应用程序一次从传输层实体读出一个字节时,传输层实体会产生一个一字节的窗口更新段,使得发送方只能发送一个字节; 解决办法:限制收方只有在具备一半的空缓存或最大段长的空缓存时,才产生一个窗口更新段。,TCP的拥塞控制,由于当前网络传输介质的可靠性越来越高,所以TCP实体认为超时就是网络拥塞造成的,可根据超时来判断是否发生拥塞。 出现拥塞的两种情况 快网络小缓存

26、接收者 慢网络大缓存接收者 导致网络拥塞的两个潜在因素是:网络能力和接收能力。 TCP处理第一种拥塞的措施 在连接建立时声明最大可接受段长度; 利用可变滑动窗口协议防止出现拥塞; TCP处理第二种拥塞的措施 发送方维护两个窗口:可变发送窗口和拥塞窗口,按两个窗口的最小值发送; 拥塞窗口依照慢启动(slow start)算法和拥塞避免(congestion avoidance)算法变化。,拥塞控制算法,慢启动(slow start)算法:建立连接时,拥塞窗口被初始化成该连接支持的最大段长度,发送一个最大长度的段,若没有超时,则对拥塞窗口加倍扩大,发送两个最大长度的段,重复此过程,直至最终达到设定

27、的临界值或发生超时。 Internet的拥塞控制算法:初始设置临界值(threshold)为64kB,若发生超时,将临界值设为当前拥塞窗口的1/2,并将拥塞窗口恢复为最大段长度,执行慢启动算法,直至拥塞窗口达到临界值,此后要求拥塞窗口按线性增加(每次只增加一个最大段长度),直至最终达到接收窗口大小或发生超时;若超时再将临界值设为当前拥塞窗口的1/2,重复上述过程。,Internet拥塞控制算法的实例,TCP的重传机制,TCP采用正向应答进行确认,当收到出错的TCP段后,只能将其丢弃而不作应答,发送方必须采用超时重传的机制来重发久未应答的段。由于网络的复杂性使得选择合适的超时时间非常困难。,TC

28、P的超时间隔,TCP使用一种动态算法随时调整超时间隔。 每个连接都维持一个变量RTT(当前往返时间的最佳估算值)。发送方的计时器(发送时启动)在达到超时间隔时触发重发机制;若在超时之前收到确认,则测量出往返时间M: 修正 RTT=RTT+(1- )M 其中为一个平滑因子(一般为7/8) 修正实际往返时间M同估算值RTT的偏差|RTT-M| D= D+(1- )|RTT-M| 这里的可能不同前面的 确定当前的超时间隔Timeout=RTT+4D 补充算法:对已重发的数据段无需修正RTT,而在传输失败时将超时时间加倍。,效果: 在网络拥塞或收发双方距离较远时能够自动延长超时间隔,减少不必要的重发;

29、 网络较为空闲或双方距离较近时又能迅速减小超时间隔,及时重发出错的段。,UDP协议,UDP向应用程序提供一种发送封装的IP数据报的方法(一个UDP数据报封装在一个IP分组中),并且无需建立连接。 UDP实现的是不可靠、无连接的数据报服务,通常用于不要求可靠传输的场合。也省去了客户-服务器模式中建立拆除连接的额外开销。 UDP基本上是在IP的基础上增加一个短的报头而已。在UDP数据段(segment)中: 端口号(port)用来标识收发进程; UDP长度指明包括8字节的头及数据域(可为0)在内的数据段长度; UDP校验和对UDP头、UDP的伪头(12字节长,其中的内容来自于IP分组的头和UDP的头)及UDP数据域三部分进行校验,目的是为了进一步证实数据被送到了正确的目的。这是一个可选项,在大多数的实现中都使用该项,若接收方判断收到的数据段有错,则只是简单地将数据段丢弃,并不向源报告。若不选,则记为0。,UDP的头结构和伪头结构,UDP头,UDP伪头,第六章习题,28, 29, 30, 32, 33, 36,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1