一、TCP(Transmission Control Protocol)
1. 核心:面向连接 + 可靠传输 + 有序传输。
- **先建立连接:**三次握手(双方确认"我能收/你能收")。
- 可靠性机制:
- 确认 ACK:对方收到才算数
- 重传:丢了就重发
- 按序:乱序会重排
- 流量控制/拥塞控制:防止把网络打爆
- **代价:**协议开销更大、延迟更高、实现更复杂。
2. 适合场景:
- 网页(HTTP/1.1、HTTP/2 常跑在 TCP 上)
- 文件传输(FTP/SFTP)
- 邮件、SSH 等需要"不能错"的业务
例子: 你下载一个安装包,少一个字节都不行 → TCP保证最终文件一致。
二、UDP(User Datagram Protocol)
1. 核心:无连接 + 尽力而为(不保证可靠、不保证有序)。
- **不建连接:**发就完了
- **不保证:**可能丢包、重复、乱序
- **优点:**开销小、延迟低、速度快(更准确说是"更低时延/更少控制")
2. 适合场景:
- 实时音视频、语音通话(宁愿偶尔花屏/掉音,也不要卡顿)
- 游戏(更看重延迟)
- DNS(请求很小,丢了再问一次就行)
- 以及现代的 QUIC/HTTP/3:底层用 UDP,但在应用层自己实现"可靠性 + 加密 + 多路复用"。
例子: 打游戏时,丢一帧位置更新影响不大,但如果为了重传等半秒,你会感觉"瞬移/卡顿" → UDP更合适。