You need to enable JavaScript to run this app.
导航
工作原理
最近更新时间:2024.09.02 11:16:13首次发布时间:2022.04.25 16:02:09

本文档介绍了火山引擎云解析(DNS)的工作原理。

云解析 DNS 如何进行 DNS 解析

DNS 解析过程从客户端发送 DNS 查询请求开始,到客户端获取到域名的 IP 地址结束。例如,当用户在浏览器中输入 www.example.com 并按回车后,域名解析就开始了。本文假设云解析 DNS 为 www.example.com 提供了权威域名解析服务。

  1. 操作系统检查本地的 hosts 文件中是否有 www.example.com 的解析记录。如果操作系统在 hosts 文件中找到了 www.example.com 的解析记录,就会使用该解析记录中的 IP 地址。此时,DNS 解析完成。

    说明

    • 一般情况下,操作系统会首先检查本地的 hosts 文件。但是,这个顺序并不是绝对的。操作系统也可能会首先查询本地 DNS 缓存。
    • Windows 的 hosts 文件在 %Windir%\System32\drivers\etc 目录中,macOS 和 Linux 的 hosts 文件在 /etc 目录中。
  2. 如果 hosts 文件中没有 www.example.com 的解析记录,操作系统会查找本地 DNS 缓存。如果操作系统在本地 DNS 缓存中找到了解析记录,就会使用该解析记录中的 IP 地址。此时,DNS 解析完成。
  3. 如果本地 DNS 缓存中没有 www.example.com 的解析记录,操作系统会向递归 DNS 服务器发起 DNS 查询请求。递归 DNS 服务器可以是运营商维护的 Local DNS 服务器,也可以是公共 DNS 服务器。
  4. 递归 DNS 服务器查询缓存。如果递归 DNS 服务器在缓存中找到了 www.example.com 的解析记录,就会返回该解析记录中的 IP 地址。此时,DNS 解析完成。
  5. 如果递归 DNS 服务器上的缓存中没有 www.example.com 的解析记录,递归 DNS 服务器会向根 DNS(root DNS)服务器发起 .com 域的 DNS 查询请求。
  6. 根 DNS 服务器将对应的顶级域 DNS 服务器的 IP 地址返回给递归 DNS 服务器。该顶级域 DNS 服务器解析 .com 域。
  7. 递归 DNS 服务器向该顶级域 DNS 服务器发起 example.com 域的 DNS 查询请求。
  8. 顶级域 DNS 服务器将对应的权威 DNS 服务器的 IP 地址返回给递归 DNS 服务器。该权威 DNS 服务器解析 example.com 域。在本文中,example.com 域对应的权威 DNS 服务器是云解析 DNS 提供的。
  9. 递归 DNS 服务器向该权威 DNS 服务器发起 DNS 查询请求。
  10. 权威 DNS 服务器将 www.example.com 的 IP 地址返回给递归 DNS 服务器。
  11. 递归 DNS 服务器将结果返回给用户的操作系统。此时,DNS 解析完成。递归 DNS 服务器还会把结果缓存一段时间。缓存的时长是解析记录的 TTL(Time to Live)值。对于后续 www.example.com 的 DNS 查询请求,递归 DNS 服务器会直接返回缓存的结果。

操作系统将结果返回给浏览器。浏览器向 www.example.com 的 IP 地址发送 HTTP 请求。然后,用户就看到了网站的页面内容。

操作系统向递归 DNS 服务器请求域名解析的过程使用的是递归查询。递归 DNS 服务器向各域名服务器请求各级域的解析过程使用的是迭代查询。

图片

云解析 DNS 如何通过 EDNS 客户端子网协议(ECS 协议)获取用户所在的 IP 地址段

如果您为某条解析记录配置了运营商线路、地理位置线路或自定义线路,云解析 DNS 优先使用 DNS 查询请求中的 ECS 协议 信息所包含的被截断的客户端 IP 地址来匹配线路。

如果 Local DNS 服务器支持 ECS 协议

如果 Local DNS 服务器支持 ECS 协议,Local DNS 服务器向云解析 DNS 发送的 DNS 查询请求中带有 ECS 协议信息。云解析 DNS 会使用 DNS 查询请求中的 ECS 协议信息所包含的客户端 IP 地址段来匹配线路。

如果 Local DNS 服务器不支持 ECS 协议

在互联网上,部分 Local DNS 服务器不支持 ECS 协议。如果 Local DNS 服务器不支持 ECS 协议,Local DNS 服务器向云解析 DNS 发送的 DNS 查询请求中没有 ECS 协议信息。云解析 DNS 会使用数据包中的客户端 IP 地址来匹配线路。这些客户端 IP 地址大部分是 Local DNS 服务器的出口 IP 地址。