🔌 第二章 用电信号传输TCP/IP数据
📄 一句话概括

控制消息(DNS 查询、DHCP 分配等)天然适合 UDP:一个包装得下、来去一趟、丢了下次自然补。

📝 本节和前面几节的关系

2.6.1 立了取舍原则;本篇看哪些业务踩中它。

一、两个代表

DNS 查询:一问一答各一包; DHCP:分配地址的广播协商,客户端此时连 IP 都没有, TCP 无从谈起——UDP 广播是唯一解。

二、判断口诀

一包装得下+丢了可重试+不需要连接=UDP; 任何一条不满足=TCP。

三、动手 Demo:控制用的短数据

适合 UDP 的三个理由:

for s in ['1. 消息短——一个包装得下',
          '2. 来回少——省去连接/断开开销',
          '3. 丢了就丢了——下一次查询自然补上']:
    print(s)

实跑输出:

--------------------------------------------------------------------
控制用的短数据
--------------------------------------------------------------------
  控制消息走 UDP 的三个理由:

  1. 消息短——一个包装得下,无需拆分对账
  2. 来回少——省去连接/断开的开销
  3. 丢了就丢了——下一次查询自然补上

  教材点名两例:DNS 查询、DHCP 分配。

DHCP 那条最有说服力:设备刚连网时连 IP 都没有, TCP 三次握手根本没法开始。

30 秒实验

  1. 用 Wireshark 过滤 udp.port==53 看一次 DNS 查询。
  2. 想想 NTP 对时为什么用 UDP。
  3. 举一个【看似适合 UDP 其实必须 TCP】的场景。

常见误区

  1. 以为 UDP 只能干杂活——QUIC 证明了它的大用。
  2. 以为控制消息丢了没关系——协议里通常有重试设计。
自测三问(点开对答案) 1. DHCP 为什么必须 UDP? —— 客户端还没有 IP,无法建 TCP。 2. 选 UDP 的口诀是什么? —— 装得下+可重试+不需要连接。 3. DNS 与 DHCP 分别做什么? —— 域名解析;自动分配网络配置。

相关笔记