关于DNS的常识,可以阅读附录的一些参考资料。
本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.
测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com。

[root@localhost ~]# dig www.aslibra.com

; <<>> DiG 9.2.4 <<>> www.aslibra.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25746
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6

;; QUESTION SECTION:
;www.aslibra.com.               IN      A

;; ANSWER SECTION:
www.aslibra.com.        900     IN      A       222.76.215.25

;; AUTHORITY SECTION:
aslibra.com.            33024   IN      NS      k8.hkidc.com.
aslibra.com.            33024   IN      NS      b.hkidc.com.
aslibra.com.            33024   IN      NS      j6.hkidc.com.
aslibra.com.            33024   IN      NS      ns8.hkidc.com.
aslibra.com.            33024   IN      NS      ns5.hkidc.com.
aslibra.com.            33024   IN      NS      a.hkidc.com.

;; ADDITIONAL SECTION:
k8.hkidc.com.           55596   IN      A       125.65.112.32
b.hkidc.com.            53594   IN      A       221.122.64.81
j6.hkidc.com.           54375   IN      A       222.76.219.74
ns8.hkidc.com.          53598   IN      A       221.122.64.81
ns5.hkidc.com.          55596   IN      A       222.76.219.81
a.hkidc.com.            53594   IN      A       125.65.112.32

;; Query time: 71 msec
;; SERVER: 211.99.25.1#53(211.99.25.1)
;; WHEN: Mon Jun  1 12:05:17 2009
;; MSG SIZE  rcvd: 268


如何理解上面的意思?

QUESTION SECTION:查询的内容
ANSWER SECTION:相应的内容,一般会得到至少一条A记录,否则就还没定义
AUTHORITY SECTION:授权信息
ADDITIONAL SECTION:每个授权服务器的IP地址
SERVER:查询的dns服务器,可能会被缓存

过程大体是:
1 从SERVER查询www.aslibra.com,如果有有效缓存就返回了
2 如果没有,则找到aslibra.com的授权服务器,下面有例子介绍
3 从其中一个查询到结果(A记录)

我们来看看更加具体的解析过程

“dig www.aslibra.com +trace”可以查看到更加具体的解析过程,阿权的书房比较小,没有那么复杂。
我们用一个大点的网站看看,比如 www.163.com。

先看看不加trace的情况得到什么:
[root@localhost ~]# dig www.163.com

; <<>> DiG 9.2.4 <<>> www.163.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46550
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.163.com.                   IN      A

;; ANSWER SECTION:
www.163.com.            51561   IN      CNAME   www.cache.gslb.netease.com.
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.16
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.17
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.18
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.9
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.10
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.11
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.12
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.13
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.14
www.cache.gslb.netease.com. 1604 IN     A       61.135.253.15

;; AUTHORITY SECTION:
gslb.netease.com.       1604    IN      NS      gslb1.netease.com.
gslb.netease.com.       1604    IN      NS      gslb2.netease.com.

;; ADDITIONAL SECTION:
gslb1.netease.com.      15896   IN      A       61.135.255.143
gslb2.netease.com.      15900   IN      A       220.181.28.168

;; Query time: 56 msec
;; SERVER: 211.99.25.1#53(211.99.25.1)
;; WHEN: Mon Jun  1 12:29:51 2009
;; MSG SIZE  rcvd: 298


ANSWER SECTION告诉你:
www.163.com做了别名到www.cache.gslb.netease.com
而www.cache.gslb.netease.com有这么一系列机器(A记录),你可以随便挑一个访问。

我们看看加上trace后是什么信息:

[root@localhost ~]# dig www.163.com +trace

; <<>> DiG 9.2.4 <<>> www.163.com +trace
;; global options:  printcmd
.                       223628  IN      NS      e.root-servers.net.
.                       223628  IN      NS      f.root-servers.net.
.                       223628  IN      NS      g.root-servers.net.
.                       223628  IN      NS      h.root-servers.net.
.                       223628  IN      NS      i.root-servers.net.
.                       223628  IN      NS      j.root-servers.net.
.                       223628  IN      NS      k.root-servers.net.
.                       223628  IN      NS      l.root-servers.net.
.                       223628  IN      NS      m.root-servers.net.
.                       223628  IN      NS      a.root-servers.net.
.                       223628  IN      NS      b.root-servers.net.
.                       223628  IN      NS      c.root-servers.net.
.                       223628  IN      NS      d.root-servers.net.
;; Received 512 bytes from 211.99.25.1#53(211.99.25.1) in 65 ms

com.                    172800  IN      NS      A.GTLD-SERVERS.NET.
com.                    172800  IN      NS      B.GTLD-SERVERS.NET.
com.                    172800  IN      NS      M.GTLD-SERVERS.NET.
com.                    172800  IN      NS      F.GTLD-SERVERS.NET.
com.                    172800  IN      NS      E.GTLD-SERVERS.NET.
com.                    172800  IN      NS      D.GTLD-SERVERS.NET.
com.                    172800  IN      NS      C.GTLD-SERVERS.NET.
com.                    172800  IN      NS      H.GTLD-SERVERS.NET.
com.                    172800  IN      NS      L.GTLD-SERVERS.NET.
com.                    172800  IN      NS      I.GTLD-SERVERS.NET.
com.                    172800  IN      NS      K.GTLD-SERVERS.NET.
com.                    172800  IN      NS      J.GTLD-SERVERS.NET.
com.                    172800  IN      NS      G.GTLD-SERVERS.NET.
;; Received 501 bytes from 192.203.230.10#53(e.root-servers.net) in 212 ms

163.com.                172800  IN      NS      ns3.nease.net.
163.com.                172800  IN      NS      ns4.nease.net.
;; Received 106 bytes from 192.5.6.30#53(A.GTLD-SERVERS.NET) in 293 ms

www.163.com.            86400   IN      CNAME   www.cache.gslb.netease.com.
gslb.netease.com.       18000   IN      NS      gslb1.netease.com.
gslb.netease.com.       18000   IN      NS      gslb2.netease.com.
;; Received 138 bytes from 61.135.255.138#53(ns4.nease.net) in 47 ms


这里的过程有点复杂,但其实很好理解,也很重要的内容,需要琢磨清楚。
要明白,域名都是按等级授权的,比如把www.163.com. 拆分一下:
. 分配 com. ,com. 分配 163.com. ,163.com. 分配 www.163.com. 。
根服务器列表是在域名服务器上都有一份的,文档是一样的,文件可以下载
域名都是从“.”开始授权,域名根服务器是 (a-m).root-servers.net.这系列服务器分配授权
.com .cn .net各种域名都从这里开始分配授权,比如 .com 授权给 (A-G).GTLD-SERVERS.NET.
(尝试做一下 dig www.163.org +trace,就会发现 .org 是分配给 a0.org.afilias-nst.info.等服务器 了)
这批服务器又授权 163.com给另外的机器
163.com.                172800  IN      NS      ns3.nease.net.
163.com.                172800  IN      NS      ns4.nease.net.

于是查询www是哪个ip就落到了ns3.nease.net.和ns4.nease.net.上,他们给的答案是:
www.163.com.            86400   IN      CNAME   www.cache.gslb.netease.com.
然后没戏了,没有给出IP,还没有答案,当然了,别名就要重新查询了,我们继续查询。

我们trace检查www.cache.gslb.netease.com. :

[root@localhost ~]# dig www.cache.gslb.netease.com. +trace

; <<>> DiG 9.2.4 <<>> www.cache.gslb.netease.com. +trace
...(省略和上面查询一样的信息)
netease.com.            172800  IN      NS      ns3.nease.net.
netease.com.            172800  IN      NS      ns4.nease.net.
;; Received 121 bytes from 192.12.94.30#53(E.GTLD-SERVERS.NET) in 468 ms

gslb.netease.com.       18000   IN      NS      gslb1.netease.com.
gslb.netease.com.       18000   IN      NS      gslb2.netease.com.
;; Received 116 bytes from 61.135.255.138#53(ns4.nease.net) in 44 ms

www.cache.gslb.netease.com. 1800 IN     A       220.181.28.53
www.cache.gslb.netease.com. 1800 IN     A       220.181.28.54
www.cache.gslb.netease.com. 1800 IN     A       220.181.28.212
www.cache.gslb.netease.com. 1800 IN     A       220.181.28.50
www.cache.gslb.netease.com. 1800 IN     A       220.181.28.51
www.cache.gslb.netease.com. 1800 IN     A       220.181.28.52
gslb.netease.com.       1800    IN      NS      gslb2.netease.com.
gslb.netease.com.       1800    IN      NS      gslb1.netease.com.
;; Received 180 bytes from 61.135.255.143#53(gslb1.netease.com) in 20 ms


gslb.netease.com. 的解析权给了 gslb1.netease.com.
最终给出了 www.cache.gslb.netease.com. 的一系列A记录,解析就算完成了。

使用dig命令我们甚至可以给163.com画一个他们的域名分布图了 :) ,结合下图应该很容易理解:

点击在新窗口中浏览此图片

小结一下:

1 DNS服务器会按等级授权给别的服务器解析域名
2 指定的是NS记录,同时会有该NS记录的域名的A记录指定
3 别名方式会再继续查询,一般本dns服务器不处理cdn应该可以别名到cdn功能的服务器处理
4 你可以方便的用dig检查dns服务器分配情况

引用
DNS的工作原理及过程分下面几个步骤:

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。



参考资料:

1 dig 命令详解(转载)
2 DNS 伺服器(鳥哥的 Linux 私房菜)



原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: ,
DNS Lookup Online Homepage
2018/11/20 11:50
推荐大家一个DNS在线查询网站 https://dnslookup.online
DiG GUI Homepage Email
2018/02/06 15:38
DiG GUI - dig命令网页接口,挖掘DNS的秘密。https://www.diggui.com/
2011/05/19 17:43
没明白什么意思,有点乱。。。
hqlulu 回复于 2011/05/19 22:42
如果你可以运行dig命令,应该容易理解
可以试试这个windows下的dig命令 http://baiqiuyi.com/windows/dig-for-windows.html
DNS
2010/07/20 11:22
看了这个文章, 有点懂了. 不过不知道这样的情况, 解析过程是如何的?两个分属于不同管理机构的域名: a.net 和 a.org分别注册了DNS服务器: ns.a.net 和 ns.a.org而我设置a.net 的DNS服务器为: ns.a.orga.org 的DNS服务器设置为: ns.a.net那整个解析过程是怎么样的? ns.a.net 这个DNS地址的IP地址,是谁负责告诉给客户端的?
hqlulu 回复于 2010/07/20 18:21
这个的确比较奇特,但如果解析不出ip,循环多次后会自动停止的,提示失败
有时候你试试 dig +trace 某些域名,会提示循环太多,失败
分页: 1/1 第一页 1 最后页
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐