DNS 域名解析过程

权威 DNS 是特定域名记录(例如"example.com")在域名注册商处所设置的 DNS 服务器,用于特定域名本身的管理(增加、删除、修改等)。权威 DNS 的特点是它只负责自己记录的条目,不会帮请求者查询其他不属于它责任范围的条目

NS 记录就注册权威 DNS,子域名解析可以通过上级域名的 NS 记录进行解析

SOA 记录表示此域名的权威解析服务器地址。 当要查询的域名在所有递归解析服务器中没要域名解析的缓存时,就会回源来请求此域名的SOA记录,也叫权威解析记录

dig(Domain Information Groper)
dig google.com +trace

host/nslookup/dig 命令可以用户查看 DNS 解析
指定 DNS 服务器:dig @localhost -p9999 example.com SOA
(Start of Authority record)

time 可以用来看出命令执行的时间

可能存在缓存:
  • 浏览器缓存:浏览器会按照一定的频率缓存 DNS 记录
  • 操作系统缓存:如果浏览器缓存中找不到需要的 DNS 记录,那就去操作系统中找
  • 路由缓存:路由器也有 DNS 缓存

域名解析总体可分为两大步骤,第一个步骤是本机向本地(不一定是本地)域名服务器发出一个 DNS 请求报文,报文里携带需要查询的域名;第二个步骤是本地域名服务器向本机回应一个 DNS 响应报文,里面包含域名对应的 IP 地址。从下面对 jocent.me 进行域名解析的报文中可明显看出这两大步骤。注意:第二大步骤中采用的是迭代查询,其实是包含了很多小步骤的,详情见下面的流程分析。

其具体的流程可描述如下:

  1. 主机 10.74.36.90 先向本地域名服务器 10.74.1.11 进行递归查询
  2. 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
  3. 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器 dns.me 的IP地址
  4. 本地域名服务器向顶级域名服务器 dns.me 进行查询
  5. 顶级域名服务器 me 告诉本地域名服务器,下一步查询权限服务器 dns.jocent.me 的IP地址
  6. 本地域名服务器向权限服务器 dns.jocent.me 进行查询
  7. 权限服务器 dns.jocent.me 告诉本地域名服务器所查询的主机的IP地址
  8. 本地域名服务器最后把查询结果告诉 10.74.36.90