Name Resolution (名称解析, 名称查询)
Resolver
相当於是 DNS server 的 client 端,通常是以函式库的方式被放在整套作业系统中,各类的应用程式经由呼叫这个
resolver 函式库可以很容易地向 DNS server 进行查询,得到所要的资料。
Root Name Server
在查询资料时,总是要有一个起点,当一个 local DNS server 收到来自 client 端关於一个 domain
name 的查询,这个 local DNS server 怎麽知道这个 domain name 的相关资料是记录在 INTERNET 中的哪一个 DNS
上呢?
答案是向 root name server 寻问。root name server 记录了各 top domain 分别是由哪些 DNS server
负责。比如说要找 www.yohoo.com 时,root name server 会告诉 local DNS server 哪部 name server
负责 .com 这个 domain,然后 local dns 再向负责 .com 的 name server 询问关於 yohoo.com 是哪部
name server 在负责。最后 local DNS 就可以向负责 .yohoo.com 的 name server 问到有关 www.yohoo.com
的资料。
【备注】考量 root name server 会被全世界的 DNS sever 询问,负担很大,在世界各地共有十多个root
name server。而每个 name server 软体都附有一个文字档(bind ),其中记录了这十多个世界知名的
root name server 的 IP 位址。
Recursive Query
在上面介绍的过程中, DNS client 端只丢出一个询问给 local DNS server, 然后 local
DNS 就会不断地查到答案出来为止, 最后把结果传回来给 client, 这种查询称为 recursive query

上图中 DNS client 端(resolver)向 local DNS server 进行 recursive
query,查 www.ks.edu.tw 的 IP。local DNS server 会由 root name server 开始问起,依序找到负责
.tw domain 的 DNS server,负责 .edu.tw domain 的 DNS server,负责 .ks.edu.tw domain
的 DNS server,最后在负责 .ks.edu.tw 的 DNS server 问到 www.ks.edu.tw 的资料, 然后传回给 DNS
client((resolver)。
Iterative Query
前面的介绍中,local DNS 对其它 DNS 发出的询问,都只是知道一个更进一步的线索,然后发问者(local
DNS)根据线索再去进一步找答案,这种询问方式称为 iterative query
【备注】
a.一般说来,resolver 对 local DNS server 都是 recursive query,而
DNS server 之间的 query 多是iterative。
b.大部份的 DNS server 都可以接受 recursive 和 iterative 两种 query 方式,但是考量负载问题, root name
server 只接受 iterative query。
DNS Caching
由前面的叙述我们可以了解由 resolver 发出一个 query 给 local DNS,到最后 local
DNS 把答案传回来,中间需要许多次的查询,为了节省这些反覆查寻的时间,DNS server 会把查到的结果偷偷暂存一阵子,这麽一来当有其它机器发出相同询问时,就可以省下不少的时间。
举例而言,在一次询问 www.ks.edu.tw 的过程中,local DNS 上可以得知
a. 负责 .tw 的 name server IP
b. 负责 .edu.tw 的 name server IP
c. 负责 .ks.edu.tw 的 name server IP
d. www.ks.edu.tw 的 IP
除了有机器再次查询 www.ks.edu.tw 会变快外,查询和 a、b、c 相关 domain 的资料也会变快,因为 local DNS 不必再从
root name server 一层层问下来。
【备注】当 local DNS 偷偷记下一些资料以便加速时,万一真正的资料有修改时怎麽办呢?DNS server
针对它负责的 domain 资料有一个 TTL(time to leave)叁数,用来告诉其它
DNS 在 cache 其资料时,资料只应该 cache 多久。超过 TTL,那个
cache 就要视为过期无效。
|