解析过程就是一个 根服务器 -> TLD 服务器 -> 权威服务器 多层 Referral(转介)的过程,每一层只对自己范围内的事情提供答案,范围之外就告诉你下一步找谁。
比如本站域名 www.markjour.com 是这样解析的:
PS:完整域名(FQDN)实际上以根域 . 结尾,只是平时通常省略。
当浏览器访问 https://www.markjour.com 时,实质是要获取 www.markjour.com 的 A/AAAA 记录,也就是真实 IP。
DNS 查询过程大致如下:
- 查询本地 DNS 缓存,有缓存就直接返回,否则就继续下一步。
- 操作系统根据 DNS 配置发起请求
DNS 配置一般来自 DHCP,部分时候是手动配置的。
可能是电信运营商管理的 ISP DNS,也可能是企业内部 DNS,也可能是一些 Public DNS,比如:谷歌 DNS 8.8.8.8 / Cloudflare DNS 1.1.1.1 / 阿里 DNS 223.5.5.5
在专业术语中,叫做 Recursive Server
- 如果 DNS 服务器有缓存就直接返回,否则就继续下一步。
- 查询 Root Server 获取 TLD Server (.com)
- 查询 TLD Server 获取 markjour.com 权威 DNS Server
权威 DNS 负责自己权限范围内所有域名的解释权 - 查询权威 DNS Server 获取 A/AAAA 记录
实验
-> % dig +trace www.markjour.com
// 这一部分就是获取到的 Root Server 信息:
; <<>> DiG 9.20.18-1ubuntu2.1-Ubuntu <<>> +trace www.markjour.com
;; global options: +cmd
. 17495 IN NS a.root-servers.net.
. 17495 IN NS b.root-servers.net.
. 17495 IN NS c.root-servers.net.
. 17495 IN NS d.root-servers.net.
. 17495 IN NS e.root-servers.net.
. 17495 IN NS f.root-servers.net.
. 17495 IN NS g.root-servers.net.
. 17495 IN NS h.root-servers.net.
. 17495 IN NS i.root-servers.net.
. 17495 IN NS j.root-servers.net.
. 17495 IN NS k.root-servers.net.
. 17495 IN NS l.root-servers.net.
. 17495 IN NS m.root-servers.net.
;; Received 228 bytes from 127.0.0.53#53(127.0.0.53) in 7 ms
// 这一部分就是从 g.root-servers.net 这个 Root Server 获取到的 TLD Server 信息:
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 86400 IN DS 19718 13 2 8ACBB0CD28F41250A80A491389424D341522D946B0DA0C0291F2D3D7 71D7805A
com. 86400 IN RRSIG DS 8 1 86400 20260621210000 20260608200000 54393 . UjqH/UCYHIRrwicZi/pcCK30TVrAgsC+7uulzN017Cx7wYhrIi/FGBOb ITirp5yX7QBpZVhk9cJK8ngs186YXRHAAN6M4MCXVjEpPYiJAiz42i2C c1EyL0hcLh8YO18RDftRRl/mbWlIlbmzIEWPgliL+vJ+F/RPwN+pqXY4 D6+0LCShkYEP4q2Ehg7KYXdAw6R5vZfE8Ft9c5u+mKvfJ3VuPm47Aiui bO0YIVSGHSpLYqR5RlbL+MUXO27XhtEIPpek+39Lb30PvBf1L29XyNM7 8UQwOirF5cf7emdS6/Io3+LYPgOEvK/gYz5yj+I5AgqCS081dDI/GYOp R5IkVA==
;; Received 1176 bytes from 2001:503:ba3e::2:30#53(a.root-servers.net) in 80 ms
// 这一部分就是从 c.gtld-servers.net 这个 TLD Server 获取到的权威 DNS 信息
markjour.com. 172800 IN NS dns9.hichina.com.
markjour.com. 172800 IN NS dns10.hichina.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 900 IN NSEC3 1 1 0 - CK0Q3UDG8CEKKAE7RUKPGCT1DVSSH8LL NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 900 IN RRSIG NSEC3 13 2 900 20260615002617 20260607231617 27677 com. 0RyZhGOrdThy3iJhbVqUAWQZT/9aqS1DyOoXobpP3hHbsNjfTebNKpbd PL5oulukqLzYS8yKRblopbXgQqn2Yw==
FUOV0O7294OB4JDT3EPLSMFOL9C3C4U0.com. 900 IN NSEC3 1 1 0 - FUOVGFN8SUDNBP247SLT394CISB7QH30 NS DS RRSIG
FUOV0O7294OB4JDT3EPLSMFOL9C3C4U0.com. 900 IN RRSIG NSEC3 13 2 900 20260613004115 20260605233115 27677 com. mg23BCL6+Z0ueDDVefU42wGWlS73Y7q2wdbZj9D334/mLTFtaeLrz7Lx qYiK7/YS6xUKPKu6hpOCr4ckONs4cw==
;; Received 761 bytes from 192.5.6.30#53(a.gtld-servers.net) in 382 ms
// 这一部分就是权威 DNS 返回的 A 记录:
www.markjour.com. 600 IN A 121.42.82.115
;; Received 61 bytes from 120.76.107.52#53(dns9.hichina.com) in 27 ms