什么是DNS,DNS 域名解析 过程

题图来自Unsplash,基于CC0协议
导读
一旦我们想访问一个网站,比如 www.example.com,我们通常会将这个网址输入浏览器。这个网址听起来比一串数字和点(例如 93.184.216.34)要友好得多。但是,计算机世界是建立在数字 IP 地址之上的,所以我们如何让我们的计算机找到正确的网站服务器呢?这就是域名系统(Domain Name System,简称 DNS)的作用,它就像是互联网世界的电话簿,将我们更容易记忆和理解的域名,翻译成网络通信所需的数字 IP 地址。
DNS 的全称是域名系统。它是一种将域名(例如 www.example.com)翻译成 IP 地址(例如 93.184.216.34)的分布式命名系统。简单来说,它的工作原理是:当你在浏览器地址栏输入一个域名,你的计算机向 DNS 服务器发起查询,请求将这个域名解析成对应的 IP 地址,然后计算机就能向该 IP 地址对应的服务器发送网络请求,获取网页内容。
域名解析过程
域名解析(DNS Query)通常是从根开始,逐层向下查找的过程:
- 发起请求: 你的计算机(或其他联网设备)向配置的 DNS 服务器(通常是你的互联网服务提供商提供的,或者是公共 DNS 服务器,如 Google DNS 或 Cloudflare DNS)发送查询请求。
- 递归查询(Recursive Query): 初始的 DNS 请求通常是递归查询。这意味着请求的 DNS 服务器不能直接给出答案,但它会在完成的过程中给请求者一个明确的回应。
- 迭代/转发查询(Iterative/Forwarding Query): DNS 服务器可能会向其他 DNS 服务器发起查询,而这些过程是迭代或转发查询。它不会代替你回答问题,而是帮你一步步找到答案。
- 查询过程(一个简化示例):
- 你的计算机首先会查询是否在它的本地缓存中有对应域名的 IP 地址记录。如果有且记录是新鲜的,过程就到此结束,直接返回 IP 地址。
- 如果没有,它会向 DNS 根服务器(DNS Root Servers)进行查询。它们不知道具体的 IP 地址,但知道哪些顶级域名服务器负责特定的顶级域。
- 根服务器告诉你,由某个顶级域名服务器管理(例如 .com 的顶级域名服务器)。
- 计算机接着向那个顶级域名服务器查询。顶级服务器知道管理低级域名的权威域名服务器。
- 最后,计算机查询特定网站(域)的权威域名服务器。权威服务器保存了该域名的所有 DNS 记录。
- 权威服务器拥有答案,它将域名的 IP 地址或其他信息返回给请求的计算机,然后这个 IP 地址被缓存起来,以便未来访问该域名时更快。
- 这个最终的响应就是域名解析结果,计算机获得了 IP 地址,可以开始向目标服务器建立连接。
DNS 服务器的类型
DNS 服务器有几种主要类型:
- 递归名称服务器: 这是最用户接触最多的一种。它响应客户端的查询,代表客户端进行查询。它会使用一种“递归”的方式查询其他 DNS 服务器(包括根服务器、顶级域名服务器、权威服务器),最终给客户端一个最终的答案(成功解析出 IP 地址,或者告知无法解析)。如 ISP 提供的 DNS 服务器。
- 权威名称服务器: 这些服务器。实际上,域名是一个级别级中心域名运行的地方。
DNS 的作用是什么?为什么需要 DNS?
DNS 是互联网正常运行的关键基础设施,其作用至关重要:
- 简化记忆: 记住一串或多 IP 地址(例如 93.184.216.34 或 2606:2800:220:102::2a:2ab0)远比记忆一个有意义的域名困难得多。DNS 让我们可以使用容易记忆的名称来访问资源。
- 人性化浏览: 浏览器不仅仅是工具,它是人类与数字世界的接口,如果只能用 IP 地址浏览,互联网的体验将远不如今天。
- 抽象与灵活性: DNS 将数字地址和查询域名(如 www.example.com)进行了分离,这样 IP 地址发生变化,例如 Web 服务器迁移,域名可以无需修改就能指向新的 IP 地址,应用层协议无需关心底层。
- 其他功能支持: DNS 不仅仅返回 A记录,它还支持其他记录类型,用于邮件服务器发现(MX 记录)、服务位置(SRV 记录)等,这使得互联网服务,如电子邮件、即时通讯、VPN 访问等成为可能。
- 资源定位与平衡: 通过 DNS,实现者可以实现负载均衡,将来自不同客户端的请求分引导到不同的 IP 地址上的服务器,提高网站的性能和可用性。
常见的 DNS 记录类型
DNS 不仅仅是 A记录,搜索引擎及其编写者创建了很多记录类型,主要用于记录域名与 IP 地址之间的数字映射,以实现准确无误的访问。
- A 记录(Address Record): 这是最常见的 DNS 记录类型,它将一个域名(或其某个部分)映射到单个 IPv4 地址。 例如:www.example.com 的 A记录是 93.184.216.34。
- AAAA 记录(Address Record - IPv6): 类似于 A记录,但是将域名映射到 IPv6 地址,用于支持下一代互联网协议。例如:www.example.com 的 AAAA 记录可能是 2606:2800:220:102::2a:2ab0。
- CNAME 记录(Canonical Name Record): 你的好朋友,将一个域名(称之为源名称)解释为另一个名为标准名称的域名。CNAME 记录最常用于设置别名,也就是说,它为域名定义了一个“另一个名字”。但它并不适合简单的 A记录/AAAA记录等,创建的所带来的额外查询开销可能会导致性能和安全性问题。
- MX 记录(Mail eXchange Record): 用于指定处理该域名邮件发送和接收的邮件服务器(Mail Server)。MX 记录通常用于电子邮件系统传输邮件时指定目的地服务器,该记录非常重要,如果没有 MX 记录,则可能无法发送或接收邮件。
总而言之,DNS 是互联网背后的基础设施之一,它每天都默默工作,将我们输入的网址转换为目标服务器的实际地址,使得互联网浏览、电子邮件和许多在线活动能够顺畅进行。了解 DNS 基础有助于理解互联网的工作原理,并在解决问题(例如网站无法访问时)时提供线索。
© 版权声明
本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com