学习完IP协议后,遇到的第一个应用比较广泛的协议就是UDP协议了,当看到UDP协议头时,我觉得UDP协议确实“人如其名”。你会感觉UDP协议简直就是在偷懒,字段要多精简有多精简(当然每一个协议里的每一个字段都有其必不可少的作用)。这么简单的构成,原因是其功能简单。
UDP发送数据的时候,只要将数据发送出去了,就不管了,至于接收端有没有收到,UDP协议本身是不保障的。
UDP协议本身到这里就完了,但是UDP的应用其实很广泛。
由于不需要建立连接,所以UDP不单单可以进行一对一的通信,还可以进行多对多的通信。其最简单,基础的应用就是提供组播,广播功能(分别是向组别地址、广播地址发送消息即可)。比如我们向某广播地址x.x.x.255的8090端口发送一条广播消息,在相同网段中只要开启了监听这个端口的Socket,就能收到广播消息,而且在局域网内几乎不会丢包,所以UDP在这里有个常见的应用就是DHCP协议,这个协议是帮助一个局域网内的主机分配IP的任务。
UDP还有一个最显著的好处就是,由于没有像TCP那样的拥塞控制,流量控制,滑动窗口的应用,所以UDP有着低时延的优点。针对于一些对丢包不敏感的业务场景,例如音频实时传输、还有许多直播平台基于UDP实现自己的视频传输协议。还有就是实时游戏,游戏对时延特别敏感,而且游戏服务器不能同时维持大量的TCP长连接,所以基于自定义的UDP协议,自定义重传策略,能够把时间延迟降到最低。
还有一个就是原来访问网页和手机 APP 都是基于 HTTP 协议的。HTTP 协议是基于 TCP 的,建立连接都需要多次交互,对于时延比较大的目前主流的移动互联网来讲,建立一次连接需要的时间会比较长,然而既然是移动中,TCP 可能还会断了重连,也是很耗时的。而且目前的 HTTP 协议,往往采取多个数据通道共享一个连接的情况,这样本来为了加快传输速度,但是 TCP 的严格顺序策略使得哪怕共享通道,前一个不来,后一个和前一个即便没关系,也要等着,时延也会加大。
而QUIC(全称Quick UDP Internet Connections,快速 UDP 互联网连接)是 Google 提出的一种基于 UDP 改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验。QUIC 在应用层上,会自己实现快速连接建立、减少重传时延,自适应拥塞控制