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)——name和value各是什么,完全取决于type。这是本 tutorial 反复考的点, 详见 Week 04 笔记的 RR 类型表。
二、Figure 1 给的解析流程
题面配图画的是迭代查询(iterative),共 8 条消息:
┌──────────────────┐ |
| # | 方向 | 内容 |
|---|---|---|
| ① | 主机 → 本地 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.com的 IP 是146.54.58.191
为什么必须成对: 只给 NS,你只知道服务器的「名字」,却不知道它的 IP,根本联系不上。 若为了解析这个名字再发一次 DNS 查询,就会陷入死循环。
所以 TLD 把 A 记录一起塞进「附加区(Additional Section)」—— 这条 A 记录的正式名称叫「胶水记录(glue record)」。
⚠️ Q9 的官方答案与题面不符:
| 来源 | A 记录内容 |
|---|---|
题面
PDF(W5-Tutorial-DNS.pdf,2026-08-31 更新) |
dns.enterprise.com,146.54.58.191 |
答案
PDF(W5-Tutorial-DNS-solution.pdf,2026-09-04
更新) |
dns.enterprise.com,146.54.97.79 |
146.54.97.79这个 IP 在题面里根本不存在(题面只有146.54.58.191、142.81.17.206、247.29.18.71三个)。
原因找到了:两份 PDF 来自网站的两次不同随机生成
这道题是从 Kurose 交互题 DNS – Basics 截取的, 而那个网站每次刷新都会重新随机生成 IP 和主机名。 我实际抓了一份,长这样:
(dns.enterprise.com, 146.54.20.201, A) ← 又是另一个 IP |
| 来源 | 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 并收到响应 |
点击链接 |
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 条) |
代入本题(
| 公式 | 代入 | 结果 | 官方 |
|---|---|---|---|
| 508 | ✓ 508 | ||
| 268 | ✓ 268 | ||
| 208 | ✓ 208 |
三条公式的记忆逻辑
| 组成 | 为什么 |
|---|---|
| 基础对象永远 2 个 RTT | 建连 1 个 + 请求响应 1 个,任何情形都躲不掉 |
| 非持久串行:每个引用对象各 2 个 RTT | 每次都要重新建连,且排队进行 |
| 非持久并行:每轮 2 个 RTT | 仍要建连,但同轮内并发,轮数
|
| 持久并行:每轮只要 1 个 RTT | 连接不用重建,只剩请求响应,轮数仍是
|
九、⚠️
本题最容易被推错的一步:
怎么办
本题
Kurose 官方交互题(DNS
and HTTP delays) 给的正是
该题参数:
| 情形 | 轮数 |
计算 | 官方答案 |
|---|---|---|---|
| 非持久·串行 | — | 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 个地方
- DNS 协议答成「UDP」 —— 三选一时官方要 Both
- 数 RR 类型时把重复的 A 记录数两次 —— 问的是类型数不是记录数
- 并行情形忘了「基础对象仍要 2 个 RTT」 —— 并行只作用于引用对象
- DNS 时延误算成
—— 题给的 RTT 本身已是一个来回 - 持久情形直接套「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) |