DNS 名称解析如何工作?

DNS 名称解析如何工作?

有人能为我提供一个关于 DNS 名称解析如何工作的全面解释吗?我见过一些简化的示例,其中客户端连接到根 DNS 服务器(“。”),然后将客户端发送到下一级 DNS 服务器(“com”),然后客户端继续沿着树向下移动。

DNS 名称解析实际上是这样工作的吗?这是否意味着每个“com”服务器都必须拥有以“.com”结尾的每个域的 NS 记录?这似乎有很多域。或者“.com”的权限是否分散在几个不同的服务器中?

答案1

DNS 名称解析实际上是这样工作的吗?

是的。DNS一个相当简单的系统。

这是否意味着每个“com”服务器都必须拥有每个以“.com”结尾的域名的 NS 记录?这似乎有很多域名。

会,但事实并非如此很多。维基百科说该区域有大约 1.46 亿个域名.com,因此经过一些粗略计算(取一个随机域名的 NS 记录大小并乘以 146M),您可能可以将所有 NS 和 glue 记录放入 32 GB 的 RAM 中。对于服务器来说,这并不多。

(尽管额外的 DNSSEC 记录会使区域膨胀到其原始大小的几倍,尤其是对于 RSA 签名,但这仍然是可行的 - 具有 256 或 512 GB 内存的服务器仍然在合理范围内。)

举个实际的例子,se瑞典的整个地区都是免费开放的下载。它有大约 140 万个域名(大约是 .com 大小的 1%),区域传输下载了 920 MB 的二进制数据,最终生成了一个 1.3 GB 的文本格式区域文件(即DNSSEC 签名 – 只有 270 MB 未签名)。

配置 BIND 9 来托管se区域后,将所有数据加载到内存中后占用了 2 GB 的 RAM。这意味着该com区域(包含 DNSSEC 签名)将按比例需要大约 200 GB 的内存。

来自评论,另一个类似的问题在服务器故障有人com通过 ICANN CZDS 获取实际的区域文件,其大小为 22 GB(虽然没有提到是否包含 DNSSEC 签名,但听起来好像没有)。

或者“.com”的权限是否分布在几个不同的服务器上?

纯 DNS 无法做到这一点,因为 NS 记录不能局限于特定的子域范围——它们总是将整个层次结构向下委托。

(如果没有 DNSSEC,理论上可以使用专用的 DNS 请求代理(类似于 HTTP 反向代理)来完成,该代理会将请求转发到不同的权威服务器,每个服务器响应自己的名称范围。但是有了 DNSSEC,这看起来会变成很多更加复杂,因为“不存在证明”记录将不再按预期发挥作用。

每个大区域确实有多个名称服务器,但这只是为了共享请求负载(和冗余) - 它们都可以访问相同的数据。

相关内容