首先,在说这两个的区别之前,我们先了解一下这两个是干什么的?
UDP和TCP都是位于传输层的协议,用来提供端对端的接口
一、UDP
用户数据包协议,面向数据报的通信协议:对应用层交下来的报文,不合并,不拆分,只是在上面加上首部就交给网络层。
首部包括:源端口,目的端口,长度,校验和 4个字段,每个字段占用2个字节
特点:
- 不提供复杂的控制机制,利用IP提供面向无连接的通信服务
- 传输过程中丢失任何数据不负责重发
- 包的到达顺序出现乱序没有纠正功能
- 无法进行流量控制等行为避免网络拥堵
- 不保证接收方收到完整数据,只拥有一个校验和功能保证报文是否完整,如果校验失败,直接丢弃不作任何处理
二、TCP
传输控制协议,面向字节流的通信协议:将上层交下来的数据看做无结构的字节流发送
特点:
- 充分实现传输时的各种控制功能,可进行丢包时的重发控制,对顺序乱掉的包进行顺序控制、
- 只有确认通信对端存在才会发送数据,从而控制通信流量的浪费
- 在IP无连接的网络上也能实现可靠性高的通信
三、区别
TCP | UDP | |
可靠性 | 可靠 | 不可靠 |
连接性 | 面向连接 | 无连接 |
报文 | 面向字节流 | 面向报文 |
效率 | 传输效率低 | 传输效率高 |
双共性 | 全双工 | 一对一,一对多,多对一,多对多 |
流量控制 | 滑动窗口 | 无 |
拥塞控制 | 慢开始,拥塞避免,快重传,快恢复 | 无 |
传输效率 | 慢 | 快 |
- TCP面向连接,建立连接3次握手,断开连接4次挥手;UDP面向无连接,传输前后不建立连接,发送端发送到网络,接收端从消息队列接受
- TCP提供可靠的服务,传输过程采用流量控制,标号和确认,计时器等手段确保数据无差错;UDP尽可能传递数据,但不保证完好的传到对方手里
- TCP面向字节流,将字节流分解为多个TCP报文段传输,在目的站重新装配。UDP面向报文,不拆分应用层报文,保留报文边界,一次发送一个报文,接收方去掉首部后直接交给上层
应用场景如下:
TCP应用场景:对效率要求低,准确率要求高,UDP正好相反