本文中使用的命令均在Linux环境下,Windows环境可能略有不同本文只对域名解析进行简单的介绍,面向非专业人士,并未深入研究,仅供参考

  Dig+trace

域名是如何解析的,解析的过程介绍20240823更新

  前几天我增加了一个小工具:Dig+trace域名查询工具,可用于域名解析诊断,今天顺便同大家分享一下域名解析的过程,一起探究一下域名解析的原理,什么是域名我相信各位看官已经不用介绍了,我们直接从域名解析过程开始。

  首先,计算机拿到用户输入的域名以后会去查询一个服务器,那就是咱们电脑中设置的DNS服务器,DNS是指 Domain Name System,每个运营商都会提供一个DNS服务器来供用户解析域名,本文不讲DNS的原理,只讲域名的解析过程,所以直接看解析的过程。

  以 www.renfei.net 为例,以英文点“.”为界限,会被分为以下几个部分:

  .:根

  net.:顶级域名

  renfei.net.;一级域名

  www.renfei.net.:二级域名

  解析过程:

  ; <<>> DiG 9.10.6 <<>> www.renfei.net +trace

  ;; global options: +cmd

  . 1454 IN NS a.root-servers.net.

  . 1454 IN NS b.root-servers.net.

  . 1454 IN NS c.root-servers.net.

  . 1454 IN NS d.root-servers.net.

  . 1454 IN NS e.root-servers.net.

  . 1454 IN NS f.root-servers.net.

  . 1454 IN NS g.root-servers.net.

  . 1454 IN NS h.root-servers.net.

  . 1454 IN NS i.root-servers.net.

  . 1454 IN NS j.root-servers.net.

  . 1454 IN NS k.root-servers.net.

  . 1454 IN NS l.root-servers.net.

  . 1454 IN NS m.root-servers.net.

  ;; Received 239 bytes from 192.168.3.1#53(192.168.3.1) in 2181 ms

  net. 172800 IN NS j.gtld-servers.net.

  net. 172800 IN NS k.gtld-servers.net.

  net. 172800 IN NS f.gtld-servers.net.

  net. 172800 IN NS a.gtld-servers.net.

  net. 172800 IN NS i.gtld-servers.net.

  net. 172800 IN NS g.gtld-servers.net.

  net. 172800 IN NS h.gtld-servers.net.

  net. 172800 IN NS l.gtld-servers.net.

  net. 172800 IN NS m.gtld-servers.net.

  net. 172800 IN NS d.gtld-servers.net.

  net. 172800 IN NS c.gtld-servers.net.

  net. 172800 IN NS e.gtld-servers.net.

  net. 172800 IN NS b.gtld-servers.net.

  net. 86400 IN DS 35886 8 2 7862B27F5F516EBE19680444D4CE5E762981931842C465F00236401D 8BD973EE

  net. 86400 IN RRSIG DS 8 1 86400 20190921050000 20190908040000 59944 . U67D4A1ac4cMhMsLOfaOVPYUOXvFr0++r1oYMt1o2m+j/XV3pXktCOGG tH+eBNlbMsiSGmD9mKeJ+2Rp87gVm4vLO6tDMiqS9YRp7Z5IsojcdqUL C6MnXYoQGSv9QuJhKG2mJKaJiYqK4REjZRqWo+UbnpTw200UZrLHw2pe 8/S8LsxWLOR/g9vAma22hj36McHjakbBIIRUE3CMkOwn9tIfYVwBqpnO ssETDNElvF0ZqM1NDzi9ryA5ftmZDWvBMvog6xWsAAFGikEIyTpiGV83 HV9CyLyIouDD1dpVKzh7bK4AdkHfQ5BNNR01FNnAfQWw6DwKGnXHwV1Q SMLB4A==

  ;; Received 1171 bytes from 192.5.5.241#53(f.root-servers.net) in 5 ms

  renfei.net. 172800 IN NS elsa.ns.cloudflare.com.

  renfei.net. 172800 IN NS ian.ns.cloudflare.com.

  renfei.net. 172800 IN NS jack.ns.cloudflare.com.

  renfei.net. 172800 IN NS kim.ns.cloudflare.com.

  renfei.net. 172800 IN NS lee.ns.cloudflare.com.

  renfei.net. 172800 IN NS todd.ns.cloudflare.com.

  renfei.net. 172800 IN NS tom.ns.cloudflare.com.

  renfei.net. 172800 IN NS will.ns.cloudflare.com.

  renfei.net. 172800 IN NS coco.ns.cloudflare.com.

  renfei.net. 172800 IN NS mary.ns.cloudflare.com.

  renfei.net. 172800 IN NS albert.ns.cloudflare.com.

  renfei.net. 172800 IN NS peyton.ns.cloudflare.com.

  renfei.net. 172800 IN NS robin.ns.cloudflare.com.

  renfei.net. 86400 IN DS 2371 13 2 AB869C32F05DF68F733BC57F2B5993A5CD00566A6C4CAD102A9CD36C 3F9A2F9A

  renfei.net. 86400 IN RRSIG DS 8 2 86400 20190912095909 20190905084909 59540 net. E5YYPNXrbiCLEj/yQY1BjylrPMdhKj2r60GM6xExVjpyBGMA6cshXhZT wHsEtgEHMoXRCLw9zMREM37vzeDIGUP2VkiIQkM57BzPQutoOyqB/Eyf 32DNnT956MD+De7sFZB8qcpHDNTYNf7qr0pN2w3f4pl8RSzjEW0iNe+s ffsJ4iVUJ1LQ++q1kDlucghh7sab54VduGjaE5LWyEQPAA==

  ;; Received 551 bytes from 2001:502:1ca1::30#53(e.gtld-servers.net) in 201 ms

  www.renfei.net. 43200 IN A 104.18.60.69

  www.renfei.net. 43200 IN RRSIG A 13 3 43200 20190909122105 20190907102105 34505 renfei.net. yAj+eHswgX/Ltevl3iHhYZTD5jKG742yVltIoX3KilobjWz2mHjY/dPw iWGPt381JqwGWXuG+Yo/70n4MpsZ/A==

  ;; Received 191 bytes from 173.245.59.118#53(ian.ns.cloudflare.com) in 199 ms

  我们根据 Dig+trace 的解析跟踪会看到,先查询了 . 根的 NS 记录,NS 就是 NameServer,根域名服务器是规定死的,一共13台服务器,分别是a、b、c、d、e、f、g、h、i、j、k、l、m,由于早期的 DNS 查询结果是一个512字节的 UDP 数据包。这个包最多可以容纳13个服务器的地址,因此就规定全世界有13个根域名服务器,编号从a.root-servers.net一直到m.root-servers.net。

  在获得13个根服务器后,随机挑选一个

  上面的过程拿到根域名服务器地址以后,就会去询问根服务器,net. 的 NS 记录是什么?这时候我们看到 f.root-servers.net 进行了应答,耗时 5ms,又拿到了 从a.gtld-servers.net一直到m.gtld-servers.net 的服务器

  上面的过程拿到net.域名服务器地址以后,就会去询问net.服务器,renfei.net. 的 NS 记录是什么?这时候我们看到 e.gtld-servers.net 进行了应答,耗时 201ms,拿到了一组 NS 服务器,因为到 renfei.net. 这一级,已经是用户注册的域名了,所以我们可以自定义自己的 NS 服务器

  上面的过程拿到renfei.net.域名服务器地址以后,就会去询问renfei.net.服务器,www.renfei.net. 的解析记录是什么?这时候我们看到 ian.ns.cloudflare.com 进行了应答,回复了一条 A 记录,值是 104.18.60.69,这样我们就拿到了最终的 IP 地址,解析过程结束

  这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。

  1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

  所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。

  2010年3月16日前,中国大陆有F、I、J这3个根域DNS镜像,但因为某些不和谐原因,中国大陆境内的I根域镜像曾被撤销路由通告。现今,中国大陆境内共有F、I、J、L这4个根域的6台DNS镜像(L有三台镜像)在提供服务。