TCP vs UDP:何时使用以及 TCP 与 HTTP 的关系
发布: (2026年1月31日 GMT+8 15:35)
4 min read
原文: Dev.to
Source: Dev.to
TCP 与 UDP 是什么?(高级概览)
TCP(Transmission Control Protocol)
- 可靠的、面向连接的网络协议。
- 使用三次握手建立连接。
- 保证数据到达目的地时不丢失且不损坏。
- 保持数据包的正确顺序,并在需要时重新传输丢失的数据包。
- 由于这些检查,TCP 比 UDP 更慢,但极其可靠。
UDP(User Datagram Protocol)
- 快速的、无连接的网络协议。
- 在不建立连接或检查是否到达的情况下发送数据包。
- 不保证交付、顺序或对丢失数据的重传。
- 这使得 UDP 更快,但可靠性较低。
常见使用场景
- TCP:聊天应用、消息应用、电子邮件、文件下载、网页浏览(HTTP/HTTPS)。
- UDP:视频通话、直播流、在线游戏、语音通话。
TCP 与 UDP 的关键区别
| 特性 | TCP | UDP |
|---|---|---|
| 连接类型 | 面向连接 | 无连接 |
| 握手 | 需要三次握手 | 无握手 |
| 可靠性 | 保证交付(会重传) | 不保证,也不重传 |
| 数据包顺序 | 保持顺序 | 可能无序到达 |
| 速度 | 由于开销较慢 | 更快 |
| 错误检查 | 是(校验和、重传) | 最小(仅校验和) |
| 典型应用 | 聊天、电子邮件、下载、网页浏览 | 流媒体、游戏、VoIP |
何时使用 TCP
当数据准确性比速度更重要且数据丢失不可接受时使用 TCP。
- 数据必须正确且按顺序交付。
- 示例:
- 发送重要邮件。
- 下载文件。
- 聊天或消息传递,信息完整性至关重要。
如果能确保数据不被损坏,少量延迟是可以接受的。
何时使用 UDP
当速度至关重要且偶尔的数据丢失可以容忍时,尤其是实时通信,使用 UDP。
- 低延迟比完美可靠性更重要。
- 示例:
- 视频通话。
- 直播流。
- 在线游戏。
如果丢失了少量数据包,继续进行比等待重传更好。
什么是 HTTP 以及它的定位
HTTP(HyperText Transfer Protocol) 定义:
- 请求的数据是什么。
- 返回的数据是什么。
它不决定数据如何安全传输;这由传输层(TCP 或 UDP)负责。
HTTP 请求/响应示例
GET / HTTP/1.1
Host: www.facebook.com
HTTP/1.1 200 OK
Content-Type: text/html
...HTML content...
浏览器发送 HTTP 请求,服务器处理后返回包含请求资源的 HTTP 响应。
HTTP 与 TCP 的关系
- HTTP 位于 TCP 之上,并使用 TCP 可靠地传输网页数据。
- HTTP 只定义通信规则(请求/响应格式)。
- 可靠性、顺序和重传由 TCP 处理。
因此,传统 HTTP 选择 TCP,因为网页需要正确、完整的数据。虽然 UDP 更快,但其缺乏可靠性使其不适用于大多数 HTTP 流量。
总结
- TCP:可靠、有序、较慢——适用于对正确性至关重要的数据。
- UDP:快速、无序、可靠性较低——适用于实时媒体,速度比偶尔丢失更重要。
- HTTP:需要可靠性 → 使用 TCP 作为传输协议。