《计算机网络:自顶向下方法》阅读笔记系列
运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication) 功能。应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑承载这些报文的物理基础设施的细节。
运输层协议是在端系统中而不是在路由器中实现的。
在发送端,运输层将从发送应用程序进程接收到的报文转换为运输层分组,该分组称为运输层报文段(segment)。实现的方法(可能)是将应用报文划分为较小的块,并为每块加上一个运输层首部以生成运输层报文段。然后,运输层将这些报文段传递给网络层,网络层将其封装成网络层分组(即数据报)并向目的地发送。
网络路由器仅作用于该数据报的网络层字段,即它们不检查封装在该数据报的运输层报文段的字段。
在接收端,网络层从数据报中提取运输层报文段,并将该报文段向上交给运输层。运输层则处理接收到的报文段,使该报文段中的数据为接受应用进程使用。
运输层和网络层的关系
网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。
运输层协议只工作在端系统中,在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层),反之亦然,但对有关这些报文在网络核心如何移动并不作任何规定。同时,中间路由器既不处理也不识别运输层加在应用层报文的任何信息。
计算机网络中可以安排多种运输层协议,每种协议为应用程序提供不同的服务模型。
运输协议能够提供的服务常常受制于底层网络层协议的服务模型。例如:如果网络层协议无法为主机之间发送的运输层报文段提供时延或者带宽保证的话,运输层协议也就无法为进程之间发送的应用程序报文提供时延或带宽保证。
但是,即使底层网络协议不能在网络层提供相应的服务,运输层协议也能提供某些服务。例如:即使底层网络协议是不可靠的,也就是说网络层协议会使分组丢失、篡改和冗余,运输协议也能为应用程序提供可靠的数据传输服务。另一个例子是:即使网络层不能保证运输层报文段的机密性,运输协议也能使用加密来确保应用程序报文不被入侵者读取。
因特网运输层概述
因特网为应用层提供了两种可用运输层协议。
- UDP(用户数据报协议),它为调用它的应用程序提供了一种不可靠、无连接的服务。
- TCP(传输控制协议),它为调用它的应用程序提供了一种可靠的、面向连接的服务。
运输层分组称为报文段(segment)。
因特网网络层协议叫IP,即网际协议,它为主机之间提供了逻辑通信。IP的服务模型是尽力而为交付服务(best-effort delivery service),也就是IP尽它“最大的努力”在通信的主机之间交付报文段,但它并不做任何确保,不确保报文段的交付,不保证报文段的按序交付,不保证报文段中数据的完整性。因此IP被称为不可靠服务(unreliable service)。
UDP和TCP最基本的责任是,将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。
将主机间交付扩展到进程间交付被称为运输层的多路复用(transport-layer multiplexing)与多路分解(demultiplexing)。
UDP和TCP还可以通过在其报文段首部中包括差错检查字段而提供完整性检查。进程到进程的数据交付和差错检查是两种最低限度的运输层服务,UDP也仅能提供这两种服务。
与IP一样,UDP也是一种不可靠的服务,不能保证一个进程所发送的数据能够完整无缺的到达目的进程。
另外,TCP为应用程序提供了几种附加服务:
- 提供可靠数据传输(reliable data transfer)。通过使用流量控制、序号、确认和定时器,能够确保正确地、按序地将数据从发送进程交付给接收进程,这样将两个端系统间的不可靠IP服务转换成了一种进程间的可靠数据传输服务。
- 提供拥塞控制(congestion control),这是一种带来通用好处的服务,不太严格的说,TCP拥塞控制防止任何一条TCP连接用过多流量来淹没通信主机之间的链路和交换设备,力求为每个通过一条拥塞网络链路的连接平等地共享网络链路带宽,这可以通过调节TCP连接的发送端发送进网络的流量速率来做到。
UDP流量是不可调节的,使用UDP传输的应用程序可以根据其需要以其愿意的任何速率发送数据。
|