dig理解DNS的解析过程 - 阿权的书房
关于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 br style='font-size:14px;font-style:normal;font-weight:normal;color:rgb(0, 0, 0);' />;; 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 br style='font-size:14px;font-style:normal;font-weight:normal;color:rgb(0, 0, 0);' />;; 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 私房菜)
dig理解DNS的解析过程 - 阿权的书房的更多相关文章
- dig理解dns主备 - 阿权的书房
dns的解析一般都授权两个以上,防止单点故障. 比如阿权的书房的域名 www.aslibra.com,授权两台ns.aslibra.com 和 ns2.aslibra.com,如果单点故障会怎么样呢? ...
- DNS详细解析过程【转】
转自:http://blog.csdn.net/crazw/article/details/8986504 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baid ...
- 关于百度DNS的解析过程
if现在我用一台电脑,通过ISP接入互联网,那么ISP就会分配给我一个DNS服务器(非权威服务器). now,我的computer向这台ISPDNS发起请求查询www.baidu.com. 首先,IS ...
- DNS的解析过程
1.什么是DNS 在互联网上,唯一标识一台计算机的是IP地址,但是IP地址不方便记忆,通过一个域名对应一个IP地址,来达到找到IP地址的目的,那么DNS就是将域名转换成IP地址的过程. 2.DNS查询 ...
- javascript的解析过程
引言: javascript是一种解释型的脚本语言,它不同于java或者c#这种编译语言,不需要编译成游览器可识别的语言,而是由游览器动态解析和执行的.(本身就是游览器可以直接识别,javascrip ...
- DNS原理及其解析过程【精彩剖析】
DNS原理及其解析过程[精彩剖析] 2012-03-21 17:23:10 标签:dig wireshark bind nslookup dns 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- DNS解析过程详解
先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点 ...
- 使用dig查询dns解析
原文地址:使用dig查询dns解析 作者:chenwenming 一般来说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手. 如果是在debian下的 ...
- DNS解析过程
参考: http://www.maixj.net/ict/dns-chaxun-9208 http://blog.it985.com/8389.html DNS(Domain Name System) ...
随机推荐
- The Unique MST(poj 1679)
题意:求次小生成树,若权值和与最小生成树相等,输出"Not Unique!" :否则,输出mst /* 次小生成树 首先明白一点,次小生成树是由最小生成树改变一条边得来的,然后我们 ...
- python基础——字符串和编码
python基础——字符串和编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用 ...
- 手机 无法转移到SD卡 Andriod 导出应用程序
今天下载了一个应用Meridian,因为是直接从google商店里面装的,因此无法找到SDK,需要从新找到导出方式: 豌豆荚==> 软件和游戏管理==>输入Meridian搜素==> ...
- subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器
[root@NGINX-APACHE-SVN pro]# pwd /var/www/html/svn/pro [root@NGINX-APACHE-SVN pro]# svnadmin dump /v ...
- CSS3 background-size 属性值:cover
当设置值为cover,可以呈现出图片铺满浏览器内容的视觉效果 实例 规定背景图像的尺寸: div { background:url(img_flwr.gif); background-size:80p ...
- hrbustoj 1179:下山(DFS+剪枝)
下山Time Limit: 1000 MS Memory Limit: 65536 KTotal Submit: 271(111 users) Total Accepted: 129(101 user ...
- ytu 2002:C语言实验——单词统计(水题)
C语言实验——单词统计 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 61 Solved: 34[Submit][Status][Web Board] ...
- hdu 2255 二分图最大权匹配 *
题意:说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子.这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房 ...
- DEDECMS教程:上/下一篇文章标题长度的截取方法
对dedecms了解的朋友们,想必对如何获取上一篇.下一篇文章的标签也是非常熟悉.dedecms获取上一篇.下一篇文章的标签分别为:{dede:prenext get='pre'/}.{dede:pr ...
- 解析Cloudera Manager内部结构、功能包括配置文件、目录位置等
转载自 http://www.aboutyun.com/thread-9189-1-1.html 问题导读1.CM的安装目录在什么位置? 2.hadoop配置文件在什么位置? 3.Cloudera m ...