摘要

  • 在 Geoff Huston 的 2024 年 6 月 APNIC Labs 实验中,394,766,935 个测试点里有 10,555,279 个在收到标记为截断的 UDP 答复后没有以 TCP 追问,占 2.67%。
  • 另一个异常规模小得多:在附带完整答案且设置截断标志的 197,173,501 次测试中,96,401 次似乎直接用了那份本该丢弃的答案,约占该组的 0.05%。

DNS 的截断标志像一块写着“此路未通,改走 TCP”的牌子。按 RFC 2181,客户端应舍弃这份答复,采用能容纳更大响应的机制重新查询,通常是 TCP。牌子写得明白,车流却不一定照办。Huston 想数的,正是这个差距。

他与 APNIC Labs 设计了一个没有附带地址记录的委派实验:解析器必须取得被委派名称服务器的地址,网页请求才能继续。权威服务器在 UDP 回复中设置 TC 截断位;一半实验回复虽标记截断仍给出完整答案,另一半不给答案。团队由此观察解析器会不会改用 TCP,也能区分直接接受带标志答案的行为。这是特定解析路径的测试,不是全球每台解析器的体检报告。

在六月的复测中,团队记录了 394,766,935 个测试点。收到“完整答案加 TC 标志”的那组共有 197,173,501 次,其中 96,401 次未见 TCP 重查却抵达目标,约为该组的 0.05%。更大的缺口是全体测试中的 10,555,279 次:截断 UDP 回复之后没有 TCP 查询,比例为 2.67%。在协议纸面上,退路一直开着;在这些包的行程里,退路根本没被走上。

平均数还掩住了局部的坑。Huston 发现某些网络组在测试中的无 TCP 追问率超过 90%。但大型递归解析服务往往是一群设备协同工作,抓包不能把责任扣到某台机器,也不能宣称该网络每个用户都遭遇同样故障。二月先前测试的样本和结果又不同,不能把两轮数字拼成一张成绩单。

这篇人物稿的主角不是一个抽象的“DNS 问题”。Huston 做的事,是把协议最容易被想当然的一步变成可观察的动作:退路有没有真的被走过。一个标准能规定转弯,实际转弯还得靠在线运行的解析器。