DNS:翻译互联网的应用层

发布: (2025年12月15日 GMT+8 21:05)
6 min read
原文: Dev.to

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 端口。

层次结构(五级)

  1. 根层 – 权威根名称服务器将请求重定向到相应的顶级域(TLD)名称服务器。
  2. 顶级域(TLD) – 如 .com.org.net.edu 等扩展名,包含其下注册域的信息,并将查询指向相应的二级域名称服务器。
  3. 二级域(SLD) – 你注册的主要域名(例如 example.comgoogle.com)。每个 SLD 拥有自己的权威名称服务器,存储子域和主机的详细信息。
  4. 子域 – 域名内部的额外层级(例如 mail.example.comblog.example.com),用于组织服务和资源。
  5. 主机 – 通过完整主机名标识的单个机器或资源(例如 www.example.com)。

DNS 解析过程 – 完整查询流程

当你输入 URL 时,系统会向你的 DNS 解析器发起递归查询,解析器随后在 DNS 层次结构中进行迭代查询,直至获取所需的 IP 地址。

步骤分解

  1. 客户端发起查询

    • 本地 DNS 客户端(存根解析器)检查自身缓存。
    • 若未命中缓存,则向 DNS 解析器发送递归查询(通常由 ISP 或第三方服务如 Cloudflare、Google DNS 提供)。
  2. 解析器查询根名称服务器

    • 解析器首先联系根名称服务器,根服务器返回指向相应 TLD 名称服务器的引用。
  3. TLD 名称服务器响应

    • 解析器查询 TLD 名称服务器,后者将其指向该特定域的权威名称服务器。
  4. 权威名称服务器解析

    • 权威名称服务器提供最终的 DNS 记录,包括 IP 地址。
  5. 响应缓存与返回

    • 解析器缓存结果并将 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 数据的真实性和完整性。

Back to Blog

相关文章

阅读更多 »