运输层是计算机网络体系结构中的关键一层,位于网络层之上、应用层之下。本章将重点探讨运输层的核心服务,以及实现这些服务的关键机制——多路复用与多路分解。
3.1 运输层服务概述
运输层的主要目标是向运行在不同主机上的应用进程提供高效的、可靠的和成本有效的数据传输服务。它在网络层提供的“主机到主机”通信服务基础上,实现了“进程到进程”的逻辑通信。网络层负责将数据包从源主机路由到目的主机,而运输层则负责将数据正确交付给主机上指定的应用进程。
运输层向应用层提供的服务主要包括:
- 进程间通信:通过端口号标识不同应用进程,实现准确的数据交付。
- 可靠性保证:对于某些协议(如TCP),提供差错检测、重传、流量控制和拥塞控制机制,确保数据正确、有序、不丢失、不重复地到达。
- 服务质量:可根据应用需求,提供不同级别的吞吐量、时延和安全性保障。
运输层协议主要有两种:
- 传输控制协议:提供面向连接的、可靠的数据流传输服务。
- 用户数据报协议:提供无连接的、尽最大努力交付的数据报服务,简单高效。
3.2 多路复用与多路分解
多路复用与多路分解是运输层实现“进程到进程”通信的核心技术,它们是所有计算机网络中不可或缺的功能。
- 多路分解:在接收端,运输层从网络层接收到数据段后,根据数据段首部中的信息(主要是目的端口号),将其正确交付到指定套接字(即应用程序的入口点)的过程。这就像邮局分拣员根据信封上的具体房间号(端口号),将信件投递到不同住户(应用进程)的信箱中。
- 多路复用:在发送端,运输层从主机上不同的套接字收集数据块,并为每个数据块封装上首部信息(包括源和目的端口号等),从而生成数据段,然后将这些数据段交给网络层传输的过程。这如同多个住户将信件交给邮局,邮局统一处理并发出。
这一机制使得多个网络应用可以共享同一个网络层协议(如IP),从而高效地利用网络资源。无论是TCP还是UDP,都使用端口号(一个16位的数字)来标识套接字,从而实现复用与分解。一个完整的运输层通信由两个主机的IP地址和两个端口号共同唯一标识。
计算机网络开发与服务的视角
从网络开发与服务的角度看,运输层是应用程序开发者直接交互的底层。开发者通过调用运输层提供的服务接口(如Socket API)来构建分布式应用。理解运输层服务,特别是TCP的可靠传输机制和UDP的轻量级特性,对于开发高性能、高可靠的网络应用至关重要。例如,Web服务器(HTTP)和电子邮件(SMTP)通常依赖TCP保证可靠性;而实时视频流或DNS查询则可能选择UDP以降低时延。多路复用/分解机制使得一台服务器能够通过有限的IP地址和不同的端口号,同时为数以万计的客户端提供多种网络服务,这是现代互联网服务得以大规模部署的技术基石。
运输层作为承上启下的一层,其服务质量和设计选择直接决定了上层应用体验和网络整体效能。