DNS 的作用

VSO*_*VSO 0 networking router dns internet ip

DNS 会在请求过程中的什么时候发挥作用?下面的逻辑流程是否正确?如果是这样,在该过程中的哪个 DNS 服务器被调用以转换google.com216.68.248.42?(或者我完全误解了,每个路由器都有一个域名/IP键值对或其他东西的列表)

  1. 计算机发出带有“google.com”地址的数据包。
  2. 数据包传输到本地路由器并转发到 ISP。
  3. 通过 ISP 路由器转发到 ISP 网络的数据包(如何?似乎还没有 IP,只是“google.com”)。
  4. 数据包在 ISP 的网络中移动,并可能移动到另一个 IPS。
  5. 数据包到达目的地。
  6. 发送回发卡机构 IP 地址的响应数据包。

在这些步骤中,我没有看到“DNS 服务器要求提供‘google.com’的 IP 地址”(问这个问题/打电话的原因是什么?)。此外,如果我tracert访问 google.com,我在任何地方都看不到 DNS 受到攻击。

那么,“google.com”在哪一步变成了 216.68.248.42?

use*_*686 7

DNS 的工作方式与电话簿非常相似——您拨打电话之前先查找号码;同样,操作系统google.com在发送任何数据包之前查找地址,当 IP 数据包“发出”并到达第一个路由器时,它的标头中已经有了原始 IP 地址。

这样路由器就完全不必处理域名——路由与“域名”完全分开,一个可以改进或替换而不会影响另一个。

DNS 查询本身也是常规 IP 数据包(特别是 UDP 端口 53)并且受相同 IP 路由的约束。整个过程看起来有点像下面这样:

  1. 程序想www.google.com:80通过 TCP连接。
  2. 程序要求操作系统的 DNS 库解析www.google.com为 IP 地址列表。
  3. DNS 库使用 OS 功能向预配置的 DNS 服务器发送 UDP“DNS 查询”数据包。
  4. DNS 查询数据包按照您的步骤 2-6 进行路由。
  5. DNS 库收到响应数据包。
  6. 程序接收 IP 地址列表。
  7. 程序使用操作系统功能建立到接收地址之一的 TCP 连接。
  8. TCP 数据包也按照步骤 2-6 进行路由。

至于如何获得初始DNS服务器地址(用于步骤3):

  • 您操作系统的内置“存根”解析器仅使用一台服务器(例如您的 ISP 或公共服务器,如 Google 的“8.8.8.8”)并让它执行所有工作——该服务器地址可以手动配置,也可以通过以下方式接收来自路由器的 DHCP。在 Windows 上,相同的“IP 配置”屏幕有一个用于 DNS 服务器的字段。在 Linux 上,它是/etc/resolv.conf.

  • 您的 ISP 的“递归”解析器自己执行完整的查找过程,因此它们从 Internet根名称服务器的内置列表开始,并跟踪委托(root ? com ? google.com)。

  • @VSO:已经回答了一半。DNS 不可能出现在 traceroute 中,因为 DNS 查找根本不参与路由。(DNS 查询数据包_自身_是常规 IP/UDP 数据包,并按原样路由。) (2认同)