18888628835/Blog

域名系统

Opened this issue · 0 comments

域名系统

我们现在已经知道 DNS 跟 IP 之间的关键,而 DNS 服务器将域名转化为 IP 地址的过程就叫域名解析。

目前全世界有几亿个站点,每天发生的 HTTP 流量更是天文数字,而这些请求大多数都是采用域名访问的,所以 DNS 成为了互联网重要的基础设施,必须要保证域名解析的准确、高效。

DNS 的核心系统是一个三层的树状、分布式服务,基本对应域名的结构:

1.根域名服务器(Root DNS Server):管理顶级域名服务器,返回“com”“net”“cn”等顶级域名服务器的 IP 地址

2.顶级域名服务器(Top-level DNS Server):管理各自域名下的权威域名服务器,比如com 顶级域名服务器可以返回 apple.com 域名服务器的 IP 地址;

3.权威域名服务器(Authoritative DNS Server):管理自己域名下主机的 IP 地址,比如apple.com 权威域名服务器可以返回 www.apple.com的 IP 地址

image.png

这里根域名服务器是关键,目前全世界共有 13 组根域名服务器,又有数百台的镜像,保证一定能够被访问到。

有了这个系统以后,任何一个域名都可以在这个树形结构里从顶至下进行查询,就好像是把域名从右到左顺序走了一遍,最终就获得了域名对应的 IP 地址。

例如,你要访问www.apple.com,就要进行下面的三次查询:

  1. 访问根域名服务器,它会告诉你“com”顶级域名服务器的地址;
  2. 访问“com”顶级域名服务器,它再告诉你“apple.com”域名服务器的地址;
  3. 最后访问“apple.com”域名服务器,就得到了www.apple.com的地址。

虽然核心的 DNS 系统遍布全球,服务能力很强也很稳定,但如果全世界的网民都往这个系统里挤,即使不挤瘫痪了,访问速度也会很慢

所以在核心 DNS 系统之外,还有两种手段用来减轻域名解析的压力,并且能够更快地获取结果,基本思路就是“缓存”。

首先,许多大公司、网络运行商都会建立自己的 DNS 服务器,作为用户 DNS 查询的代理,代替用户访问核心 DNS 系统。

这些“野生”服务器被称为“非权威域名服务器”,可以缓存之前的查询结果,如果已经有了记录,就无需再向根服务器发起查询,直接返回对应的 IP 地址。

其次,操作系统里也会对 DNS 解析结果做缓存,如果你之前访问过www.apple.com,那么下一次在浏览器里再输入这个网址的时候就不会再跑到DNS 那里去问了,直接在操作系统里就可以拿到 IP 地址。

另外,操作系统里还有一个特殊的“主机映射”文件,通常是一个可编辑的文本,在 Linux里是/etc/hosts,在 Windows 里是C:\WINDOWS\system32\drivers\etc\hosts,如果操作系统在缓存里找不到 DNS记录,就会找这个文件。

image.png

小结

域名使用字符串来代替 IP 地址,方便用户记忆,本质上一个名字空间系统;

域名解析可以将域名转化成 IP 地址。DNS 就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一个“超级大管家“。

全世界有13台重要的根域名服务器保存顶级域名的ip 地址,域名会从右往前查找 ip 地址,对应域名服务器就是根域名服务器==>顶级域名服务器(com查apple.com)==>权威域名服务器(apple.comwww.apple.com

DNS 是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存

常见的两种缓存方法分别是

  • 由网络商、电信商提供非权威域名服务器,缓存 IP 记录而无需经过根域名服务器。
  • 操作系统本身会缓存 IP地址,其次本地还有 host 文件可以缓存IP 地址。