DNS 查询
查询过程
- 浏览器查询自身的缓存,如 Chrome 缓存为 1 分钟,有就直接用,没有则进行下一步
- 查询操作系统的 DNS 缓存和 host 文件,有就直接用,没有则进行下一步
- 查询本地 DNS 服务器,如 ISP 默认的 DNS 服务器,或者用户自定义的服务器
- DNS 服务器有缓存就直接返回,没有则进行递归式地查询
- 先向 13 个根域名服务器之一发送请求,以获得顶级域名服务器的地址列表
- 再向顶级域名服务器之一发送请求,获得权威域名服务器列表
- 再向权威域名服务器之一发送请求,获得域名对应的真实 IP 地址
递归和迭代查询
- 主机向本地 DNS 服务器查询是递归,即发送一次请求后得到结果;
- 本地 DNS 服务器的查询过程是迭代查询,因为要查询多次,根据每次查询结果再做下一步的查询
常见本地 DNS 服务器
- 114.114.114.114
- 223.5.5.5
- 8.8.8.8
- 119.29.29.29
权威域名服务器
一般是域名注册商那里的服务器,比如在阿里云买了域名,权威域名服务器就在阿里
shell
> nslookup
> set type=ns
> nanote.cn
服务器: public1.alidns.com
Address: 223.5.5.5
非权威应答:
nanote.cn nameserver = dns11.hichina.com
nanote.cn nameserver = dns12.hichina.com
上面的应答是非权威的,如果要获得权威域名服务器的应答,可以按照如下步骤:
shell
> nslookup
> set type=ns
> .
# ip of a.root-servers.net
> server 198.41.04
> cn.
# ip of a.dns.cn
> server 203.119.25.1
> nanote.cn
# ip of dns11.hichina.com
> server 39.96.153.52
> set type=a
> nanote.cn
# 权威应答的 IP 地址
x.x.x.x