九月份的最后一天,国庆节的前一天,帅天今天给大家聊聊 UDP 协议。
为什么叫最简单的 UDP 协议,因为相比 TCP 协议,UDP 协议的工作原理简直无脑了太多。
UDP 全称 User Datagram Protocol,即用户数据报协议。
UDP 和 TCP 经常被拿来比较两者之前的区别。
TCP 是面向连接的,UDP 是面向无连接的,大部分在面试的时候都会这么答。
那么请问,什么是建立连接?所谓建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
例如,TCP 是提供可靠交付。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。但是 UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。
再如,TCP是面向字节流的。发送的时候发的是一个流,没头没尾。IP 包可不是一个流,而是一个个的 IP 包。之所以变成了流,这也是 TCP 自己的状态维护做的事情。而 UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收。
TCP 是可以有拥塞控制的。它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。UDP 就不会,应用让我发,我就发,其他我烦不了。
为什么 UDP 这么无脑呢?来看看 UDP 包头是啥样的。
当我们看到 UDP 包头的时候,发现的确有端口号,有源端口号和目标端口号。同时 UDP 除了端口号,再没有其他的了。就是这么简单。
所以 UDP 有以下几大使用场景:
第一,需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用。
第二,不需要一对一沟通,建立连接,而是可以广播的应用,比如 DHCP 协议就是基于 UDP 协议的。
第三,需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。比如现在很火的网红直播带货。
UDP 的介绍就到这里,下面一章会重点介绍 TCP 协议。
祝大家双节快乐!
如果喜欢这篇文章,请点个关注,你的关注是我最大的动力。