1.13k likes | 1.38k Views
第 5 章. 传输层. 5.1 传输层提供的服务. 面向连接的服务 无连接的服务. 5.1.1 传输层的功能. 1. 传输层在协议层次结构中的位置 传输层是属于网络中提供通信服务的最高层 传输层可以起到隔离通信子网的技术差异性,如网络拓扑、通信协议的差异,改善传输可靠性的作用. 5.1.1 传输层的功能. 2. 传输层协议数据单元 传输层之间传输的报文叫做传输层协议数据单元( transport-layer protocol data unit, TPDU )。 典型的 TPDU 结构,以及它与 IP 分组、帧的结构关系如图 5.1 所示。.
E N D
第5章 传输层
5.1 传输层提供的服务 • 面向连接的服务 • 无连接的服务
5.1.1 传输层的功能 1. 传输层在协议层次结构中的位置 • 传输层是属于网络中提供通信服务的最高层 • 传输层可以起到隔离通信子网的技术差异性,如网络拓扑、通信协议的差异,改善传输可靠性的作用
5.1.1 传输层的功能 2. 传输层协议数据单元 • 传输层之间传输的报文叫做传输层协议数据单元(transport-layer protocol data unit, TPDU)。 • 典型的TPDU结构,以及它与IP分组、帧的结构关系如图5.1所示。
5.1.1 传输层的功能 图5.1 TPDU结构以及与IP分组、帧结构的关系
5.1.1 传输层的功能 • TPDU的有效载荷是应用层的数据,传输层在TPDU有效载荷之前上TPDU头就形成了TPDU传输层协议数据单元;TPDU传送到网络层之后,加上IP分组头后形成了IP分组;IP分组传送到数据链路层之后,加上帧头、帧尾,就形成了帧。帧传输到目的主机后,经过数据链路层与网络层处理之后,传输层接收到传输层协议数据单元TPDU之后,读取TPDU头,按照传输层协议的要求,完成相应的动作。
5.1.1 传输层的功能 3. 传输层协议运行环境的特点 • 传输层连接建立过程比较复杂; • 传输层之间数据包传输过程比较复杂。
5.1.1 传输层的功能 4. 服务质量 传输层实体应该根据用户的要求提供不同的服务质量(QoS),以下的服务质量参数是在建立连接的过程中商定的。 • 优先级 • 连接建立时延 • 连接失败概率 • 残留误码率
5.1.1 传输层的功能 4. 服务质量 • 平均(或最大)传送时延 • 平均(或最大)吞吐率 • 连接释放时延 • 连接释放失败概率 • 安全保护参数
5.1.1 传输层的功能 5. 传输服务原语 表5.1 一个简单传输服务的原语
5.1.1 传输层的功能 5. 传输服务原语 表5.2 用于TCP的套接字原语
5.1.2 传输层寻址与端口 1. 传输层寻址 • 当一个应用进程希望与一个远程应用进程建立一个连接时,它必须指明是与哪个应用进程相连(无连接的传输也有相同的问题:每个报文应该发给谁)。一般采用的方法是定义进程可以侦听连接请求的传输地址。在因特网中,这些端点是(IP地址,本地端口)对。
5.1.2 传输层寻址与端口 2. 端口的概念 • UDP和TCP都使用了与应用层接口处的端口(port)与上层的应用进程进行通信。 • 端口是个非常重要的概念,因为应用层的各种进程是是通过相应的端口与传输实体进行交互,因此在传输协议数据单元(即TCP报文段或UDP用户数据报)的首部中都要写入源端口号和目的端口号。
5.1.2 传输层寻址与端口 2. 端口的概念 • 当传输层收到IP层交上来的数据,就要根据其目的端口号来决定应当通过哪一个端口上交给目的应用进程。图5.2中在应用层和传输层之间的小方框就代表端口。其实在其他各层之间的信息交互都必须通过类似的端口,但这里没有将它们画出。通过相应的端口与传输实体进行交互。
5.1.2 传输层寻址与端口 • 一些常用的应用层程序固定使用的熟知端口如下表所示:
5.1.2 传输层寻址与端口 2. 端口的概念 • 一个TCP连接由它的两个端点来标志,而每一个端点又是由IP地址和端口号决定的。因此,TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为套接字(socket)。套接字的概念并不复杂,但非常重要。图5.3给出了套接字和端口、IP地址的关系。例如,若IP地址=131.6.23.13,端口号=1500,则: 套接字=(131.6.23.13,1500)
5.1.3 无连接服务与面向连接服务 1. 无连接与面向连接服务 • 下层可以向上提供两种不同类型的服务:面向连接的服务,或者无连接的服务。在这一小节中,将介绍这两种类型的服务,并且讲述两者的区别。
5.1.3 无连接服务与面向连接服务 1. 无连接与面向连接服务 • 面向连接的服务(connection-oriented service)是基于电话系统模型。简单来说,为了使用面向连接的网络服务,用户首先要建立一个连接,然后使用该连接,最后释放连接。有关这种连接最本质的方面在于,它就好像一个管道:发送方把对象(数据位)压入管道的一端,接受方在另一端将它们取出来。在绝大多数情况下,数据位保持原来的顺序,所以,数据位都会按照发送的顺序到达。
5.1.3 无连接服务与面向连接服务 1. 无连接与面向连接服务 • 无连接的服务(connectionless service)是基于邮政系统模型的。每一条报文(信件)都携带了完整的目标地址,所以,每条报文都可以被系统独立地路由。一般来说,当两条报文被发送给同一个目标的时候,首先被发送的报文将会先到达。然而,因为先发送的报文被延迟从而导致后发送的消息先到达的情况也是有可能发生的。
表5.3 服务类型及其例子 面向连接 无连接
5.1.3 无连接服务与面向连接服务 2. 传输连接的建立与释放 • (1) 传输连接的建立 • (2) 连接释放
5.1.3 无连接服务与面向连接服务 (1) 传输连接的建立 • 建立连接是一个复杂的问题,因为有很多问题要考虑。初看起来,一个传输实体似乎只需要向目的机器发送一个连接请求TPDU,并等待对方的连接接受应答就足够了。但是实际上网络可能丢失、存储和重复分组,这将产生很多问题。如果能够确保每个分组在子网中的存留时间都不超过某个已知时间值,则在一定程度上问题就变得容易处理了。
5.1.3 无连接服务与面向连接服务 (1) 传输连接的建立 • 采用下面一种技术,可以将分组的生命周期限制在一个已知的最大值之内: 1) 受限制的子网设计; 2) 在每个分组内设置一个跳数计数器字段; 3) 为每个分组加上时间戳字段。
5.1.3 无连接服务与面向连接服务 (1) 传输连接的建立 在实际中,我们需要保证一个过时的分组无效,而且还要保证所有过时的对分组的确认也应当无效。因此引入T,它表示实际的分组最长生命期的某个较小的倍数值。该倍数与所用协议有关,只是可能使T值更大些。如果一个分组发出后等待了时长T,可以确定有关该分组的一切无效,这样该分组及其确认就不再会突然出现而使问题复杂化了。
5.1.3 无连接服务与面向连接服务 (2) 连接释放 • 连接的释放要比建立容易些,然而,仍然有很多细节需要考虑。终止连接有两种方式:非对称释放和对称释放。非对称释放类似于电话系统的工作方式:只要通信的任何一方挂机,连接就中断。对称释放将连接按两个独立的单向连接来处理,要求每一方分别释放连接。
5.1.3 无连接服务与面向连接服务 (2) 连接释放 • 非对称释放很突然,可能会丢失数据。如图5.4所示是非对称释放连接造成数据丢失的情形。比如,当连接建立后,主机A发送了一个数据TPDU 1并正确到达主机B,接着主机A又发送了另一个数据TPDU 2。但是,主机B在收到TPDU 2之前先发出了释放连接请求TPDU,结果是连接被释放,从而造成数据丢失。
5.1.3 无连接服务与面向连接服务 (2) 连接释放 • 类似于前面讲述的连接建立采用的方法,连接释放也可以采用3次握手的方法,如图5.5所示,是正常释放的情形。 • 如果最后的ACK TPDU丢失,如图5.6所示,那么就需要用定时器来补救了。当定时器超时,无论如何都必须释放连接。
图5.5 三次握手的正常情况 图5.6 最后的ACK TPDU丢失
5.1.3 无连接服务与面向连接服务 (2) 连接释放 • 现在考察第二个DR(主机B发出的响应)丢失的情形。这时,首先提出释放连接的用户(主机A)将不能收到所预期的响应,待到定时器超时,它再次开始发送DR TPDU要求释放连接。如图5.7所示,可以看出这种情况下是如何工作的,假设这一次没有任何TPDU丢失,并且所有TPDU都正确、及时地到达目的地。
5.1.3 无连接服务与面向连接服务 (2) 连接释放 • 最后一种情况如图5.8所示。这样,经过N次尝试后,发送方(提出释放连接的一方即主机A)只好放弃努力并断开连接。同时接收方(被动释放连接的一方即主机B)因为定时器超时也释放连接。
图5.7 应答丢失 图5.8 应答丢失以及后续的DR丢失
5.2 用户数据报协议(UDP) • 因特网在传输层主要有两种协议: • 一种是面向连接的协议TCP • 一种是无连接的协议UDP
5.2.1 UDP数据报 • UDP在IP的基础上增加了一个短的报头。UDP通过使用端口号来完成进程到进程的通信。UDP提供的是一种不可靠的交付,它没有流量控制机制,在收到分组时也没有确认。当然它还是提供了某种程度的差错控制。如果UDP检测出在收到的分组中有差错,它就悄悄地丢弃这个分组。
5.2.1 UDP数据报 1. UDP协议主要的用途 • UDP适用于这样的进程通信,它需要简单的请求——响应,而较少考虑流量控制和差错控制。对于需要传送成块数据的进程,如FTP,则通常不使用UDP。 • UDP适用于具有内部流量控制和差错控制机制的进程。例如,简单文件传送协议(TFTP)的进程就包括流量控制和差错控制。它能够很容易地使用UDP。
5.2.1 UDP数据报 1. UDP协议主要的用途 • 对多播和广播来说,UDP是个合适的传输协议,多播和广播能力已经嵌入在UDP软件中,但没有嵌入在TCP软件中。 • UDP可用于管理进程,如SNMP。 • UDP可用于某些路由选择更新协议,如路由信息协议(RIP)。
5.2.1 UDP数据报 2. UDP的优点 • 发送数据之前不需要建立连接,发送数据完后不需要释放连接,因此减少了开销和发送数据之前的时延。 • UDP不使用拥塞控制,不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。
5.2.1 UDP数据报 2. UDP的优点 • UDP用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。 • 由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
5.2.1 UDP数据报 3. UDP的报文格式 • 一个UDP数据段包含一个8字节的报头和数据部分。报头的格式如图5.9所示。由4个字段组成。每个字段两个字节。各字段意义如下:
5.2.1 UDP数据报 4. UDP的操作 • 无连接服务 • 流量控制和差错控制 • 排队 在UDP中,队列是与端口相关联在一起的。 如图5.10所示,是UDP中的队列示意图
5.2.2 UDP校验 • UDP校验和字段是可选项,是用来检验整个用户数据报在传输中是否出现差错。UDP用户数据报报头中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪报头。这是专门为了计算检验和,而临时得到的一个过渡性的UDP用户数据报。伪报头数据并不参加向上层模块或下层模块的传递,仅仅是为了计算检验和。
5.3 TCP协议 • TCP是目前流行的使用最为广泛的传输层协议。虽然TCP和IP都不是OSI标准,但TCP和IP都已被公认为当前的工业标准,或“事实上的标准”。
5.3.1 TCP段 1. TCP报文段报头格式 • TCP对所有的报文采用了一种简单的格式,包括携带数据的报文,确认以及三次握手中用于创建和终止一个连接的报文。TCP使用段来指明一个报文,图5.11说明了TCP报文段报头格式。
5.3.1 TCP段 1. TCP报文段报头格式 TCP报文段报头的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N为整数)。因此TCP报头的最小长度是20字节。
5.3.1 TCP段 • 报头各字段的意义如下: (1) 源端口和目的端口:跟UDP相似,分别是源端口号和目的端口号,各占两个字节。端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。TCP同样使用了一些熟知端口。如表5.5所示。