前言:
前面我们分享了 TCP 协议相关的知识,谈起 TCP 一般都会谈到 UDP,那 UDP 是什么呢,本篇我们来简单分享一下 UDP 协议。
计算机网络往期文章
什么是 UDP 协议?
UDP 全称:User Datagram Protocol,翻译过来就是用户数据报协议,是一个传输层协议,是 OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,它提供了一种简单的、不可靠的数据传输服务。
UDP 协议的特点
- 无连接:UDP 在发送数据前不进行连接,发送结束时也没有连接可以释放,因此减少了开销和发送数据之前的时延。
- 不可靠:UDP 不保证数据的可靠性,也不使用拥塞控制,因此主机不需要维持复杂的连接状态表,如果因为网络故障导致报文无法发送到对方,或者对方收到了报文但传输过程中乱序了,UDP 协议层也不会给应用层任何错误反馈信息。
- 面向报文:UDP 对应用程序给的数据报文,不进行合并拆分处理,原封不动的将报文进行传输,因此应用程序需要选择合适大小的报文进行传输。
- 无拥塞控制:UDP 没有拥塞控制机制,UDP 协议并不会因为网络出现拥堵而让发送主机的发送速率降低,这个特点适合应用在允许网络发生拥塞时丢失不分数据,但不允许大量数据延迟的场景。
- 支持多种通信方式:UDP 支持一对一、一对多、多对一和多对多的交互通信方式。
UDP 报文格式
- 源端口(Source Port):16 位,因为 UDP 是不需要进行 ACK 的,因此这个字段可以省略。
- 目的端口(Destination Port):16 位,在交付报文时候使用,这个字段不可以省略。
- 长度(Length):16 位,用户报文数据的长度,包括首部和数据,其最小值是8(仅有首部的情况)。
- 检验和(Checksum):16 位,用于检测报文数据包在传输中是否有出错丢失等情况,如果有则将报文丢弃。
- Data octets:8 位,就是字节数据。
UDP 协议的使用场景
- 网络游戏:尤其是多人在线的游戏,UDP 协议能够快速处理海量数据包,确保游戏的流畅进行。
- 视频传输:例如视频会议,这些应用对数据的实时性要求高,而少量的数据丢失相对于传输延迟来说是可以容忍的。
- 直播:直播场景在线人数很多,需要较低的数据延迟,直播聊天信息的少量数据丢失是可以接受的。
- DNS 查询:DNS 服务基于 UDP 协议,能够快速解析域名。
- 。。。。。。等等
UDP 的使用可以结合实时性高,少量数据丢失的特性来选择使用。
UDP 协议和 TCP 协议的区别是什么?
TCP | UDP | |
连接类型 | 有连接,三次握手,四次挥手 | 无连接 |
可靠性 | 可靠 | 不可靠 |
头部大小 | 20-60 字节,最小 20字节,头部较大 | 固定8字节,头部较小 |
速度 | 相对 UDP 慢 | 相对 TCP 快 |
顺序性 | 有序 | 无序 |
数据校验机制 | 有流量控制,拥塞机制 | 只有最基本的 checksum 机制 |
使用场景 | 文件传输、邮件等 | 网络游戏、视频会议、直播等 |
总结:本篇简单分享了 UDP 协议的相理论知识,同时对 UDP 协议和 TCP 协议做了个简单的对比,希望帮助到有需要的小伙伴。
如有不正确的地方欢迎各位指出纠正。