DNS:翻译互联网的应用层
Source: Dev.to
引言
域名系统(DNS)是支撑互联网人类可读通信的基础设施。每当你在浏览器中输入网站地址时,DNS 都在后台悄悄工作,将域名翻译成计算机能够理解的 IP 地址。它常被称为“互联网的电话簿”,在 OSI 模型的应用层(第 7 层)运行,每秒处理数百万次翻译请求,使数字世界顺畅运行。
DNS 在 OSI 模型中的位置 – 应用层协议架构
DNS 是一个层次化、去中心化的命名系统,将人类友好的域名(例如 www.example.com)转换为机器可读的 IP 地址(例如 192.0.2.44),从而免去用户记忆数字串的需求。
- 应用层:DNS 直接为用户应用和服务提供支持,无需它们自行处理翻译任务。
- 传输层:DNS 对标准查询使用 UDP(因其无连接的高效性且数据包通常 ≤ 512 字节),对较大传输或 DNS 服务器之间的区域传输使用 TCP。两者均使用 53 端口。
层次结构(五级)
- 根层 – 权威根名称服务器将请求重定向到相应的顶级域(TLD)名称服务器。
- 顶级域(TLD) – 如
.com、.org、.net、.edu等扩展名,包含其下注册域的信息,并将查询指向相应的二级域名称服务器。 - 二级域(SLD) – 你注册的主要域名(例如
example.com、google.com)。每个 SLD 拥有自己的权威名称服务器,存储子域和主机的详细信息。 - 子域 – 域名内部的额外层级(例如
mail.example.com、blog.example.com),用于组织服务和资源。 - 主机 – 通过完整主机名标识的单个机器或资源(例如
www.example.com)。
DNS 解析过程 – 完整查询流程
当你输入 URL 时,系统会向你的 DNS 解析器发起递归查询,解析器随后在 DNS 层次结构中进行迭代查询,直至获取所需的 IP 地址。
步骤分解
-
客户端发起查询
- 本地 DNS 客户端(存根解析器)检查自身缓存。
- 若未命中缓存,则向 DNS 解析器发送递归查询(通常由 ISP 或第三方服务如 Cloudflare、Google DNS 提供)。
-
解析器查询根名称服务器
- 解析器首先联系根名称服务器,根服务器返回指向相应 TLD 名称服务器的引用。
-
TLD 名称服务器响应
- 解析器查询 TLD 名称服务器,后者将其指向该特定域的权威名称服务器。
-
权威名称服务器解析
- 权威名称服务器提供最终的 DNS 记录,包括 IP 地址。
-
响应缓存与返回
- 解析器缓存结果并将 IP 地址返回给原始客户端,客户端也会缓存该信息以供后续查询使用。
缓存层级
- 浏览器缓存
- 操作系统 DNS 缓存
- ISP 的递归解析器缓存
只要记录在上述任意层级被缓存,查询就无需遍历完整层次结构,从而降低延迟和网络负载。每条缓存记录都包含一个 生存时间(TTL) 值,决定信息的有效期限。
DNS 记录类型 – 常见资源记录说明
| 记录类型 | 用途 |
|---|---|
| A | 将域名映射到 IPv4 地址(例如 www.example.com → 192.0.2.44)。 |
| AAAA | 将域名映射到 IPv6 地址。 |
| CNAME | 通过指向另一个域名创建别名(例如 example.com → www.example.com)。 |
| MX | 指定负责处理该域名电子邮件的邮件服务器。 |
| TXT | 存储任意文本数据,常用于域名验证和电子邮件身份验证(SPF、DKIM、DMARC)。 |
| NS | 指明哪些名称服务器对该域名拥有权威。 |
| SOA | 起始授权记录,包含关于该区域的管理信息。 |
DNS 在网络架构中的位置
DNS 运行在 OSI 模型的 应用层(第 7 层),与 HTTP、SMTP、POP3 等协议并列。此定位使 DNS 能直接为用户应用提供支持,而无需底层协议理解域名翻译。
在应用层之下,DNS 依赖 传输层:
- UDP – 由于速度快、开销低,适用于大多数查询。
- TCP – 用于较大响应、区域传输以及需要可靠性的场景。
安全考虑
DNS 作为关键的互联网基础设施,面临伪造、缓存投毒和中间人攻击等威胁。域名系统安全扩展(DNSSEC) 为 DNS 响应添加加密签名,确保 DNS 数据的真实性和完整性。