DNS(域名系统)

协议和标准
Internet的分层命名系统,将人类可读的域名转换为计算机用来通信的IP地址。
← 返回词汇表

什么是DNS?

DNS(域名系统)是互联网的电话簿。它将人类可读的域名,例如"example.com",转换为计算机用来定位彼此并进行通信的机器可读IP地址,例如"93.184.216.34"。没有DNS,访问网站就必须记住IP地址,想象一下输入142.250.80.46而不是google.com。

DNS的工作原理

当你在浏览器中输入域名时,会发生一个复杂但极其迅速的过程:

DNS解析过程

1. 检查本地缓存:浏览器和操作系统首先检查本地DNS缓存中是否有该域名的近期查询结果。

2. 查询递归解析器:如果缓存中没有结果,查询就会发送到递归DNS解析器,通常由你的互联网服务提供商或Cloudflare的1.1.1.1、Google的8.8.8.8等服务运营。

3. 查询根服务器:解析器查询根名称服务器,根名称服务器会将其指向适当的TLD服务器。

4. 查询TLD服务器:TLD服务器(例如负责.com的服务器)提供该具体域名的权威名称服务器。

5. 查询权威服务器:最后,权威名称服务器返回该域名的实际IP地址。

6. 缓存响应:根据TTL(生存时间)值,结果会在多个层级进行缓存。

整个过程通常在几毫秒内完成。

DNS记录类型

DNS存储多种记录,每种记录都有不同的用途:

记录类型用途示例
A将域名映射到IPv4地址example.com → 93.184.216.34
AAAA将域名映射到IPv6地址example.com → 2606:2800:220:1:...
CNAME指向另一个域名的别名www.example.com → example.com
MX邮件服务器指定example.com → mail.example.com
TXT文本数据(SPF、DKIM、验证)各种验证字符串
NS名称服务器委派example.com → ns1.provider.com

DNS层次结构

DNS以分布式分层数据库的形式运行:

. (root)

├── com (TLD)

│ ├── example (SLD)

│ │ ├── www (subdomain)

│ │ └── mail (subdomain)

│ └── google

├── org (TLD)

└── io (TLD)

这种层次结构使数千个组织能够分布式管理数十亿个域名。

面向开发者的DNS

理解DNS对网页开发至关重要:

常见开发任务

域名配置:设置A记录、子域的CNAME记录和电子邮件的MX记录需要DNS知识。 SSL/TLS验证:许多证书颁发机构使用DNS记录(TXT或CNAME)来验证域名所有权。 CDN设置:内容分发网络通常需要CNAME记录,通过其边缘服务器路由流量。 电子邮件可递送性:SPF、DKIM和DMARC记录都是电子邮件身份验证所必需的DNS TXT记录。

DNS传播

更新DNS记录后,更改不会立即生效。DNS传播,即更改在全球DNS基础设施中扩散所需的时间,根据TTL设置和缓存行为,可能需要几分钟到48小时。

DNS安全注意事项

开发者需要了解DNS带来的安全影响:

DNS欺骗:攻击者可能返回虚假的DNS响应,将用户重定向到恶意网站。DNSSEC(DNS安全扩展)通过加密签名帮助防止这种情况。 DNS泄露:VPN用户可能误将DNS查询发送到加密隧道之外,从而暴露浏览活动。 DDoS放大:由于协议能够返回比请求更大的响应,DNS可能被用于放大攻击。

DNS与域名可用性

DNS解析状态有时可以提示域名是否可用。如果不存在DNS记录,域名可能尚未注册。不过,RDAP/WHOIS查询能提供更可靠的可用性信息,因为已注册域名也可能尚未配置DNS记录。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。