🔌 第一章 浏览器生成消息
📄 一句话概括

DNS 服务器按【名字+类别+类型】三件套查记录表,完全匹配才作答——A 记录换 IP、MX 记录换邮件服务器,不匹配不乱猜。

📝 本节和前面几节的关系

1.2 节从应用程序视角看完了查询;本篇视角切到 DNS 服务器——收到查询后它怎么干活。

一、手里一张表

DNS 服务器登记着它负责的域的记录: A 记录=名字对 IP;MX 记录=域对邮件服务器(带优先级)。 同一个名字可以同时挂 A 和 MX,各问各的。

二、完全匹配才答

收到的三件套和某条记录完全一致才作答; 对不上的,按 1.3.3 的接力去问别人,而不是瞎猜一个。

三、动手 Demo:DNS 服务器查表原则

两类记录的登记与回答对照:

print('%-18s %-34s %s' % ('类型','登记的是','回答的是'))
print('%-18s %-34s %s' % ('A','www.lab.glb.com = 172.20.1.1','IP'))
print('%-18s %-34s %s' % ('MX','@lab.glb.com -> mail...(10)','邮件服务器'))

实跑输出:

--------------------------------------------------------------------
DNS 服务器查表原则
--------------------------------------------------------------------
  DNS 服务器收到的三件套和它手里的表:

  查到的记录(类型)     表里登记的是                             回答的是
  ------------------------------------------------------------------------------------
  A                      www.lab.glb.com = 172.20.1.1             IP
  MX                     @lab.glb.com -> mail.lab.glb.com(10)     邮件服务器 + 优先级
  ------------------------------------------------------------------------------------

  同一个名字可以同时挂 A 和 MX 两条记录——
  查网页和寄邮件各问各的,互不干扰。

  服务器怎么答,全看【名字 + 类别 + 类型】三件套
  是否和某条记录完全匹配——不匹配不乱猜。

MX 括号里的 10 是优先级——同域多台邮件服务器时, 数字小的先试;这是教材后文邮件章的伏笔。

30 秒实验

  1. 用 nslookup -type=a 和 -type=mx 查同一个域,对比返回。
  2. 查一个不存在的子域,看 DNS 怎么答(NXDOMAIN)。
  3. 想想为什么 DNS 服务器【不猜】——猜错的代价由谁付?

常见误区

  1. 以为 DNS 会模糊匹配——必须三件套完全一致。
  2. 以为一个名字只能有一种记录——A、MX、CNAME 可并存。
自测三问(点开对答案) 1. DNS 服务器作答的匹配条件是什么? —— 名字、类别、类型三件套完全匹配。 2. MX 记录返回的额外信息是什么? —— 优先级(数字小的先试)。 3. 对不上的查询怎么办? —— 走接力去问别的服务器,不乱猜。

相关笔记