UDP协议
UDP
说明
- 如果只想关注计算机网络的应用:
- 了解:UDP特点,功能。
- 熟悉:应用场景。
- 如果想深入学习计算机网络:
- 熟悉:UDP特点,报文格式,应用场景。
- 熟悉:UDP校验和。
概述
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,属于TCP/IP协议族,其核心设计目标是提供高效但不可靠的数据传输服务。它直接基于IP协议工作,仅通过复用/分用和校验和机制实现基本的数据传输功能,无需建立连接或维护复杂的状态信息。
特点(面试题)
- UDP首部很小,只占8B。
- UDP每次传输一个完整的报文,不支持报文自动拆分、重装。
- UDP是无连接的,不可靠的(可靠性可以交给应用层处理),也不支持拥塞控制。
- UDP支持一对一(封装为单播IP数据报)、一对多传输(封装成广播/多播IP数据报)
- UDP协议不支持报文拆分、重装。因此应用层报文长度不超过UDP协议上限。
报文格式
16
位源端口号:表示发送进程的端口号16
位目的端口号:表示接收进程的端口号16
位UDP
长度:表示整个数据报的长度(UDP
首部 +UDP
数据)最大长度,以字节为单位。16
位UDP
校验和:用于校验UDP
报文是否出错。如果出错,直接丢弃,并且不通知服务端和用户。- 数据:一个完整的应用层报文。
UDP校验和
发送方
- 传输层的UDP协议计算校验和之前,先添加伪首部
- 把伪首部、首部、数据部分以16bit为一组进行二进制加法。
- 将最终结果逐位取反,得到16bit的校验码,将其填入UDP首部。
- 去掉伪首部,并将UDP数据报交付给网络层,封装为IP数据报。
接收方
- 网络层向应用层递交UDP数据报
- 传输层在UDP数据报之前,添加伪首部
- 把伪首部、UDP首部、数据部分以16bit为一组,进行二进制加法。
- 如果加法结果全1,说明目比特错误,于是接收该UDP数据报,根据目的端口号交付给进程。否则,直接丢弃。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 MyAKDreamのBlog!