Phi*_*ght 5 domain-name-system
我想了解 DNS 系统的工作原理。域名实际如何解析以及管理员如何设置域名以便正确解析到目标机器。
您在 Google 上找到的资源要么非常技术性,要么很难对整个系统有正确的感觉,要么很笨拙,它们不是很有用。任何人都有一个很好的来源来解释它的整体,但不必在阅读过程中成为专家?
到目前为止给出的答案都没有做出这些区别,但它们值得记录:
不同类型的 DNS 服务器:
这是保存有关域名的最终(权威)信息的服务器。来自此类服务器的权威答案设置了AA位。
来自权威服务器的答案总是包含来自区域文件的实际配置的TTL。即,如果 TTL 设置为 86400s,这就是响应中的值。
ISP 运行权威服务器来托管他们代表客户管理的域。由 TLD 和 ccTLD 运行的名称服务器也是权威服务器,根名称服务器也是如此。
递归解析器只接收来自存根解析器的请求。如果答案在其缓存中,它将立即返回。如果答案不在缓存中,它将迭代地向相关权威服务器询问答案,然后将其返回给存根解析器。
缓存是递归服务器的基本特性。从权威服务器收到的 TTL 继续下降,当它达到零时,条目从缓存中清除。
类似地,从递归服务器收到的答案显示了递减的值,而不是区域的原始值。根据上面的示例,如果在一小时前收到一条 TTL 为 7200 秒的记录,则递归服务器的答案将是 3600 秒。
ISP 为您的 PC 运行递归解析器,尽管大多数消费者实际上依赖其家庭网关中的DNS 代理,它将查询转发给 ISP 解析器。
存根解析器不是通常意义上的服务器,它通常是一个库,调用gethostbyname()和相关函数只是调用该库中的代码。
存根除了与递归解析器交谈外,什么也做不了,依靠递归解析器来获取它的所有答案。所有这些上游请求都设置了RD (Recursion Desired)位。
一些(但绝不是全部)存根解析器有一个缓存。
转发(或代理)服务器(通常)不缓存。它们用于在一个网络和另一个网络之间代理数据包,通常位于存根解析器和递归解析器之间。
我很难在网上找到真正好的资源。O'Reilly 的板球书籍(“DNS 和 BIND,第 5 版”)有很好的覆盖范围,但并不完全免费......
(TL;DR 版本:这很复杂,这就是为什么系统管理员在早茶时间得到所有好的饼干)
“如何查找名称”的答案基本上是整个系统就像一棵大树 - 您尝试查找的名称的每个部分都是另一个级别。在顶部,“根”服务器知道哪些 DNS 服务器负责每个“顶级”域(.com、.net、.org、.us、.eu、.uk、.au 等),并且负责每个名称的服务器知道哪些 DNS 服务器负责其下的每个域(因此 .com 服务器知道哪些 DNS 服务器负责 serverfault.com 和 stackoverflow.com,但它们不知道谁是负责 hezmatt.org——.org 域名服务器知道这一点)。
当您想知道给定名称对应的内容时,您首先要询问根服务器。他们会“推荐”您到正确的服务器以获得您想要的“顶级”名称,然后适当的“顶级”服务器将指导您从那里去哪里。最终(通常在几次跳跃之后,但没有理由不能更多)你会被指向一个知道你所问问题的实际答案的服务器,并且你会得到答案。
如果您想在工作中观察此过程,您可以使用http://squish.net/dnscheck/之类的工具来查找名称并查看可以完成的所有查询。
至于管理员如何设置 DNS 服务器并将其集成到整个系统中,这不属于上述范围。一旦您设置了 DNS 服务器来应答给定域,您需要请求您之上级别的 DNS 服务器将该域名“委托”给您的服务器。实际上,当您告诉域注册商为您“拥有”的域使用哪些 DNS 服务器时,这将由您的域注册商代表您完成。
| 归档时间: |
|
| 查看次数: |
2426 次 |
| 最近记录: |