我正在学习网络,特别是 DNS 协议的工作原理。
我看过这个视频https://www.youtube.com/watch?v=eA9mnY1Z2so,视频时长1小时,关于DNS的讲解从18:35开始。
我理解以下内容:
完整 DNS 域名中的每个部分(每个点之前的文本)都引用控制一组 IP 方向的服务器,例如 .com 引用具有商业网站 Web 服务器的 IP 方向的服务器。例如,名称为 .com 的机器具有此 IP:
buy.com ----- xxx.xxx.xxx.xxx
anothercommercial.com ----- xxx.xxx.xxx.xxx
.com是顶级域名,并且服务器有该机器的ip.com是控制顶级域名并拥有其 IP 方向的根服务器。
哪个服务器是第一个被查询以找到购买网站?
我听说 ISP 会提供域服务器的 IP,但我不知道该服务器是否能帮助我们提供根数据库区域 IP,然后为我们提供.comip 最后.com我们找到了 buy.com 的 IP
请帮助我理解这一点。
答案1
关于第一个被查询的服务器是什么的问题取决于:
- 情况:什么已经缓存以及在哪里?
- 我们重点关注的 DNS 部分:
- 如何递归名称服务器从根部按层次结构开始吗?
- 客户端如何向其最近的递归名称服务器发送查询?
- 抽象层次:我们只对委托层次结构还是实际记录感兴趣。
这个答案旨在解释不同抽象层次的流程,讨论遗漏的内容以简化流程……并纠正您所看到的演示留下的误解。让我们从这个开始(让·皮亚杰的)住宿...
纠正误导
Prof.I.Sengupta 对递归名称解析的解释不准确且具有误导性。 从...开始35:01有一张幻灯片展示了这个数字。它周围的警告是我的。;-)
层次结构权威性DNS 是单向的:递归总是从根向下开始,而不是像本图所示那样向上朝向根。此外,这表明 TLD 之间的所有 DNS 查询及其响应都将通过根名称服务器。显然情况并非如此,即使根名称服务器承担着其当前的职责(即仅将控制权委托给 TLD 名称服务器),其负载也已经足够大了。
虽然有些名称服务器可以同时具有递归和权威角色,但这并不推荐,并且开放递归名称服务甚至被禁止IANA 权威名称服务器的技术要求造成这种隔离的原因有以下几点:
预防放大攻击(RFC 5358,4)。
预防DNS 缓存中毒,尽管这主要是历史原因,在第 3 版中有很好的解释。Nemeth, E.、Snyder, G.、Seebass, S. 和 Hein, T. (2000)。UNIX 系统管理手册。Pearson Education。(第 16 章 域名系统;BIND 软件;权威服务器和仅缓存服务器。):
在 BIND4 和 BIND 8 中,使用单个名称服务器作为某些区域的权威服务器和其他区域的缓存服务器并不是一个好主意。每个名称服务器都使用单个内存数据库运行,如果内存紧张且缓存数据与权威数据混合,则可能会发生交叉污染。BIND 9 已经消除了这个问题,因此请随意混合。
为了稳定性/负载平衡:权威域名服务器是互联网的重要组成部分,因为几乎所有其他事物都依赖于 DNS。因此,我们不应该让技术错误或递归服务器的高负载影响该系统的性能。
不同的抽象层次
关于这个主题的许多图片被简化为不考虑缓存。
马歇尔·布莱恩:域名服务器的工作原理(蒂姆的回答中已经提到)
SophieDogg:DNS 简介。以下版本的插图及引文均来自该处:
下面是一个递归 DNS 查询的示例。重要的是要知道,递归服务器始终拥有根名称服务器的 IP 地址副本,以便为下图中的步骤 #2 提供必要的地址。此根名称服务器列表需要保持最新,否则递归名称服务器将不知道从哪里开始查找!
如果我们在不同的层次(浏览器、操作系统、递归服务器)添加缓存,情况就会变得稍微复杂一些。以下插图来自TCP/IP 指南:DNS 名称解析过程显示如果发生什么未缓存任何内容。
图 245:DNS 名称解析过程示例
这个相当复杂的例子说明了使用迭代和递归解析的典型 DNS 名称解析。用户在 Web 浏览器中输入 DNS 名称(“www.net.compsci.googleplex.edu”),这会导致从其客户端计算机的解析器向本地 DNS 名称服务器发出 DNS 解析请求。该名称服务器同意代表解析器递归解析名称,但使用迭代请求来完成。这些请求被发送到 DNS 根名称服务器,然后依次发送到“.edu”、“googleplex.edu”和“compsci.googleplex.edu”的名称服务器。然后,IP 地址被传递到本地名称服务器,然后返回到用户的解析器,最后是她的 Web 浏览器软件。
到这里我们已经有了几乎所有的东西,只需添加以下内容:
缓存:
- 客户端可能已经知道IP地址,因此可以省略3-15。
- 所有内容可能已经缓存在递归服务器上,并且可以省略 5-13。
- 假设
www.net.compsci.googleplex.edu
最近被查询,递归名称服务器已经知道compsci.googleplex.edu
名称服务器;例如,查询时sw.compsci.googleplex.edu
,可以省略 5-10。 - 更常见的是,递归名称服务器已经知道 TLD 名称服务器;省略 5-6。
名称服务器以记录形式返回
NS
,但对于每个级别,您都需要实际的 IP 地址。如果它们没有随记录一起返回NS
,A
则还需要查询相应的记录。例如,如果位于不同 TLD 上的名称服务器。在这种情况下,递归名称服务器可能需要从根开始两次。与此密切相关的是,胶水记录是另一个话题。并非所有使用的本地 DNS 服务器都会自行执行递归,但它们可能会向其他名为货运代理同样,转发器也具有缓存功能,它们的关系类似于此图中操作系统级缓存和本地名称服务器之间的关系。
如果我们尝试将所有这些添加到同一个例子中,它将与任何解释一样复杂。