我刚刚开始研究网络,我对默认 DNS 服务器对其他 DNS 服务器进行迭代查询以解析 IP 地址中的名称时会发生什么感到困惑。我很困惑,尤其是在这个过程中数据链路层发生了什么。在网上看书和询问我的理解是在迭代查询期间不涉及数据链路层,但我也知道一个数据包在发送时必须经过所有层,所以也通过第 2 层。所以我的困惑是,如果默认 DNS 需要知道它询问迭代查询的 DNS 的 MAC 地址,那么它是否需要执行 ARP 请求。
有人可以帮我解决我的困惑吗?
我刚刚开始研究网络,我对默认 DNS 服务器对其他 DNS 服务器进行迭代查询以解析 IP 地址中的名称时会发生什么感到困惑。我很困惑,尤其是在这个过程中数据链路层发生了什么。在网上看书和询问我的理解是在迭代查询期间不涉及数据链路层,但我也知道一个数据包在发送时必须经过所有层,所以也通过第 2 层。所以我的困惑是,如果默认 DNS 需要知道它询问迭代查询的 DNS 的 MAC 地址,那么它是否需要执行 ARP 请求。
有人可以帮我解决我的困惑吗?
在这方面,DNS 与任何其他上层协议没有什么不同。如果它决定在某个任意 IP 地址abcd联系另一台主机,它会构造其数据并通过适当的 UDP 或 TCP(或其他)协议将其发送到abcd 。下层决定如何将数据包发送到abcd。如果是本地的,将对该本地第 2 层执行任何正常操作:如果是以太网,它将为它进行 ARP;如果它是直接串行链接,则只会发送它。如果目标地址是非本地地址,它会根据其路由表发送数据包:通常通过任何可用的链接转发到默认网关。
这些层的全部意义在于我们不考虑第 4 层协议 (DNS) 在第 2 层(以太网)上所做的事情。给定服务器上的 DNS 软件甚至不知道该服务器是否有以太网:它只知道其他 DNS 服务器的 IP 地址,无论是上游还是根。给定服务器上的以太网软件不注意帧的内容,并且从不查看数据包的内部,除非将其复制到适当的硬件。
总的来说,说服务器硬件正在运行两个程序是正确的,其中一个知道“下一个名称服务器是abcd ”,并且(假设它是本地的并通过以太网连接)另一个知道“主机abcd的地址为aa:bb :cc:xx:yy:zz " 但是没有一个软件同时具备这两个事实。