一、概念

DNS:根据域名查询IP地址,就像一个巨大的电话本

二、查询过程

dig 可以查看整个查询过程,会展示四段信息

   dig www.jianshu.com

; <<>> DiG 9.10.6 <<>> www.jianshu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51370
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

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

;; ANSWER SECTION:
www.jianshu.com.    30    IN    CNAME    www.jianshu.com.wswebpic.com.
www.jianshu.com.wswebpic.com. 30 IN    A    114.236.90.115
www.jianshu.com.wswebpic.com. 30 IN    A    61.147.227.44

;; Query time: 15 msec
;; SERVER: 223.5.5.5#53(223.5.5.5)
;; WHEN: Wed Jan 23 14:47:02 CST 2019
;; MSG SIZE  rcvd: 104

第一段是查询参数与统计
第二段是查询内容,A是address的缩写
第三段DNS服务器的答复,A记录是用来指定域名对应的ip地址,CNAME记录是别名记录,允许多个名字映射到同一个域名。30指缓存时间,30秒内不用重新查询

  • A记录把一个域名解析到一个IP地址,CNAME把域名解析到另一个域名,这个别名也要做A记录的。但是使用CNAME记录可以更方便的变更IP,比如一台服务器有100个网站,他们都做了别名,服务器变更IP时,只需要变更别名的A记录就好了。

第四段是DNS服务器的一些传输信息,本机DNS服务器是223.5.5.5

如果不想看到太多信息,可以用以下命令

    dig +short www.jianshu.com

三、DNS服务器

比较有名的DNS服务器是

  • Google的8.8.8.8
  • 阿里云的114.114.114.114
  • 阿里云的223.5.5.5

dig命令有个@参数,指定某个DNS服务器

    dig @114.114.114.114 www.jianshu.com

四、域名分级查询

上面可以看出每个域名后面都多了个 .
域名www.jianshu.com 显示为www.jianshu.com.。这是因为每个域名尾部都有一个根域名.root,一般忽略不写。以下是域名层级结构
evernotecid://2CF3738D-BAB2-47DD-9C0D-169A9D334A90/appyinxiangcom/13231804/ENResource/p288
clipboard.png

分级查询就是从根域名开始,依次查询每一级域名的NS记录(域名服务器记录),直到查到最终IP。

  1. 从根域名服务器查到顶级域名服务器的NS、A记录
  2. 从顶级域名服务器查到次级域名服务器的NS、A记录
  3. 从次级域名服务器查到主机名IP地址

目前世界上有13组根域名服务器

以下命令可以查看DNS整个分级查询的过程

    dig +trace www.jianshu.com

clipboard.png
第一段展示根域名的所有NS记录,也就是所有根域名服务器

clipboard.png
第二段展示com域名的NS记录

clipboard.png
第三段展示jianshu.com的NS记录

clipboard.png
第四段展示www.jianshu.com主机名

以下命令可以单独查看每一级域名的NS记录

    dig ns com

图片描述

参考文献
  1. 超清晰的DNS原理入门指南
  2. A记录和CNAME记录的区别

小小聪
222 声望13 粉丝