UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
基本概念
特点
UDP的主要特点是:
- 1.UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
- 2.UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表
- 3.UDP是面向报文的。发送方的UDP对应程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文既不合并也不拆分,而是保留这些报文的边界。
- 4.UDP没有拥塞控制
- 5.UDP支持一对一,一对多,多对一和多对多交换通信。
- 6.UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
协议
UDP报头由4个部分组成:
1、各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。
2、在目的端口后面是长度固定的以字节为单位的报文长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。
3、首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。
4、UDP和TCP的校验和都覆盖到了他们的首部和数据,而之前介绍的IP首部的校验和只覆盖了IP首部。
为什么要封装tcp/udp协议
IP协议中并没有端口(port)的概念。IP协议进行的是IP地址到IP地址的传输,这意味者两台计算机之间的对话。但每台计算机中需要有多个通信通道,并将多个通信通道分配给不同的进程使用,一个端口就代表了这样的一个通信通道。
所以端口(port)是伴随着传输层诞生的概念,有了ip和port我们就可以构建socket来进行编程通信。
基本使用
1.需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。如DHCP协议就是基于UDP的。一般的获取IP地址都是内网请求,而且一次获取不到IP又没事。
2.不需要一对一沟通,建立连接,而是可以广播的应用。DHCP就是一种广播的形式。VXLAN也是需要用到组播,也是基于UDP协议的。
3.需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。
4.QUIC是Google提出的一种基于UDP改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。