Skip to content

408

计算机网络

CN-05-02 UDP协议


一、定位信息

  • 圈层:核心层
  • 前置知识:需要了解传输层的基本功能(端口号、复用/分用),理解无连接通信的含义
  • 知识网络位置:UDP是传输层两种核心协议之一,位于TCP的对比面。它是许多实时应用(DNS、RTP、DHCP等)的首选传输协议,也是理解TCP可靠机制的参照基准
  • 考点热度等级M级(中频常考)——近5年真题中以选择题形式考查UDP特点和首部格式,偶尔结合DNS/DHCP等应用层协议出题

二、知识点讲解

2.1 UDP概述

UDP(User Datagram Protocol,用户数据报协议)是传输层中最简单的协议,定义在RFC 768中。UDP仅在IP的数据报服务之上增加了复用/分用差错检测两个最基本的功能,因此被形容为"几乎直接使用IP协议"。

UDP的主要特点:

  1. 无连接:发送数据之前不需要建立连接,减少了开销和时延。
  2. 不可靠:尽最大努力交付,不保证数据报能到达目的地,不提供确认、重传、排序机制。
  3. 面向报文:应用层交给UDP多长的报文,UDP就加上首部后直接发送,既不拆分也不合并。这意味着应用层必须选择合适大小的报文——太长会导致IP层分片降低效率,太短会导致首部开销占比过大。
  4. 没有拥塞控制:UDP的发送速率不受网络拥塞状况的影响,适合实时应用。
  5. 支持一对多通信:UDP支持一对一、一对多、多对一和多对多的交互通信。

2.2 UDP首部格式

UDP首部非常简洁,仅由4个字段组成,总长度为8字节

 0               16              31
+--------+--------+--------+--------+
|    源端口号     |   目的端口号     |
+--------+--------+--------+--------+
|     长度        |     校验和       |
+--------+--------+--------+--------+
|              数据(可变长)         |
+--------+--------+--------+--------+

各字段含义:

字段长度说明
源端口号16位发送方进程的端口号,可选(不需要对方回复时可填0)
目的端口号16位接收方进程的端口号,必填
长度16位UDP首部+数据的总长度,最小值为8(仅首部)
校验和16位差错检测码,可选(但实际中通常都使用)

2.3 UDP校验和计算

UDP校验和的计算需要构造一个伪首部(Pseudo Header)。伪首部并不是UDP数据报的真实组成部分,而是在计算校验和时临时添加的,用于验证数据报是否到达了正确的目的主机和正确的协议。

伪首部包含以下信息(来自IP层):

  • 源IP地址(32位)
  • 目的IP地址(32位)
  • 全零(8位)
  • 协议号(8位,UDP为17)
  • UDP长度(16位)

校验和计算步骤:

  1. 将校验和字段置为0
  2. 在UDP数据报前面加上12字节的伪首部
  3. 将数据部分(含伪首部和首部)按16位分组,若总长度为奇数则补零
  4. 对所有16位字进行二进制反码求和
  5. 将结果取反码,填入校验和字段

注意:如果校验和结果恰好为0,则填入全1(0xFFFF),因为全0表示发送方未计算校验和。

2.4 UDP的应用场景

应用层协议使用UDP的原因
DNS请求/响应模式简单,一个报文即可完成,不需要建立连接的开销
DHCP客户端尚无IP地址,无法建立TCP连接
SNMP网络管理信息简短,允许偶尔丢失
RTP(实时传输协议)实时性要求高,不能容忍TCP的重传时延
TFTP简单文件传输,应用层自己实现可靠性

三、记忆与理解辅助

  1. 口诀:"UDP四八首部,源目端口加长度,校验和来兜底;无连接不靠谱,面向报文一把梭"——记住UDP首部4个字段共8字节,以及其无连接、不可靠、面向报文的三大特点。

  2. 对比记忆:UDP的伪首部与IP首部的关系——伪首部中的源/目的IP地址和协议号都是从IP首部"借"来的,目的是让UDP在传输层也能验证网络层的信息。

  3. 数字记忆:UDP首部8字节 vs TCP首部最少20字节,首部开销比约1:2.5,这是UDP效率高的重要原因。

  4. 场景记忆:DNS用UDP(简单查询)、DHCP用UDP(还没IP呢)、RTP用UDP(实时不等重传)——三个典型场景覆盖高频考点。


四、例题与精解

例题1(基础巩固)

题目:关于UDP协议,下列说法错误的是( )。

A. UDP是无连接的,发送数据前不需要建立连接

B. UDP的首部开销为8字节,比TCP小

C. UDP提供拥塞控制机制,能根据网络状况调整发送速率

D. UDP面向报文,对应用层交付的数据既不拆分也不合并

命题意图:考查UDP协议的基本特点,特别是与TCP的区别。

精解

  1. 审题分析:本题要求找出"错误"的说法,需要逐一核对每个选项。

  2. 解题思路:回忆UDP的五大特点——无连接、不可靠、面向报文、无拥塞控制、支持一对多。

  3. 完整步骤

    • A选项:UDP确实是无连接的,发送前无需建立连接。正确
    • B选项:UDP首部固定8字节(源端口+目的端口+长度+校验和各2字节),TCP首部最少20字节。正确
    • C选项:UDP没有拥塞控制机制,发送速率不受网络拥塞影响。这是UDP的重要特点之一。错误
    • D选项:UDP面向报文,应用层交多长就发多长,不拆分不合并。正确
  4. 方法反思:UDP的"无拥塞控制"是一把双刃剑——优点是适合实时应用不会因重传而卡顿,缺点是可能导致网络拥塞加剧。这是408常见的辨析角度。

答案:C


例题2(中等提升)

题目:某UDP数据报的数据部分为100字节,则该数据报的总长度为( )字节,UDP首部中"长度"字段的值为( )。

A. 108, 108

B. 100, 100

C. 108, 100

D. 100, 108

命题意图:考查UDP首部格式中"长度"字段的含义,以及UDP数据报总长度的计算。

精解

  1. 审题分析:需要区分两个概念——UDP数据报的总长度(首部+数据)和"长度"字段的值。关键在于理解"长度"字段的定义。

  2. 解题思路:UDP首部的"长度"字段记录的是UDP首部+数据部分的总长度,而非仅数据部分的长度。

  3. 完整步骤

    • UDP数据部分 = 100字节
    • UDP首部 = 8字节
    • UDP数据报总长度 = 8 + 100 = 108字节
    • "长度"字段记录的值 = 首部 + 数据 = 108
    • 因此总长度为108字节,"长度"字段值也为108。
  4. 方法反思:UDP的"长度"字段定义是常见的考查点。注意与TCP的区分——TCP没有"长度"字段,TCP报文段的长度由IP层的数据报总长度字段间接确定。此外要注意,虽然从数学上看总长度和长度字段值相同,但"总长度"是实际占用的字节数,"长度"字段是首部中存储的数值。

答案:A


五、考情分析

  • 考查频次:近5年408真题中UDP相关题目约出现3~5次
  • 常见题型:以选择题为主,考查UDP特点、首部格式、校验和概念
  • 分值占比:2~4分
  • 命题趋势:近年倾向于将UDP与具体应用层协议(如DNS、DHCP)结合考查,也可能在综合题中与TCP进行对比分析。UDP校验和的伪首部概念是较难的考点,需重点掌握
  • 基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:认为UDP的"长度"字段仅指数据部分的长度

    • 错误原因:直觉上认为"数据报长度"应指有效数据的长度
    • 正确理解/做法:UDP的长度字段 = 首部(8字节)+ 数据部分,是一个包含首部的总长度值。
  2. 错误表现:认为UDP完全不做差错检测

    • 错误原因:因为UDP"不可靠",就认为它什么都不检测
    • 正确理解/做法:UDP有校验和机制,可以检测传输中的差错。检测到错误后直接丢弃,不重传——这就是"不可靠"的含义:能发现错误但不纠正。
  3. 错误表现:认为UDP的伪首部是实际发送的数据的一部分

    • 错误原因:看到"首部"就以为它是报文的一部分
    • 正确理解/做法:伪首部仅在计算校验和时临时构造,不会随UDP数据报一起发送。它是从IP层"借来"的信息,目的是让校验和覆盖更多的验证范围。
  4. 错误表现:认为UDP不适用于任何可靠的通信场景

    • 错误原因:将"UDP不可靠"等同于"UDP不能用于可靠通信"
    • 正确理解/做法:UDP本身不提供可靠性,但应用层可以自行实现可靠性(如TFTP协议就在应用层实现了确认和重传机制)。选择UDP不等于放弃可靠性,只是将可靠性控制权交给了应用层。

七、来源标注

  • 依据2026考研统考大纲·计算机网络部分
  • 依据《计算机网络(第8版)》谢希仁版
  • 依据RFC 768 - User Datagram Protocol

考研全科复习资料 - 基于2026考研统考大纲