UDP

说明

  1. 如果只想关注计算机网络的应用:
    • 了解:UDP特点,功能。
    • 熟悉:应用场景。
  2. 如果想深入学习计算机网络:
    • 熟悉:UDP特点,报文格式,应用场景。
    • 熟悉:UDP校验和。

概述

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,属于TCP/IP协议族,其核心设计目标是提供高效但不可靠的数据传输服务。它直接基于IP协议工作,仅通过复用/分用和校验和机制实现基本的数据传输功能,无需建立连接或维护复杂的状态信息。

alt text

特点(面试题)

  • UDP首部很小,只占8B。
  • UDP每次传输一个完整的报文,不支持报文自动拆分、重装。
  • UDP是无连接的,不可靠的(可靠性可以交给应用层处理),也不支持拥塞控制。
  • UDP支持一对一(封装为单播IP数据报)、一对多传输(封装成广播/多播IP数据报)
  • UDP协议不支持报文拆分、重装。因此应用层报文长度不超过UDP协议上限。

报文格式

alt text

  • 16位源端口号:表示发送进程的端口号
  • 16位目的端口号:表示接收进程的端口号
  • 16UDP长度:表示整个数据报的长度(UDP首部 + UDP数据)最大长度,以字节为单位。
  • 16UDP校验和:用于校验UDP报文是否出错。如果出错,直接丢弃,并且不通知服务端和用户。
  • 数据:一个完整的应用层报文。

UDP校验和

alt text

alt text

发送方

alt text

  1. 传输层的UDP协议计算校验和之前,先添加伪首部
  2. 把伪首部、首部、数据部分以16bit为一组进行二进制加法。
  3. 将最终结果逐位取反,得到16bit的校验码,将其填入UDP首部。
  4. 去掉伪首部,并将UDP数据报交付给网络层,封装为IP数据报。

接收方

alt text

  • 网络层向应用层递交UDP数据报
  • 传输层在UDP数据报之前,添加伪首部
  • 把伪首部、UDP首部、数据部分以16bit为一组,进行二进制加法。
  • 如果加法结果全1,说明目比特错误,于是接收该UDP数据报,根据目的端口号交付给进程。否则,直接丢弃。