五、运输层
运输层是计算机网络体系结构中的关键一层,位于网络层之上、应用层之下。它负责为运行在不同主机上的应用进程提供逻辑通信服务,是端到端通信的核心。
1. 运输层概述
运输层的主要目标是弥补网络层服务的不足,为应用层提供可靠、有效的数据传输服务。网络层(如IP协议)只负责将数据包从源主机送到目的主机,是一种“尽力而为”的服务,不保证可靠性、顺序性和完整性。而运输层则在此基础上,通过其协议(主要是TCP和UDP)向上层应用提供两种截然不同的服务模型:
- 面向连接的可靠传输服务:确保数据无差错、不丢失、不重复且按序到达。这是传输控制协议(TCP)提供的核心服务。
- 无连接的不可靠传输服务:不建立连接,只提供尽力而为的数据交付,不保证可靠性。这是用户数据报协议(UDP)提供的服务。
运输层通过复用和分用功能,使多个应用进程能够同时使用下层的网络服务。
2. 运输层端口、复用与分用的概念
端口是运输层的一个核心概念。它是一个16位的数字标识符(范围0-65535),用于唯一标识主机上的一个应用进程。端口使得运输层能够将数据正确交付给指定的应用程序。
- 知名端口(0-1023):分配给如HTTP(80)、FTP(21)等核心网络服务。
- 注册端口(1024-49151):供用户应用程序注册使用。
- 动态/私有端口(49152-65535):供客户端临时使用。
复用是指发送方运输层将来自多个不同应用进程的数据块(报文段)收集起来,加上共同的运输层首部(如端口号),交给网络层封装成一个IP数据包发送出去的过程。
分用是复用的逆过程。当接收方运输层收到网络层交付的IP数据包后,会根据运输层首部中的目的端口号,将数据正确交付给指定的、正在等待的接收应用进程。
正是通过套接字(Socket)——即IP地址 + 端口号的组合——运输层实现了全球范围内主机上特定进程之间的精确通信。
3. UDP和TCP的对比
用户数据报协议(UDP)和传输控制协议(TCP)是运输层两大核心协议,它们的设计目标和特性形成了鲜明对比:
| 特性 | UDP(用户数据报协议) | TCP(传输控制协议) |
| :--- | :--- | :--- |
| 连接性 | 无连接。发送数据前无需建立连接,开销小。 | 面向连接。数据传输前必须经过“三次握手”建立可靠连接。 |
| 可靠性 | 不可靠交付。不保证数据到达,不保证顺序,无确认、重传机制。 | 可靠交付。通过确认、重传、流量控制、拥塞控制等机制确保数据正确、有序到达。 |
| 报文结构 | 简单。首部仅8字节,包含源端口、目的端口、长度和校验和。 | 复杂。首部至少20字节,包含序列号、确认号、窗口大小等众多控制字段。 |
| 传输单位 | 用户数据报。应用层交下来的数据加上UDP首部即构成一个报文。 | TCP报文段。数据会被分段,每个段加上TCP首部进行传输。 |
| 流量控制 | 无。发送速率由应用层控制。 | 有。通过滑动窗口机制进行端到端的流量控制。 |
| 拥塞控制 | 无。可能加剧网络拥塞。 | 有。通过慢启动、拥塞避免等算法动态调整发送速率。 |
| 传输效率 | 高。延迟低,开销小,适用于实时应用。 | 相对较低。由于建立连接、确认重传等机制,延迟和开销较大。 |
| 应用场景 | DNS查询、音视频流媒体(如视频会议)、实时游戏、TFTP等对实时性要求高、可容忍少量丢包的应用。 | Web浏览(HTTP/HTTPS)、电子邮件(SMTP/POP3)、文件传输(FTP)、远程登录(SSH)等要求数据完整可靠的应用。 |
****:运输层作为承上启下的关键层级,通过端口机制实现了进程间的精确通信,并通过UDP和TCP两种协议为上层应用提供了灵活的选择——UDP追求高效与低延迟,TCP追求可靠与有序。理解它们之间的根本区别,是设计和选择网络应用程序的基础。