文章目录
- 一、前言
- 二、运输层的功能
- 1. 端到端通信
- 2. 复用与分用
- 3. 差错检测
- 4. 流量控制
- 5. 拥塞控制
- 三、运输层协议:TCP 和 UDP
- 1. TCP:面向连接的可靠传输协议
- 2. UDP:无连接的传输协议
- 四、端口号与进程通信
- 1. 端口号分类
- 2. 端口通信模型
- 五、流量控制与拥塞控制
- 1. 流量控制
- 2. 拥塞控制
- 六、总结
一、前言
计算机网络运输层(Transport Layer)位于网络层之上、应用层之下,在整个网络协议栈中起着承上启下的作用。它为应用进程提供端到端的数据传输服务,并确保数据能够可靠或高效地传送到目标主机。
二、运输层的功能
1. 端到端通信
- 网络层负责主机之间的数据传输,但无法区分主机上的具体应用进程。
- 运输层通过端口号标识不同的进程,实现主机到主机之间的端到端通信。
2. 复用与分用
- 复用:多个应用程序可以同时使用运输层协议进行数据传输。
- 分用:接收方将运输层数据解析并分发到对应的应用程序。
3. 差错检测
- 运输层对数据进行校验,保证数据在传输过程中没有损坏。
- 校验和用于检测数据在传输过程中是否出错。
4. 流量控制
- 防止发送方发送过多的数据,超过接收方的处理能力。
- 避免数据溢出或丢失。
5. 拥塞控制
- 防止网络拥塞,确保网络资源被合理利用。
- 通过调整发送速率来适应当前网络状态。
三、运输层协议:TCP 和 UDP
运输层的两大核心协议分别是:
- TCP(Transmission Control Protocol):传输控制协议
- UDP(User Datagram Protocol):用户数据报协议
1. TCP:面向连接的可靠传输协议
TCP 提供可靠的数据传输服务,具有以下特性:
- 面向连接:在数据传输前需要先建立连接(3次握手),数据传输结束后释放连接(4次挥手)。
- 可靠传输:数据包按序到达、无差错、不丢失、不重复。
- 流量控制:通过滑动窗口机制控制发送方的数据发送速率。
- 拥塞控制:通过慢启动、拥塞避免、快重传等算法控制数据流量,防止网络拥塞。
✅ TCP 报文格式
0 4 8 16 24 32--------------------------------------------------------| 源端口号 | 目的端口号 | 序号(32位) |--------------------------------------------------------| 确认号(32位) |--------------------------------------------------------| 数据偏移(4位) | 保留(6位) | 标志位(6位) | 窗口大小 |--------------------------------------------------------| 校验和 | 紧急指针 |--------------------------------------------------------| 可选字段(0-320位) |--------------------------------------------------------| 数据部分 |--------------------------------------------------------
- 源端口号和目的端口号:标识通信双方进程。
- 序号和确认号:保证数据的可靠性和有序性。
- 标志位:
ACK
:确认标志。SYN
:同步标志,用于建立连接。FIN
:终止标志,用于断开连接。
- 窗口大小:用于流量控制。
- 校验和:检测数据传输是否出错。
✅ TCP 连接过程
- 三次握手(建立连接)
- 客户端发送
SYN
报文。 - 服务端返回
SYN + ACK
报文。 - 客户端返回
ACK
报文,连接建立。
- 客户端发送
- 四次挥手(释放连接)
- 客户端发送
FIN
请求断开连接。 - 服务端返回
ACK
确认。 - 服务端发送
FIN
请求断开。 - 客户端返回
ACK
,连接断开。
- 客户端发送
2. UDP:无连接的传输协议
UDP 提供无连接的数据传输服务,具有以下特性:
- 无连接:无需建立连接即可传输数据。
- 不可靠传输:不保证数据有序、不丢失。
- 速度快:开销小,适合对实时性要求高的应用(如视频会议、语音通话)。
✅ UDP 报文格式
0 4 8 16 24 32--------------------------------------------------------| 源端口号 | 目的端口号 | 数据长度 | 校验和 |--------------------------------------------------------| 数据部分(可变长) |--------------------------------------------------------
- 源端口号和目的端口号:标识通信进程。
- 数据长度:数据部分的长度。
- 校验和:检测数据是否损坏。
- 数据部分:实际传输的数据。
✅ UDP 应用场景
- 实时音视频:如 VoIP、视频通话。
- 在线游戏:数据传输需要速度,不需要可靠性。
- 广播和多播:如 DHCP 协议。
四、端口号与进程通信
1. 端口号分类
- 0~1023:系统端口(知名端口)
- 80:HTTP
- 443:HTTPS
- 22:SSH
- 1024~49151:注册端口
- 分配给用户程序或进程。
- 49152~65535:动态或私有端口
- 临时端口号,供客户机程序使用。
2. 端口通信模型
- 服务器监听指定端口,等待客户端连接。
- 客户端通过指定端口向服务器发送数据。
- 服务器和客户端进行数据交互。
五、流量控制与拥塞控制
1. 流量控制
- 滑动窗口机制
- 发送方和接收方维护窗口。
- 窗口大小决定发送方可发送的数据量。
- 通过调整窗口大小实现流量控制。
✅ 示例
- 发送方窗口大小为 4。
- 每次发送 4 个数据包。
- 接收方确认收到数据后,滑动窗口前移。
2. 拥塞控制
- 慢启动:初始发送速率较低,逐步增加。
- 拥塞避免:防止发送速率增长过快。
- 快重传:在接收方连续接收到 3 个重复的 ACK 时,立即重传数据。
- 快恢复:在拥塞时减少窗口大小,不重置。
六、总结
运输层在计算机网络中负责主机之间的数据传输。它通过 TCP 和 UDP 提供可靠或高速的传输服务,同时通过流量控制与拥塞控制保障网络稳定性。
✅ TCP 适合可靠性要求高的场景
- 如文件传输、邮件、Web 浏览。
✅ UDP 适合实时性要求高的场景
- 如视频会议、语音通话、在线游戏。