【易错求解】DNS解析时,是如何处理的?

问题描述

DNS解析时,是如何处理的?比如说链路上有什么?(本机 hosts 文件、浏览器、路由器、ISP、城域网、广域网、根域名、定级域名)

问题出现的环境背景及自己尝试过哪些方法

相关代码

你期待的结果是什么?实际看到的错误信息又是什么?

  1. 期望有比较官方的参考文献。
  2. 希望有可以观察的方法。比如说 wireshark
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
阅读 1.5k
1 个回答

DNS解析的过程大致如下:

  1. 应用程序发起域名解析请求,如果本机的 hosts 文件中有对应的映射关系,直接返回 IP 地址,否则进入下一步。
  2. 本机 DNS 缓存中查找是否有对应的 IP 地址,如果有且未过期,直接返回 IP 地址,否则进入下一步。
  3. 本机 DNS 客户端向配置的 DNS 服务器发送查询请求,如果 DNS 服务器缓存中有对应的 IP 地址,直接返回 IP 地址,否则进入下一步。
  4. DNS 服务器向根域名服务器发送查询请求,根域名服务器返回顶级域名服务器的 IP 地址。
  5. DNS 服务器向顶级域名服务器发送查询请求,顶级域名服务器返回指向下一级域名服务器的 IP 地址。
  6. DNS 服务器向下一级域名服务器发送查询请求,直到查询到最终的 IP 地址,并将该 IP 地址返回给本机 DNS 客户端。
  7. 本机 DNS 客户端将获取到的 IP 地址缓存到本机 DNS 缓存中,下次可以直接使用。

在 DNS 解析的过程中,涉及到的链路可以包括本机 hosts 文件、本机 DNS 缓存、本机 DNS 客户端、本地路由器、ISP(网络服务提供商)的 DNS 服务器、城域网、广域网、根域名服务器、顶级域名服务器、下一级域名服务器等。具体涉及哪些链路取决于网络拓扑和域名的层级结构。

如果想要观察 DNS 解析过程,可以使用 Wireshark 进行抓包分析。在 Wireshark 中可以通过设置过滤器来只显示 DNS 相关的数据包,从而更清晰地观察 DNS 解析过程中的数据交互情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题