UDP:小孩子一样的纯真
{% note default %}
UDP向IP一样是面向无连接的,不可靠服务,但是应用还是十分广泛,原因就在于UDP的简单。总结UDP的特点和应用场景,后面专门写一篇博文来总结一下UDP和TCP的区别。
网络包在网络世界里游走
实际上在现实世界中的网络,在进行通信的时候,也就是在网线上一个一个二进制流在那里流动,到了数据链路层叫帧,在网络层叫包,在传输层叫段。
其实运输上大体没什么区别,关键就在于里面的东西。
到了传输层,从网络层那里把ip数据包拆了,我怎么知道里面是udp还是tcp?
在IP头里有8位协议,说明是TCP还是UDP,剩下的就交给应用层去管了。
对于UDP来说,UDP包头的格式十分简单,有个源端口号和目的端口号,还有UDP长度,校验和,也就没有什么了,特别简单,因为UDP不需要维护连接,也就不需要杂七杂八的额外信息。
UDP的三大特点
- 结构简单,没有大量的数据结构、处理逻辑、包头字段。当然前提是网络世界是美好的。
- 面向无连接,不会建立连接,监听一个端口号,可以发给任何人,我不管,我想发就发,谁都可以发给我。
- 没有拥塞控制来处理网络延迟,管你堵成什么样子,我不管,我就是要发,无脑往前冲。
综上来说,UDP跟IP网络层是十分相似的,不保证可靠传输,不保证顺序到达。
UDP的应用场景
- 需要资源少,网络情况较好的内网,或者对于丢包不敏感的一些应用。DHCP、TFTP就是基于UDP协议。
- 不需要一对一建立连接,可以广播的应用。
- 处理速度快,时延低,即使网络拥堵,也毫不退缩。
综上来说,使用UDP就是想要在网络世界里单纯的做个小孩子,没有过多的东西需要维护,结构简单,简单有时候往往就是暴力解决问题,一股无脑冲。
所以对于那些不要像TCP那样努力维护连接与拥塞控制,而又需要处理速度快的应用,UDP是一个很好的选择,因为对于可靠保证,可以在应用层实现。
UDP的例子
-
网页或APP的访问
以前网页和手机APP都是基于HTTP协议的,而HTPP协议是基于TCP的,那么连接一次连接会很耗时,而且如果断了还会重连,会更加耗时,并且,目前的HTTP协议是去多个数据通道共享一个连接的情况,而TCP是要保证顺序的,上一个没来,你下一个来了你也得给我等着。
所以谷歌提出的QUIC,快速UDP互联网连接,就是基于UDP协议的,目的就在于降低网络通信的延迟,提供更好的用户体验。
而QUIC在应用层会实现快速建立连接、减少重传时延、自适应拥塞控制,这些就是在应用层做的,如上面所说。 -
直播行业
直播行业大多使用RTMP,也是基于UDP的。因为直播就是要低时延,而且不需要顺序保证,也不用重传维护可靠性,也很好理解,因为在用户看直播的时候,如果发生网络延迟,对于那些老的视频帧丢了就丢了,我要看实时的。所以很多直播应用,都是基于UDP实现了自己的视频传输协议。 -
实时游戏
打游戏很明显的一个感受就是不要网络延迟,网络延迟真的会让人暴怒。

浙公网安备 33010602011771号