认识
2024年11月08日
一、认识
用户数据协议 UDP(User Datagram Protocol)--提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。
- UDP 是无连接的;
- UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数);
- UDP 是面向报文的;
- UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 直播,实时视频会议等);
- UDP 支持一对一、一对多、多对一和多对多的交互通信;
- UDP 的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
UDP 在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。
二、UDP 粘包
2.1 UDP为什么不会粘包
- 因为UDP是面向消息的协议,UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任意字节的数据
- UDP具有保护消息边界,在每个UDP包中有消息头(消息来源地址,端口信息等),这样对于接收端来说容易进行分区处理。传输协议把数据当作一条独立的消息在网上传输,接收方只能接收独立的消息,如果消息内容过大,超过接收方一次所能接受的大小,就会丢失一部分数据,因为就算是丢失,它也不会分两次去接收
三、UDP 可靠性
3.1 UDP 为什么不可靠
- 传输数据之前不需要先建立连接
- 不保证消息交付,远程主机的传输层在接收到UDP报文后,不需要确认
- 不保证将会顺序,不设置包序号、不重排、不会发生队首阻塞
- 不进行拥塞控制,没有内置反馈机制,不重传、无超时