<>DNS域名解析过程
首先我们知道,DNS协议是用来完成域名到 IP 地址的转换的。DNS 服务器大致分为三种类型:根域名服务器、顶级域名服务器(Top-Level
Domain, TLD)以及权威 DNS 服务器。
这些服务器的关系如下如所示:
那么这些服务器是怎么共同协作的呢?
比如我们现在要访问一个域名 www.amazon.com,首先我们的浏览器会使用 DNS 协议来获取该域名对应的 IP 地址。
该过程大概如下:
我们的主机上运行着 DNS 客户端,客户端首先与根域名服务器之一联系,期望获取.com TLD 域名服务器的 IP 地址,随后根域名服务器返回顶级域名
com 的 TLD 服务器 IP 地址。该客户端与这些 TLD 服务器之一联系,它将返回 amazon.com 的权威服务器 IP 地址。最后,该客户端与
amazon.com 权威服务器之一取得联系,它返回主机名 www.amazon.com 的 IP 地址。
<>本地 DNS 服务器
这只是一个粗略的过程,实际上,还有另一类重要的 DNS 服务器:本地 DNS 服务器。每个 ISP (网络服务供应商,比如中国移动、联通等) 都有一台本地
DNS 服务器。一般来说,主机的的本地 DNS 服务器与主机是“邻近”的。
加入本地 DNS 服务器后,DNS 客户端就会先向本地 DNS 服务器发起请求,然后 本地 DNS 服务器再依次向根域名服务器、TLD 域名服务器以及权威
DNS 服务器联系,最后获得 IP 地址,返回给 DNS 客户端
在此例中,我们为了获取一个域名的 IP 地址,共发送了 8 份 DNS 报文。为了减少网络上到处传输的 DNS 报文数量,DNS 广泛运用了缓存技术。
<>DNS 缓存
DNS 缓存即,每当本地 DNS 服务器从某个 DNS 服务器接收到一个回答,他就能够缓存包含在该回答中的任何信息。此时DNS
客户端再发起域名解析请求时,如果在 本地 DNS 服务器中就缓存了该信息,就可以直接返回所求的 IP 地址,即使它不是该主机名的权威服务器。由于主机和主机名与
IP 地址间的映射并不是永久的,DNS 服务器在一段时间后(通常设置为两天)将丢弃缓存信息。
有了 DNS 缓存技术,本地 DNS 服务器也能够缓存 TLD 域名服务器的 IP 地址,因而允许本地 DNS
绕过查询链中的根域名服务器。事实上,因为缓存,除了少数 DNS 查询以外,根服务器都会被绕过