COMP5416 Week 05 Tutorial:DNS 与 HTTP 时延(Lab 4 完整解答)

COMP5416 Week 05 Tutorial:DNS and HTML(Lab 4)

课程:COMP5416/COMP4416 — Advanced Network Technologies,Semester 2 2026 文件W5-Tutorial-DNS.pdf(3 页)+ W5-Tutorial-DNS-solution.pdf(4 页,Tutor's version) 本 tutorial 的目标理解 DNS。

⚠️ tutorial 比 lecture 慢一周 —— Week 5 模块里的这份 tutorial 练的是 Week 04 的 DNS, 而不是同周的 Week 05 传输层这个错位在本课程是稳定规律,复习时要按「lecture N ↔︎ tutorial N+1」配对。

本文所有答案已与官方 Tutor's version 逐条核对,两处不一致已单独标出(第三节)。


第一部分:题目给的条件

一、资源记录(RR)分布

TLD DNS 服务器上

名字(name) 值(value) 类型
www.enterprise.com dns.enterprise.com NS
dns.enterprise.com 146.54.58.191 A

enterprise.com 权威(authoritative)DNS 服务器上

名字(name) 值(value) 类型
www.enterprise.com west2.enterprise.com CNAME
west2.enterprise.com 142.81.17.206 A
enterprise.com mail.enterprise.com MX
mail.enterprise.com 247.29.18.71 A

读表要点RR 的通用格式是 (name, value, type, ttl) —— namevalue 各是什么,完全取决于 type。这是本 tutorial 反复考的点, 详见 Week 04 笔记的 RR 类型表

二、Figure 1 给的解析流程

题面配图画的是迭代查询(iterative),共 8 条消息

                      ┌──────────────────┐
│ Root DNS server
└────▲────────┬────┘
② │ │ ③
│ ▼
⑧ ┌──────────────────────────────────┐ ④ ┌──────────────────┐
┌──┤ Local DNS server ├─────▶│ TLD DNS server
│ └──▲──────────────────────────┬─────┘◀─────┤ │
│ ① │ │ ⑥ ⑤ └──────────────────┘
▼ │ ▼
┌─────────────────┐ ┌──────────────────────────┐
│ Requesting host │ │ Authoritative DNS server
127.0.0.1 │ ⑦ │ dns.enterprise.com │
└─────────────────┘ ◀───────┴──────────────────────────┘
# 方向 内容
主机 → 本地 DNS 查询 www.enterprise.com
本地 DNS → 根 查询
根 → 本地 DNS 转介到 TLD.com
本地 DNS → TLD 查询
TLD → 本地 DNS 转介到权威服务器NS + A 两条 RR
本地 DNS → 权威 查询
权威 → 本地 DNS 返回结果
本地 DNS → 主机 返回 IP

注意每一层「问一次、答一次」,本地 DNS 始终是那个跑腿的 —— 这是迭代查询的星形结构。递归查询的消息总数一样是 8 条,但形状是链形, 完整对比见 Week 04 笔记

💡 图里请求主机标的是 127.0.0.1(回环地址),现实中不会这样,当示意即可


第二部分:Exercise 1 —— DNS 概念题(13 小题)

三、逐题解答

# 问题 答案
1 DNS 用什么传输协议:TCP、UDP 还是 Both? Both
2 熟知端口号 53
3 权威服务器上有几种不同类型的 RR? 官方答案:4 种(A、CNAME、NS、MX)
⚠️ 见下方讨论
4 一条报文能带多个问题、拿到多个 RR 答案吗? Yes
5 主机把请求发给哪个 DNS 服务器?(写全名) Local DNS server
6 哪类服务器保存公司的 DNS 记录?(写全名) Authoritative DNS server
7 enterprise.com 的 DNS 服务器叫什么? dns.enterprise.com
8 本地 DNS 联系 TLD 时,返回几条 RR? 2 条(一条 NS + 一条 A
9 其中 A 记录的内容?(name, value 格式) dns.enterprise.com, 146.54.58.191
⚠️ 见下方讨论
10 网站实际托管在 west2.enterprise.com,需要什么记录? CNAME
11 发邮件到 admin@enterprise.com,什么记录同时含域名与邮件服务器名? MX
12 该 MX 记录的内容? enterprise.com, mail.enterprise.com
13 本地 DNS 会像 Web 请求一样利用缓存吗? True

四、逐题展开

Q1:为什么是 Both(最容易答错的一题)

官方原文DNS 一般用 UDP,但在某些情况(如区域传送 zone transfer)会用 TCP,所以答案是 Both。

场景 协议 原因
普通查询/应答 UDP 报文小、无需建连、省一个 RTT
区域传送(zone transfer) TCP 主从服务器间同步整个区域文件,数据量大且必须可靠
应答超过 512 字节 TCP UDP 报文被截断(TC 位置 1),客户端改用 TCP 重试

⚠️ MCQ 陷阱:很多题库把 DNS 的答案写成「UDP」。 本课程的官方答案是 Both —— 遇到「TCP / UDP / Both」三选一时选 Both; 遇到「DNS 主要使用哪种传输协议」时才选 UDP。看清楚问的是「哪些」还是「主要哪个」。

Q3:3 种还是 4 种?(官方答案与题面存在张力)

题面列在权威服务器上的 4 条记录,类型分别是 CNAME、A、MX、A

但官方答案写的是 4 种:A、CNAME、NS、MX。

读法 结果 依据
只数题面「权威服务器上」列出的记录 3 种 NS 记录题面写在 TLD 服务器
数题面出现过的全部类型 4 种 把 TLD 那条 NS 也算进来

三个来源,两个答案

这道题其实源自 Kurose 官方交互题 DNS – Basics (同样的 enterprise.com、同样的 13 个小问、措辞逐字相同)。 查了官方那边之后,情况反而更清楚了

来源 答案
Kurose 交互题的「自动判分标准答案」 3
Kurose 交互题的文字解答 4(写的是 "A, CNAME, NS, and MX")
COMP5416 tutorial 的 Tutor's version 4

也就是说:Kurose 站上自己就前后矛盾 —— 机器判分给 3,文字解答写 4而课程的答案 PDF 抄的正是那段文字解答。

我认为 3 更站得住脚:题面明确把 NS 记录列在 TLD 服务器上, 而问的是权威服务器上有几种。按题面数就是 3 种。 说 4 的理由是「现实中权威服务器也持有自己区域的 NS 记录」—— 这在现实里成立,但题面没把它列出来。

考试怎么办

  • 题干与课程 tutorial 一字不差写 4(跟助教的评分标准走)
  • 题干强调「根据上面列出的记录」写 3
  • 两种理由都要能说出来 —— 这题真正考的是「类型数 ≠ 记录数」(A 出现两次只算一种)

Q8 与 Q9:NS 和 A 为什么成对返回

Q8 答案:2 条。TLD 返回:

  • NS 记录:告诉你 enterprise.com 的域名服务器 dns.enterprise.com
  • A 记录:告诉你 dns.enterprise.comIP 是 146.54.58.191

为什么必须成对只给 NS,你只知道服务器的「名字」,却不知道它的 IP,根本联系不上。 若为了解析这个名字再发一次 DNS 查询,就会陷入死循环

所以 TLD 把 A 记录一起塞进「附加区(Additional Section)」—— 这条 A 记录的正式名称叫「胶水记录(glue record)」。

⚠️ Q9 的官方答案与题面不符

来源 A 记录内容
题面 PDFW5-Tutorial-DNS.pdf,2026-08-31 更新) dns.enterprise.com,146.54.58.191
答案 PDFW5-Tutorial-DNS-solution.pdf,2026-09-04 更新) dns.enterprise.com,146.54.97.79

146.54.97.79 这个 IP 在题面里根本不存在(题面只有 146.54.58.191142.81.17.206247.29.18.71 三个)。

原因找到了:两份 PDF 来自网站的两次不同随机生成

这道题是从 Kurose 交互题 DNS – Basics 截取的, 而那个网站每次刷新都会重新随机生成 IP 和主机名。 我实际抓了一份,长这样:

(dns.enterprise.com,   146.54.20.201,   A)      ← 又是另一个 IP
(www.enterprise.com, west5.enterprise.com, CNAME) ← 主机名也变了(west5 而非 west2)
(mail.enterprise.com, 247.29.157.43, A)
来源 dns.enterprise.com 的 IP CNAME 目标
课程题面 PDF 146.54.58.191 west2
课程答案 PDF 146.54.97.79
我抓到的站上实例 146.54.20.201 west5

结论:老师是分两次从网站上截的图 —— 题面截了一次,答案又截了一次, 两次生成的随机数不一样,于是对不上。 这不是笔误,是取材方式导致的。

所以按你手上的题面作答,即 146.54.58.191 这题真正考的是「A 记录的 name 是服务器域名、value 是它的 IP」这个结构, 具体数字每份卷子都不同,背没有意义。

Q10 与 Q11、Q12:三种记录的分工

需求 记录类型 记录内容
www.enterprise.com 实际由 west2.enterprise.com 提供 CNAME (www.enterprise.com, west2.enterprise.com)
把域名和它的邮件服务器关联起来 MX (enterprise.com, mail.enterprise.com)
mail.enterprise.com 变成可连接的 IP A (mail.enterprise.com, 247.29.18.71)

注意 Q12 只要 MX 记录本身,value 是「邮件服务器的名字」而不是 IP。 要拿到 IP 还得再查一次 A 记录 —— 这就是 MX 与 A 必须配合的原因, 结构上和 Q8 的 NS + A 完全一样:「指名字的记录」永远需要一条 A 记录兜底。

Q4 与 Q13:DNS 的两个效率机制

机制 说明
一条报文多问多答(Q4:Yes) DNS 报文有独立的 Question 段和 Answer 段,都可以放多条,省往返
缓存(Q13:True) 本地 DNS 服务器缓存记录以加快取回TLD 的映射常被缓存,因此根服务器常被绕过

缓存的代价记录过期(TTL 到期)前不会更新,所以换服务器 IP 之前要先把 TTL 调小


第三部分:Exercise 2 —— HTTP 与 DNS 时延计算

五、参数

符号 含义
本地 DNS 缓存的 RTT 3 ms
第二个 DNS 服务器的 RTT 25 ms
本地主机 ↔︎ Web 服务器的 RTT 60 ms

前提IP 未缓存在本地主机,需要 DNS 查询;共访问 2 台 DNS 服务器;忽略传输时间。

⚠️ 注意这里的口径两台 DNS 服务器的 RTT 是「相加」,不是「各乘 2」。 题目给的 本身就是完整的一去一回

六、四种情形逐题推演

Q1:单个对象(148 ms)

为什么基础对象要 2 个

RTT 用途
第 1 个 建立 TCP 连接
第 2 个 发 HTTP GET 并收到响应
点击链接

├─ 3 ms ── 本地 DNS 缓存
├─ 25 ms ─ 第二个 DNS 服务器 ┐ 28 ms
│ ┘
├─ 60 ms ─ TCP 三次握手 ┐
├─ 60 ms ─ HTTP GET + 响应 ┘ 120 ms

收到对象 总计 148 ms

Q2:非持久 HTTP、串行、3 个引用对象(508 ms)

每个引用对象都要重新建一次 TCP 连接,所以各花 2 个 RTT,且一个接一个

Q3:非持久 HTTP、最多 5 条并行连接(268 ms)

关键只有 3 个对象,而并行上限是 5 —— 一轮就全发完了。 每个对象仍各需 2 个 RTT(建连 + 请求),但它们同时进行,所以只计一份

Q4:持久 HTTP + 并行(208 ms)

持久连接省掉的正是「建连」那个 RTT —— TCP 连接在取完基础对象后保持打开,后续请求不再有建连时延

Q5:哪种最快

官方结论持久并行 > 非持久并行 > 非持久串行(速度由快到慢)。

七、四种情形汇总

# 情形 计算 结果 相对最快
1 单对象 148 ms
2 非持久·串行,n=3 508 ms 2.44×
3 非持久·并行(上限 5) 268 ms 1.29×
4 持久·并行 208 ms 1.00×

八、通用公式(背下来,考试直接套)

情形 公式
非持久·串行(n 个引用对象)
非持久·并行(上限 k 条)
持久 + 并行(上限 k 条)

代入本题(、DNS = 28、)验证

公式 代入 结果 官方
508 ✓ 508
268 ✓ 268
208 ✓ 208

三条公式的记忆逻辑

组成 为什么
基础对象永远 2 个 RTT 建连 1 个 + 请求响应 1 个,任何情形都躲不掉
非持久串行:每个引用对象各 2 个 RTT 每次都要重新建连,且排队进行
非持久并行:每轮 2 个 RTT 仍要建连,但同轮内并发,轮数
持久并行:每轮只要 1 个 RTT 连接不用重建,只剩请求响应,轮数仍是

九、⚠️ 本题最容易被推错的一步: 怎么办

本题 ,所有情形都只有一轮,于是持久那一项恰好等于 很容易由此误记成「持久 HTTP 永远只要 3 个 RTT」—— 这是错的。

Kurose 官方交互题DNS and HTTP delays) 给的正是 的版本,答案可以直接检验这一点:

该题参数(DNS 合计 26)、

情形 轮数 计算 官方答案
非持久·串行 862 ms
非持久·并行 2 254 ms
持久 + 并行 2 178 ms

看第三行持久情形下引用对象花了 2 个 ,不是 1 个 —— 因为 10 个对象要分两轮,每轮 1 个 RTT。

官方解答原文说得很明白:先并行取回前 5 个, "Once these first five objects have been retrieved, the remaining embedded objects can be retrieved (in parallel). This second round takes only one more RTT."

所以持久的正确公式是 ,不是恒定的 只有当题目说的是「持久 + 流水线、不限并行连接数」时,才是所有对象共 1 个 RTT(总计 )。


第四部分:本 Tutorial 的考点清单

十、必背结论

考点 结论
DNS 传输协议 Both(常规 UDP,区域传送/大应答 TCP)
DNS 端口 53
主机先问谁 Local DNS server
谁存公司记录 Authoritative DNS server
TLD 转介返回几条 2 条:NS + A(glue record)
一条报文多问多答 可以
本地 DNS 缓存
CNAME 的用途 把对外域名指向实际主机名
MX 的 value 邮件服务器的名字,不是 IP

十一、最容易失分的 4 个地方

  1. DNS 协议答成「UDP」 —— 三选一时官方要 Both
  2. 数 RR 类型时把重复的 A 记录数两次 —— 问的是类型数不是记录数
  3. 并行情形忘了「基础对象仍要 2 个 RTT」 —— 并行只作用于引用对象
  4. DNS 时延误算成 —— 题给的 RTT 本身已是一个来回
  5. 持久情形直接套「1 个 RTT」 —— 时要分 轮(本题 掩盖了这一点)

十二、官方答案的两处问题(复习时留意)

题号 官方答案 题面实际 我的建议
Q3 4 种(含 NS) 权威服务器列出的记录只有 3 种 按 4 答(评分标准 + 现实中权威服务器确有 NS),但要看清题干有无「as listed」限定
Q9 146.54.97.79 题面是 146.54.58.191 按题面答;官方 PDF 沿用了旧题面数字

第五部分:关联笔记

内容 去处
DNS 层级、RR 类型、迭代 vs 递归完整推演 Week 04:DNS 与 P2P
HTTP 持久/非持久、RTT 公式的原始推导 Week 03:应用层
同周的传输层讲义 Week 05:传输层
期中模拟题 20 题模拟卷(Q12、Q13 直接对应本 tutorial)