在我们通过浏览器打开页面时,幕后都在使用 DNS。那么什么是 DNS 呢?DNS 代表域名系统。它允许我们打开网站而无需记住访问网站的 IP 地址。当我们访问 www.baidu.com
时,浏览器是不知道 baidu.com
是什么。它只识别 110.242.68.66
等 IP 地址。DNS 帮助我们将 www.baidu.com
等人类可读的域名转换为其实际 IP 地址(110.242.68.66
),以便我们可以访问该网站。它是将域名转换为 IP 地址的互联网目录。我们访问的每个网站都会经过 DNS,但它的速度非常快,以至于我们在日常生活中甚至没有注意到它。有没有想过它在幕后是如何运作的?本文,我们将探索这一个过程的所有步骤,从浏览器开始,直到 DNS 返回 IP 地址。但在这之前,我们首先需要了解域名的结构,了解这一点对于理解 DNS 是如何有效工作是至关重要的。
我们已 www.baidu.com
为例,来分解域名的 3 个部分。
www
。例如我们上述域名的子域名就是 www
。baidu
。.com
。下文中我们将会用到这些术语,所以需要对其有一个基本的了解。
以下是 DNS 工作原理的分步过程:
从缓存查询到 DNS 解析器的整个过程称为 DNS 查询。您可以使用以下工具对任何网站进行查询:
nslookup {domain_name}
例如:
$ nslookup www.baidu.com
Non-authoritative answer:
DNS request timed out.
timeout was 2 seconds.
Server: UnKnown
Address: 10.198.1.1
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
Name: www.baidu.com
Addresses: 240e:ff:e020:966:0:ff:b042:f296
240e:ff:e020:9ae:0:ff:b014:8e8b
183.2.172.185
183.2.172.42
现在,让我们来谈谈 DNS 记录、它们的含义以及添加 DNS 记录的过程。
DNS 记录是各种类型记录中关于域名的信息。这些信息存储在权威名称服务器中(Authoritative Name Servers)。记录有多种类型,其中包括:
由于大多数 DNS 查询使用 UDP 协议进行,这使得 DNS 查询容易受到攻击,因为任何黑客都可以拦截从操作系统发送到解析器的网络数据包,并且可以知道客户端 IP 及其尝试访问的站点。还有另一种称为 DNS 欺骗的攻击,其中黑客在域名解析器中存储错误信息,因此,该数据被缓存在解析器中,导致某人访问受感染的站点,直到 TTL 过期。为确保 DNS 安全采取了多种措施,如 DNSSEC[1] 和 DNS over HTTPS (DoH)[2],但由于缺乏认识,这些措施仍未被广泛采用。
DNS 是运行互联网的支柱,它让我们意识到,如果没有它,互联网就不会是今天的样子。对于那些想进一步了解该主题的人,可以查看:
参考资料
[1]
DNSSEC: https://www.cloudflare.com/learning/dns/dns-security/
[2]
DNS over HTTPS (DoH): https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/