相同点:都是传输层协议
不同点
是否面向连接
tcp:面向连接
- 三次握手,四次挥手
- 端对端连接
- 全双工通信(允许双端同时收发数据)
udp:无连接
- 无三次握手,四次挥手
- 支持一对一,一对多,多对多
数据传输方式
tcp:字节流
- 完整的用户消息可能被拆分成多个tcp报文进行传输 MTC、MSS
- 对于接收方而言,需要处理粘包问题
udp:数据报文
- udp每次收发都是完整的报文
是否可靠
tcp:可靠传输
- tcp分段、进行发给送数据包的控制
- 序列号,tcp报文包含序列号,确保完整接收,丢失重复数据,排序
- 确认应答机制,确认数据包收到
- 校验和,检测报文在传输过程中的数据变化
- 滑动窗口,流量控制,防止包丢失
- 拥塞控制
- 重传机制
udp:不可靠传输
- 不保证消息交付
- 不保证交付顺序
- 不进行拥塞控制
- 不进行流量控制 没有接收缓冲区
传输效率
tcp:效率低
- 实现可靠传输造成性能损失
- 头信息20个字节
udp:效率高
- 不可靠传输
- 头信息8个字节,吞吐量就会大一些
应用场景
tcp:要求数据问题,对速度需求不高
udp:实时性要求高