原文:https://dyn.com/blog/dns-why-its-important-how-it-works/
域名系统(Domain Name System,也就是 DNS)被用来将人类可读的诸如 www.dyn.com
这样的主机名称处理成类似 204.13.248.115
的机器可读的 IP 地址。DNS 也提供一些关于域名的其他信息,比如邮件服务(译注:可参阅 https://baike.baidu.com/item/邮件服务器#3_4
)。
但是为什么说 DNS 如此重要?它是如何工作的?还有什么是你应该知道的呢?
DNS 就像互联网上的电话簿。如果你知道某人的名字但不知道他的电话号码,在电话簿上就可以轻易查找到。DNS 在互联网上就提供了同样的服务。
当你用浏览器访问 http://www.dyn.com
时,你的计算机使用 DNS 检索到该网站的 IP 地址为 204.13.248.115
。如果没有 DNS,那就只能用 IP 地址直接访问网站了。
当你访问诸如 http://www.dyn.com
这样的域名时,你的计算机会按以下顺序,一步步的将人类可读的 web 地址转换为机器可读的 IP 地址。在每次使用到域名时都是这样,不管你是浏览网站、发送邮件还是收听 Pandora 这种在线广播(译注:仅美国可用的一个极简在线音乐站点)时。
整个过程开始于你要求计算机处理一个主机名的时候,比如说访问 http://www.dyn.com
。计算机的目光首先会投向其本地的 DNS 缓存(译注:还会优先考虑代理插件、浏览器设置、hosts 文件等),那里存储了计算机最近接收过的信息。
如果计算机没有得到答案,就需要执行 DNS 查询 了。
如果本地没有存储所需的信息,计算机会联络你的 ISP(网络服务提供商)的递归式 DNS 服务器。这些专门的机器帮你干了 DNS 查询 的跑腿儿活。递归式服务器也有其自身的缓存,所以常常在这步就能完成查询过程,并将信息返回给用户了。
如果递归式服务器也没有答案,它们就会去查询 root nameservers 。一个 nameserver 就是一台用以回答关于域名的问题(如 IP 地址)的机器。全球的 13 个 root 服务器(译注:每个又有若干台镜像,截至2017年11月,全球共有800台根域名服务器在运行)扮演着 DNS 的电话接线总机的角色。它们并不知道答案,但可以告诉我们去问谁,从而可以找到答案。
root 服务器根据请求的首个部分,按从右向左读的顺序,找到 www.dyn.com 里面的 .com
,并将请求导向 .com
对应的 TLD nameservers
(顶级域名服务器)。每个 TLD,如 .com
、.org
及 .us
,拥有其自己的一组域名服务器,扮演其接线员的角色。这些服务器也没有我们需要的信息,但可以直接将我们引荐到持有信息的服务器上去。
TLD 服务器继续审视请求的下一个部分 -- www.dyn.com,并将查询引导至负责这部分域名的服务器 -- 这些被称为权威服务器(authoritative nameservers) 的机器负责将特定域名的所有信息存储在 DNS 记录(DNS records) 中。记录有很多种,每种包含一种不同的信息。
在本例中,我们想知道 www.dyn.com
对应的 IP 地址,所以我们向权威服务器询问 地址记录(A,也就是Address Record)。
递归式服务器从权威服务器接收到 dyn.com
的 A 记录后,将其存储在自身的本地缓存中。当其他人再请求 dyn.com
的主机记录,递归式服务器就成竹在胸了,不用再走一遍查找流程了。
所有记录都有一个 time-to-live 值,类似于过期时间。一段时间之后,递归式服务器就需要记录的新拷贝,以确保信息不会过期。
你的计算机得到递归式服务器返回的带有答案的记录后,将其存储在自身的缓存中;然后从记录中读出 IP 地址,并将该信息告知你的浏览器。随后浏览器就会建立一个和服务器的连接,并接收到网站数据。
从始到终,这一整个过程,只消数毫秒便可完成。