Skip to the content.

DNS域名解析流程

  1. 检查本机的缓存配置+hosts解析
  2. 搜索浏览器自身的DNS缓存,看自身缓存中是否有对应的未过期条目,如果有则解析结束,没有则继续下面的步骤。
  3. 如果浏览器的缓存里没有找到对应的条目,操作系统也会有一个域名解析的过程,那么浏览器先搜索操作系统的 DNS 缓存中是否有这个域名对应的解析结果,如果找到且没有过期则停止搜索,解析到此结束。在Linux中通过 /etc/hosts 文件来设置
  4. 客户端通过浏览器访问域名为 www.baidu.com (www.baidu.com) 的网站,发起查询该域名的 IP 地址的 DNS 请求。该请求发送到了本地 DNS 服务器上。本地 DNS 服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地 DNS 服务器还要向 DNS 根服务器进行查询。
  5. 本地 DNS 服务器向根服务器发送 DNS 请求
  6. 根服务器没有记录该域名及 IP 地址的对应关系会返回可以查询到该地址的域名服务器(.com 服务器)的地址
  7. 本地 DNS 服务器向 .com 服务器发送 DNS 请求
  8. com 服务器收到请求后,不会直接返回域名和 IP 地址的对应关系,而是告诉本地 DNS 服务器,该域名可以在 baidu.com 域名服务器上进行解析获取 IP 地址,并告诉 baidu.com 域名服务器的地址。
  9. 本地 DNS 服务器向 baidu.com 域名服务器发送 DNS 请求
  10. baidu.com 服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应关系,并将 IP 地址返回给本地 DNS 服务器。
  11. 本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。

来源自