深入理解两大传输层协议的核心机制与差异
📌 序列号+确认号实现可靠有序传输;窗口大小控制流量;Flags标志位驱动握手/挥手状态机
📌 头部极简,仅8字节。无连接状态、无序列号、无确认机制,发完即走,开销极低
| 特性 | 🔵 TCP | 🟡 UDP |
|---|---|---|
| 连接方式 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠,保证交付 | 不可靠,尽力交付 |
| 有序性 | 保证有序 | 不保证顺序 |
| 速度/延迟 | 较慢(握手+确认开销) | 极快,延迟低 |
| 头部大小 | 20~60 字节 | 固定 8 字节 |
| 流量控制 | 滑动窗口机制 | 无 |
| 拥塞控制 | 慢启动/拥塞避免等 | 无(应用自控) |
| 广播/多播 | ❌ 不支持 | ✅ 支持 |
| 连接数 | 一对一 | 一对一/一对多 |
| 状态维护 | 有连接状态(复杂) | 无状态(简单) |
| 数据边界 | 字节流(无边界) | 数据报(有边界) |
| 系统资源 | 消耗较多 | 消耗少 |
TIME_WAIT 持续 2×MSL(通常60s),确保对方收到最后ACK
UDP 无状态机,只有端口绑定与否。内核不维护连接上下文,sendto/recvfrom 直接收发。
🔑 QUIC(HTTP/3)在 UDP 上自行实现可靠性和拥塞控制,兼顾速度与可靠