UDP 包头格式
解析udp包到应用的过程:
当我发送的 UDP 包到达目标机器后,发现 MAC 地址匹配,于是就取下来,将剩下的包传给处理 IP 层的代码。把 IP 头取下来,发现目标 IP 匹配,在 IP 头里面有个 8 位
协议(tcp/udp).处理完传输层的事情,内核的事情基本就干完了.此时就需要将拿到的数据交给应用程序,这里就是根据端口来发送给对应的应用程序
UDP特点:
- 不需要大量的数据结构、处理逻辑、包头字段
- 它不会建立连接,虽然有端口号,但是监听在这个地方,谁都可以传给他数据,他也可以传给任何人数据,甚至可以同时传给多个人数据
- 它不会根据网络的情况进行发包的拥塞控制,无论网络丢包丢成啥样了,它该怎么发还怎么发
UDP 的三大使用场景:
- 需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用
- 不需要一对一沟通,建立连接,而是可以广播的应用
- 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候。
TCP 和 UDP 区别
TCP 是面向连接的
TCP 提供可靠交付。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达
TCP 是面向字节流的。发送的时候发的是一个流,没头没尾
TCP 是可以有拥塞控制的
UDP 是面向无连接的
UDP 继承了 IP 的特性,基于数据报的,一个一个地发,一个一个地收
UDP 继承了 IP包的特性,不保证不丢失,不保证按顺序到达
快速UDP
QUIC(全称Quick UDP Internet Connections,快速 UDP 互联网连接)是 Google 提出的一种基于 UDP 改进的通信协议,其目的是降低网络通信的延迟,提供更好的用户互动体验
QUIC 在应用层上,会自己实现快速连接建立、减少重传时延,自适应拥塞控制
快速UDP介绍
https://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9FUDP%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5