UDP 网络套接字
在网络编程中,除了常见的 TCP 套接字,还有一种更轻量、更灵活的通信方式——UDP 套接字。本篇文章将从理论的角度,带你了解 UDP 协议的原理、特点、通信机制,并帮助你打下使用 UDP 进行网络编程的基础。
UDP 协议简介
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、面向报文的传输层协议,它和 TCP 一样基于 IP 协议工作,但实现方式截然不同。
你可以这样理解:如果 TCP 是一个可靠、面面俱到的快递公司,负责把包裹完好送达;那么 UDP 更像是一个邮筒,把信投进去就完事了,不管收没收到、顺不顺利、有没有顺序。
UDP 的核心特点
特点 | 说明 |
---|---|
无连接 | UDP 发送数据前无需建立连接,不存在三次握手 |
不可靠 | UDP 不确认接收、也不重传丢失数据 |
面向报文 | 每次发送接收都是完整的一个“报文” |
速度快、开销小 | 没有连接状态开销、首部仅 8 字节 |
支持广播/多播 | UDP 可以方便地进行一对多通信 |
适合 UDP 的应用场景包括:
- 实时通信(如语音通话、视频直播)
- 局域网广播(如局域网设备发现)
- 小数据量、丢包容忍的应用(如 DNS 查询)
UDP 通信流程原理
和 TCP 不同,UDP 没有连接过程,双方之间的通信更像是互相“扔纸条”。
- 发送端:只需要准备好目标地址和端口,直接将数据报发送过去。
- 接收端:监听某个端口,随时准备接收发来的数据报。
注意
虽然 UDP 不需要连接,但在编程中仍需要创建套接字(socket)并设置地址信息。