UDP
⾯向报⽂
UDP是⼀个⾯向报⽂(报⽂可以理解为⼀段段的数据)的协议。意思就是UDP只是报⽂的搬运⼯,不会对报⽂进⾏任何拆分和拼接操作。具体来说
- 在发送端,应⽤层将数据传递给传输层的
UDP协议,UDP只会给数据增加⼀个UDP头标识下是UDP协议,然后就传递给⽹络层了。 - 在接收端,⽹络层将数据传递给传输层,
UDP只去除IP报⽂头就传递给应⽤层,不会任何拼接操作。
- 在发送端,应⽤层将数据传递给传输层的
不可靠性
UDP是⽆连接的,也就是说通信不需要 建⽴ 和 断开连接 。UDP也是不可靠的。协议收到什么数据就传递什么数据,并且也不会备份数据,对⽅能不能收到是不关⼼的。UDP没有拥塞控制,⼀直会以恒定的速度发送数据。即使⽹络条件不好,也不会对发送速率进⾏调整。这样实现的弊端就是在⽹络条件不好的情况下可能会导致丢包,但是优点。 也很明显,在某些实时性要求⾼的场景(⽐如电话会议)就需要使⽤UDP⽽不是TCP。
⾼效
因为
UDP没有TCP那么复杂,需要保证数据不丢失且有序到达。所以UDP的头部开销⼩,只有⼋字节,相⽐TCP的⾄少⼆⼗字节要少得多,在传输数据报⽂时是很⾼效的。头部包含了以下⼏个数据 两个⼗六位的端⼝号,分别为源端⼝(可选字段)和⽬标端⼝ 整个数据报⽂的⻓度。
整个数据报⽂的检验和(
IPv4可选 字段),该字段⽤于发现头部信息和数据中的错误。
传输⽅式
UDP 不⽌⽀持⼀对⼀的传输⽅式,同样⽀持⼀对多,多对多,多对⼀的⽅式,也就是说 UDP 提供了单播,多播,⼴播的功能。
