UDP

UDP 报文段格式

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |            Checksum           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                             data                              |
|                                                               |

应用

  • UDP 适用于需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。

  • UDP 适用于不需要一对一沟通,建立连接,而是可以广播的应用。UDP 的不面向连接的特性,使得其可以承载广播或者多播的协议。

  • UDP 适用于需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也不影响发送速度的应用。

当前很多应用要求低时延,而TCP 复杂的机制无法满足需求,许多应用在应用层实现自己的连接策略,可靠保证,时延要求。

QUIC

QUIC(Quick UDP Internet Connections)是 Google 提出的一种基于 UDP 改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。QUIC 在应用层上会自己实现快速连接建立、减少重传时延,自适应拥塞控制。

流媒体

直播实时性比较重要,宁可丢包,也不要卡顿。目前很多直播应用,都基于 UDP 实现了自己的视频传输 协议。

实时游戏

实时游戏,例如 FPS 类游戏,客户端和服务端要建立长连接,来保证实时传输。游戏玩家远多于服务器,而 TCP 连接需要内核维护一些数据结构,一台机器能够支撑的 TCP 连接数目有限。

UDP 没有连接,在异步 IO 机制引入之前,常常是应对海量客户端连接的策略。游戏对实时要求较为严格的情况下,采用自定义的可靠 UDP 协议,自定义重传策略,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏造成的影响。

物联网

一方面,物联网领域终端资源少,很可能只是个内存非常小的嵌入式系统,维护 TCP 协议代价太大;另一方面,物联网对实时性要求较高,而 TCP 时延大。Google 旗下的 Nest 建立 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的。

移动通信

在 4G 网络里,移动流量上网的数据面对的协议 GTP-U 是基于 UDP 的。因为移动网络协议比较复杂, 而 GTP 协议本身就包含复杂的手机上线下线的通信协议。TCP 的机制显得有些多余。

参考

  1. 《趣谈网络协议》 - 刘超

Last updated

Was this helpful?