我对 DNS 有很大疑问。我一直在看一些视频并阅读有关 DNS 工作原理的文章。我认为除了一点之外,我已经理解了。为什么我需要在我的 win 7 操作系统或 Ubuntu 机器中指定 DNS 服务器?有时它被配置为我的 ISP 分配给我的服务器,有时我测试了 google 的公共 dns 服务器(8.8.8.8)。我不明白这些 DNS 服务器是什么意思。
据我所知,操作系统有一个解析名称服务器。它负责查询根名称服务器以获取 TLD 名称服务器,然后查询权威名称服务器以最终获取 IP。根名称服务器的 IP 被“硬编码”到操作系统中。所以我不明白为什么我需要我的 ISP DNS 服务器或谷歌的 DNS 服务器,我的操作系统可以自行解决!
多谢!
答案1
简短回答:您选择不使用 DHCP,它会自动配置您的 ISP 名称服务器(或您的家庭路由器的附加 DNS 缓存层)的 IP 地址。
解释:
DNS 解析器不会直接查询根服务器,因为这样做效率很低。根服务器必须处理数十亿台互联网连接设备的所有负载,并且如果解析器进行多个非递归查询(并且比必要的更复杂),DNS 查找可能会变得非常慢。
所以,ISP 运营“递归”或“缓存”名称服务器供其客户使用。理想情况下,服务器应位于附近,以尽量减少延迟。许多家用路由器甚至提供额外的缓存层 - 如果您的 DNS 服务器地址与网关地址相同,则很可能如此。
举例来说,您的 Web 浏览器需要知道 IP 地址,superuser.com.
并向您的 ISP 的名称服务器询问。与直接查询权威服务器相比,这样做具有以下性能优势:
当另一个解析器提出相同问题时,您的 ISP 的名称服务器可能实际上知道答案,从而节省时间和带宽。
即使您的 ISP 的名称服务器还不知道答案,它也可能知道在哪里查找:名称
.com.
服务器。当解析器询问另一个 .com 域名时,它知道它们的地址。它可以记住答案,以防以后收到相同的查询。与特定答案相关的“生存时间”(TTL) 使服务器在一段时间后忘记它,以防止过时的信息永远存在。
每个 ISP 的名称服务器都有不同的 IP 地址,因此 DNS IP 地址不能硬编码。也许所有 ISP 运营的递归 DNS 服务器都可以使用以下方式聚集在一个 IP 地址下:任播就像 Google Public DNS 一样,但这样做没有意义,因为自动配置 DNS 的问题已经通过 DHCP 和 PPP 等协议解决了。
DHCP 和 PPP 不仅允许配置客户端的 IP 地址,还允许配置其 DNS 服务器地址。如果您明确选择不使用 DHCP,则仅需要手动指定 DNS 服务器地址。
答案2
除非我大错特错,否则根名称服务器不会“硬编码”到任何操作系统中。如您所知,DNS 用于将网站名称(或服务器名称)解析为 IP 地址。除非您的机器从 DHCP 服务器获取 DNS,或者除非您明确告知服务器/计算机要查询哪些 DNS 服务器,否则您的服务器(或 Windows 机器或其他设备)将无法解析任何网站地址。
在 Linux 中,可以通过编辑 /etc/resolv.conf 来完成。在 Windows 中,可以通过编辑网络适配器的设置来完成。
答案3
据我所知,操作系统有一个解析名称服务器。
默认情况下它不会(除非您已经安装了一个。)
所以我不明白为什么我需要我的 ISP dns 服务器或谷歌的 dns 服务器,我的操作系统可以自行解决这个问题!
理论上,您可以安装自己的 DNS 服务器并在 LAN 中使用它来解析所有域名。Google 和 ISP 的服务器可以为您节省解析名称的时间,因为它们有大量最近解析的名称缓存。它们可以为您节省设置自己的名称服务器的努力。此外,您应该注意,没有那么多普通人(非技术人员)愿意安装任何服务器等,他们只想在计算机上工作。
答案4
DNS 层次结构的设计方式是为了限制发送到根服务器的查询数量。有一些可靠且被认为安全的服务器提供 DNS 解析,例如 opendnshttp://www.opendns.com/-如果您担心安全问题,您可以使用他们的服务器。
您的 ISP DNS 服务器能够缓存一些查询,从而更快地回答它们。