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


0

我知道DNS会将域名转换为IP。而对于沟通来说,最接近另一方的当然是越快。但在DNS的情况下,用户在TTL过期(可能是一天)之前查询服务器IP一次并缓存该答案。

那么,为什么许多人建议让DNS靠近最终用户呢?

Answers:


3

我认为这首先是出于安全原因,以避免DNS欺骗/ DNS缓存中毒等攻击。 有了这些,他们可以将连接从您的网络重定向到狡猾的服务器,这将使您下载不需要的文件,将访问您不想要的页面等。

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

DNS欺骗

也许你不希望你的服务器一直有来自世界各地的数千个请求。


1
如果可能包括DNS解析优先于跳数的事实,我想扩展您的答案。如果您有一个内部和外部DNS服务器都具有“google.com”的分辨率,您的主机将查询需要最少跳数的服务器。
Gansheim

3

请记住,这是“更接近”意味着“更快”的假设,而事实并非如此。

用户在TTL过期(可能是一天)之前查询有关服务器IP的一次,并缓存该答案。

当您点击页面时,您的浏览器需要对页面上的所有资源进行DNS查找,因此如果您点击包含100个具有地址DNS名称的图像的页面,则您的浏览器会对该页面执行100次DNS查询。

有关更直接的示例:在刷新此页面时查看浏览器中的调试/网络选项卡会显示其他39个GET请求,每个请求(可能)需要进行DNS查找。

网页作者可以决定页面缓存的时间长度(大多数情况下),并且页面上越来越多的资源当天不是静态的,因此每次页面调用都会生成不同的页面。这可以潜在地阻止/否定任何浏览器缓存选项(至少部分)。

因此,您需要多久访问DNS取决于一些事情,包括:

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

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

在/“最坏的情况”中,客户端不会发生DNS缓存(即:他们之前从未访问过某个页面),因此需要在DNS中查找页面上的每个资源位置才能进行渲染给你的页面。

要获得最快的响应以呈现页面,您需要尽可能快的DNS响应。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.