DNS查找的过程

The process of DNS lookup

我对 DNS 如何工作的这个过程感到很困惑。每个 link 都在说不同的东西,这可能是相同的,但我无法理解。 我会尽量提出所有我知道和读过的东西。请添加到此并纠正任何错误的地方。

  1. 在浏览器的地址栏中输入 www.example.com。
  2. 浏览器向系统的OS发送请求以签入hosts文件。
  3. OS 检查主机文件是否存在具有 example.com 域 IP 的记录。
  4. 如果记录存在,则将IP地址返回给浏览器。然后浏览器直接向该IP地址发送网页请求。
  5. 如果第 3 步中的记录不存在,浏览器会从 OS 得到一个没有找到记录的响应。然后浏览器从 DNS 服务器询问 IP。 (这是正确的吗?浏览器收到否定响应并向 DNS 服务器发送请求,还是 OS 知道主机文件不包含所需记录后直接向 DNS 服务器请求 IP)。
  6. 现在,我的主要疑问。 DNS 服务器到底是什么?它们是我们所说的名称服务器吗?他们住在哪里?谁为我们提供这些名称服务器?浏览器向他们发送请求或 OS?

This post 表示在我们的系统上配置了 DNS 服务器,并且 OS 向这些服务器发送请求。 现在,DNS 解析器从哪里来。他们在做什么。 This post 表示 DNS 解析器是 ISP 拥有的计算机,负责进行转换。那么请求的顺序是 Browser -> Hosts File-> DNS resolvers -> DNS servers 吗?但是谁向谁发送请求?

请更正以上内容。任何帮助将不胜感激。

你列表中的一到五是正确的。浏览器询问您的 DNS 解析器(您的 ISP 或您在网络设置中放置的任何内容)。如果解析器不知道答案,它就会四处询问。

我以whosebug.com为例

  1. 解析器询问 root servers,他们用 TLD servers 权威回答 com

  2. 解析器询问 TLD servers,他们使用在 domain registrarwhosebug.com 配置的 name servers 进行回答。

  3. 解析器询问 name servers,他们用 A record(s)

  4. 回应
  5. 解析器缓存 A record 给定时间(记录的 TTL 或者它有自己的时间覆盖由给定的 TTL name servers) 并且当再次询问解析器时它 returns 它在缓存中有什么(除非 TTL 已过期,然后它再次开始询问)

总结如下:

Browser -> Hosts File -> DNS resolver ->(rq*) Root servers -> TLD servers -> Name servers -> NS records

  • rq - 递归查询

里面的NS records是问你要不要开www.whosebug.com,他们好像是name servers(NS其实是代表name server),但是对于sub domains.

为了更详细地了解 DNS 查找,这里是我的示例:

  • 当你键入www.google.com时,我们实际上调用了www.google.com. 最后的.代表了Root互联网命名空间。
  • 浏览器检查自己的缓存,如果没有找到,它会向 OS 询问 IP。
  • OS 然后检查 IP 地址是否在内存(缓存)中。
  • 如果浏览器和操作系统(缓存)都不知道 IP 地址,则操作系统配置为询问 解析名称服务器 (RNS)它不知道的 IP 地址。
  • RNS 是 DNS 查找的主要工作人员。它在您的 OS.
  • 中手动和自动配置
  • 然后 OS 向 RNS 查询 IP。 RNS 在缓存中可能有也可能没有 IP。
  • 所有 RNS 必须知道的唯一一件事是在哪里可以找到 根名称服务器,即 .出现在每个 url 之后。
  • 根名称服务器将回复在哪里可以找到 com 名称服务器。
  • com 名称服务器是 顶级域 (TLD) 名称服务器。
  • RNS 然后缓存它来自根名称服务器的信息并转到 TLD 服务器。
  • TLD 名称服务器将通过说出 google.com 个名称服务器的位置来回复。下一组名称服务器是 权威名称服务器 (ANS).
  • RNS 然后缓存它来自 TLD 名称服务器的信息并转到 ANS。
  • ANS 现在会回复说它知道 URL 的 IP 地址。
  • RNS 现在会将 IP 地址保存在其缓存中,然后回复 OS。
  • 然后OS将IP地址交给浏览器
  • 然后浏览器连接请求网页的 IP 地址 Url。

整个循环只需要几分之一秒。

浏览器 -> OS -> DNS 查找 -> RNS -> 根名称服务器 -> TLD -> ANS -> RNS -> OS -> 浏览器