一、概述

UDP 只在 IP 的数据报服务之上增加很少一点的功能。

  • 复用、分用功能。
  • 差错检测的功能。

UDP 主要特点:

  • 无连接的。即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
  • 尽最大努力交付。即不保证可靠交付,因此,主机不需要维持复杂的连接状态表。
  • 面向报文。UDP 对应用层交下来的报文,既不合并,也不拆分,一次交付一个完整的报文。因此,应用程序必须选择一个合适大小的报文。若报文太长,IP 在传送时可能要进行分片,降低 IP 层的效率。
  • 没有拥塞控制。网络出现拥塞不会拿源主机的发送速率降低,UDP 能满足很多实时应用(如网络直播、视频会议)要求源主机以恒定的速率发送数据,并在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延的要求。
  • UDP 支持 1:1、1:N、N:1、N:N 的交互通信。
  • 首部开销小(只有8个字节,而TCP需要20个字节)。

    二、UDP 首部格式

    image.png
    UDP 报文头
    UDP报文头.png
    UDP 伪首部
    UDP伪头部.png
    IPv6 UDP 报文头
    UDP_IPv6报文头.png

    2.1 首部定义

  • 源端口,源端口号,对方回信时选用,不需要时可用全0。

  • 目的端口,目的端口号。在终点交付报文时必须使用。
  • 报文长度,UDP用户数据报的长度。计算值包含首部长度(最小值为8)。
  • 检验和,检测 UDP 用户数据报在传输中是否有错。否则丢弃。

    2.2 检验和计算

    UDP 用户数据报首部中检验和计算方法有些特殊。要在 UDP 用户数据报之前增加 12个字节伪首部。

    伪首部: 这种伪首部并非 UDP 用户数据报真正的首部。只在计算检验和时,临时添加在 UDP 用户数据报前面,得到一个临时的 UDP 用户数据报。伪首部既不向下传送也不向上递交,仅仅是为了计算检验和。

UDP 检验和计算.png

三、UDP 应用

ARP

地址解析协议(Address Resolution Protocol, ARP)是一个通过解析 网络层 地址来寻找 数据链路层 地址的网络传输协议,它是 IPv4 中极其重要。

DNS

域名解析服务。

DHCP

动态主机配置协议,用于动态分配 IP 地址。

RIP

路由信息协议。

NTP

网络时间协议。

QUIC

快速UDP网络连接(Quick UDP Internet Connections, QUIC)是一种实验性的网络传输协议。由 Google开发,在 2013 年实现。QUIC 基于 UDP 协议,它在两个端点间创建连接,且支持多路复用连线。QUIC 希望能够提供基于TLS/DTLS的网络安全保护,减少资料传输及创建连接时的延迟时间,双向控制带宽,以避免网络拥塞。
Google希望使用这个协议来取代HTTPS/HTTP协议,使网页传输速度加快,计划将QUIC提交至互联网工程任务小组(IETF),让它成为下一代的正式网络规范[3]。2015年6月,QUIC的网络草案(英语:Internet Draft)被正式提交至互联网工程任务组。[4]2018 年 10 月,互联网工程任务组 HTTP 及 QUIC 工作小组正式将基于 QUIC 协议的 HTTP(英语:HTTP over QUIC)重命名为HTTP/3以为确立下一代规范做准备。
QUIC旨在提供几乎等同于 TCP 连接的可靠性、但延迟大大减少。主机通过两个理解 HTTP 流量的行为来实现这一点。

  • 在连接创建期间开销大大减少。
  • 提高网络切换期间的性能。比如当移动设备从 WIFE 热点切换到移动网络时发生的情况,一个个连接超时,然后根据需要重新创建,期间延迟较高。而 QUIC 包含一个连接标识符,唯一地标识客户端与服务器之间的连接,忽略源 IP 地址是什么。这样只需要发送一个包含此 ID 的数据报即可重新创建连接。

    流媒体协议

    当网络环境较差时,使用 TCP 协议进行直播会更卡(是因为TCP 协议探测到网络拥塞,会通过拥塞控制导致应用层卡顿)。因此,很多直播应用基于 UDP 实现自己的视频传输协议。