UDP协议
- 面向无连接:不需要在正式传递数据之前先连接起双方
- 数据报文的搬运工:不保证有序且不丢失的传递到对端
- 没有任何控制流量的算法
面向无连接
- UDP 是不需要和 TCP 一样在发送数据前进行三次握手建立连接,想发数据就可以开始发送了
- 只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作
- 发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头,表示用的是 UDP 协议,然后就传递给网络层了
- 接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作
不可靠性
- 不可靠性体现在无连接上:通信不需要建立连接,想发就发
- 收到什么数据就发生什么数据,不对数据进行校验与备份
- 不关心发送端是否收到了数据
- UDP没有拥堵控制会以恒定的速度发送数据:在网络条件不好的情况下会导致丢包
高效
UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是高效的。
UDP 头部包含了:
- 两个十六位的端口号
- 源端口(可选字段)
- 目标端口
- 整个数据报文的长度
- 整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误
传输方式
- 一对一:单播
- 一对多:多播(组播)
- 一对所有:广播
适合场景
对当前网络通讯质量要求不高的时候,实时性要求高的地方都可以看到 UDP 的身影,要求网络通讯速度尽量的快,这时就使用UDP
- 网游
- 直播
- 语音,视频
总结
- UDP 相比 TCP 简单的多,不需要建立连接,不需要验证数据报文,不需要流量控制,只会把想发的数据报文直接发送给对端
- 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为
参考