Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

域名系统 #26

Open
18888628835 opened this issue May 18, 2021 · 0 comments
Open

域名系统 #26

18888628835 opened this issue May 18, 2021 · 0 comments

Comments

@18888628835
Copy link
Owner

域名系统

我们现在已经知道 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 地址。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant