为什么 DNS 服务器应该靠近最终用户?

为什么 DNS 服务器应该靠近最终用户?

我知道 DNS 会将域名转换为 IP。对于通信来说,对方越近当然速度越快。但就 DNS 而言,用户会查询一次服务器 IP,直到 TTL 到期(可能是一天),并将该答案缓存起来。

那么,为什么许多人建议将 DNS 放在靠近最终用户的地方?

答案1

我认为这首先与安全原因有关,以避免诸如 DNS 欺骗/DNS 缓存中毒之类的攻击。利用这些攻击,他们可以将您网络的连接重定向到可疑的服务器,从而使您下载不需要的文件,访问您不想要的页面等。

您可以在这里阅读有关此类攻击的更多信息:

DNS 欺骗

您可能也不希望您的服务器一直接收来自世界各地的数千个请求。

答案2

请记住,“更近”意味着“更快”,但事实往往并非如此。

用户查询一次服务器 IP,直到 TTL 过期(可能是一天)并且该答案被缓存。

当您访问某个页面时,您的浏览器需要对页面上的所有资源执行 DNS 查找,因此如果您访问的页面包含 100 个以 DNS 名称作为地址的图像,则您的浏览器将对该页面执行 100 个 DNS 查询。

举一个更直接的例子:刷新此页面时查看浏览器中的“调试/网络”选项卡,显示另外 39 个 GET 请求,每个请求(可能)都需要 DNS 查找。

网页作者可以决定页面缓存的时间(大多数情况下),如今页面上越来越多的资源不再是静态的,因此每次页面调用时都会动态生成。这可能会阻止/否定任何浏览器缓存选项(至少部分如此)。

因此,您需要多久访问一次 DNS 取决于以下几个因素,包括:

  • 为获取所请求页面的内容而进行的额外资源/URL 调用的次数。
  • 用户的浏览器缓存设置。
  • 该页面对动态内容的使用。
  • 页面的缓存设置。

由于您寻求澄清的建议是“一般”建议,因此它必须涵盖所有一般情况,包括糟糕/最坏的情况。

在“最坏的情况下”,客户端不会进行任何 DNS 缓存(即:他们之前从未访问过给定的页面),因此需要在 DNS 中查找页面上的每个资源位置才能将页面呈现给您。

为了获得最快的响应来呈现页面,您需要最快的 DNS 响应。

还请记住,实际上任何计算资源(不仅仅是 DNS 服务器)都是一样的 - 虽然缓存很棒,但在当前没有缓存的情况下,访问速度越快并获得响应就越好。

相关内容