• 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能
  • 从应用程序的角度看,通过逻辑通信,运行不同进程的主机好像直接相连一样;实际上,这些主机也许位于地球的两侧,通过很多路由器及多种不同类型的链路相连 。 应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑承载这些报文的物理基础设施的细节
  • 运输层协议是在端系统中而不是在路由器中实现的。在发送端,运输层将从发送应用程序进程接收到的报文转换成运输层分组,用因特网术语来讲该分组称为运输层报文段 。 实现的方法(可能)是将应用报文划分为较小的块,并为每块加上一个运输层首部以生成运输层报文段。然后,在发送端系统中,运输层将这些报文段传递给网络层,网路层将其封装成网络层分组(即数据报)并向目的地发送。
  • 网络路由器仅作用于该数据报的网络层字段;即它们不检查封装在该数据报的运输层报文段的字段。在接收端,网络层从数据报中提取运输层报文段,并将该报文段向上交给运输层。运输层则处理接收到的报文段,使该报文段中的数据为接收应用进程使用。

image.png

一、运输层和网络层的关系

  • 网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。这种差别虽然细微但很重要
  • 运输层协议只工作在端系统中,在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层),反过来也是一样,但对有关这些报文在网络核心如何移动并不作任何规定。事实上,如上图所示,中间路由器既不处理也不识别运输层加在应用层报文的任何信息
  • 运输层能够提供的服务常常受制于底层网络协议的服务模型。如果网络层协议无法为主机之间发送的运输层报文段提供时延或带宽保证的话,运输层协议也就无法为进程之间发送的应用程序报文提供时延或带宽保证。
  • 然而,即使底层网络协议不能在网络层提供相应的服务,运输层协议也能提供某些服务。例如,如我们将在本章所见,即使底层网络协议是不可靠的,也就是说网络层协议会使分组丢失、篡改和冗余,运输层协议也能为应用程序提供可靠的数据传输服务。另一个例子是,即使网络层不能保证运输层报文段的机密性,运输协议也能使用加密来确保应用程序报文不被入侵者读取

    二、因特网运输层概述

  • UDP(用户数据报协议):它为调用它的应用程序提供了一种不可靠、无连接的服务

  • TCP(传输控制协议):它为调用它的应用程序提供了一种可靠的、面向连接的服务
  • 当设计一个网络应用程序时,该应用程序的开发人员必须指定使用这两种运输协议中的哪一种
  • IP(网际协议):
    • IP为主机之间提供了逻辑通信
    • IP的服务模型是尽力而为交付服务(best-effort delivery service)。这意味着IP尽它“最大的努力”在通信的主机之间交付报文段,但它不做任何确保。特别是,它不确保报文段的交付,不保证报文段的按序交付,不保证报文段中数据的完整性。由于这些原因,IP被称为不可靠服务(unrealiable service)
  • UDP和TCP所提供的服务模型:
    • UDP和TCP最基本的责任是,将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。将主机间交付扩展到进程间交付被称为运输层的多路复用(transport-layer multiplexing)与多路分解(demultiplexing)
    • UDP和TCP还可以通过在其报文段首部中包括差错检查字段而提供完整性检查。
    • 进程到进程数据交付差错检查是两种最低限度的运输层服务,也是UDP所能提供的仅有的两种服务。特别是,与IP一样,UDP也是一种不可靠的服务,即不能保证一个进程所发送的数据能够完整无缺地(或全部!)到达目的进程
  • TCP为应用程序提供 了几种附加服务:
    • 提供可靠数据传输。通过使用流量控制、序号、确认和定时器,TCP能正确地、按序地将数据从发送进程交付给接收进程。
    • 提供拥塞控制。不太严格地说,TCP拥塞控制防止任何一条TCP连接用过多流量来淹没通信主机之间地链路和交换设备。TCP力求为每个通过一条拥塞网络链路的连接平等地共享网络链路带宽。 这可以通过调节 TCP 连接的发送端发送进网络的流量速率来做到。 在另一方面,UDP 流量是不可调节的。使用 UDP 传输的应用程序可以根据其需要以其愿意的任何速率发送数据。