DNS 域名解析过程

Tags
webhttpdevops
Created
Feb 11, 2018 5:45 AM

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

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

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

dig(Domain Information Groper)

https://phoenixnap.com/kb/linux-dig-command-examples

dig google.com +trace

host/nslookup/dig 命令可以用户查看 DNS 解析

指定 DNS 服务器:dig @localhost -p9999 example.com SOA

(Start of Authority record)

https://www.dotcom-tools.com/DNS-lookup-tools.aspx

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

可能存在缓存:

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

https://jocent.me/2017/06/18/dns-protocol-principle.html

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

image

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

  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
image
SuperMade with Super