一、基础定位
二者都属于传输层协议
OSI 七层模型
- 物理层
- 数据链路层
- 网络层
- 传输层(TCP/UDP )
- 会话层
- 表示层
- 应用层
- TCP:传输控制协议(Transmission Control Protocol)
- UDP:用户数据报协议(User Datagram Protocol)
二、TCP 详解
核心特点:面向连接、可靠传输
面向连接通信前必须先建立连接(三次握手),通信结束正常断开连接(四次挥手)。
可靠传输(重中之重),保障数据不出错、不丢、不乱序实现可靠的四大机制:
- 确认应答 ACK:收到数据要回复确认
- 超时重传:收不到 ACK,自动重新发包
- 滑动窗口:流量控制,防止发送太快对方接收不了
- 拥塞控制:防止网络拥堵
- 序列号:解决数据包乱序,接收端重新排序
- 面向字节流没有数据包边界。你发送多次小数据,TCP 可能合并打包;接收方无法区分消息界限。
- 头部开销大TCP 头部最少 20 字节,选项最多可达 60 字节。
不能丢数据文件传输、网页 HTTP/HTTPS、数据库连接、远程 ssh、微信文字聊天
三、UDP 详解
核心特点:无连接、不可靠传输
无连接不用建立连接,直接发包。不需要握手、挥手。
不可靠没有确认、没有重传。数据包可能丢失、乱序、重复到达,协议层不会补救。
面向报文保留数据包边界。一次发送多少,接收方一次收到完整报文。
头部极简固定 8 字节头部,开销极小。
支持一对多、广播、组播(TCP 只支持一对一)
8允许少量丢包,追求低延迟视频通话、直播、游戏、语音通话、DNS 域名解析
四、核心区别对照表
| 对比维度 | TCP | UDP |
|---|---|---|
| 连接特性 | 面向连接(先握手) | 无连接,直接发数据 |
| 可靠性 | 可靠:不丢包、不乱序、无重复 | 不可靠:可能丢包、乱序 |
| 控制机制 | ACK 确认、超时重传、流量控制、拥塞控制 | 无任何可靠保障机制 |
| 数据形式 | 字节流(无消息边界) | 数据报(保留报文边界) |
| 头部大小 | 20~60 字节 | 固定 8 字节 |
| 延迟 | 较高(大量校验等待) | 极低 |
| 并发模式 | 仅一对一通信 | 支持一对一、广播、组播 |
| 资源占用 | 大 | 很小 |
五、总结
TCP:安全可靠但是速度慢,适合需要稳定连接可靠传输
UDP:无连接不稳定不可靠但是快,适合需要快速传播的场合如直播