共计 1474 个字符,预计需要花费 4 分钟才能阅读完成。
一、概念
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
分级查询就是从根域名开始,依次查询每一级域名的 NS 记录(域名服务器记录),直到查到最终 IP。
从根域名服务器查到顶级域名服务器的 NS、A 记录
从顶级域名服务器查到次级域名服务器的 NS、A 记录
从次级域名服务器查到主机名 IP 地址
目前世界上有 13 组根域名服务器
以下命令可以查看 DNS 整个分级查询的过程
dig +trace www.jianshu.com
第一段展示根域名的所有 NS 记录,也就是所有根域名服务器
第二段展示 com 域名的 NS 记录
第三段展示 jianshu.com 的 NS 记录
第四段展示 www.jianshu.com 主机名
以下命令可以单独查看每一级域名的 NS 记录
dig ns com
参考文献
超清晰的 DNS 原理入门指南
A 记录和 CNAME 记录的区别