DNS解析
下面我们来仔细的分析下浏览器获取域名对应IP地址的过程。
解析过程
当用户键入网址后
第一步 查找浏览器缓存
浏览器会在本地缓存中查找该域名是否存在。如果存在,它将直接使用该 IP 地址,而不需要进行其他的步骤。浏览器缓存域名有缓存大小和缓存的时间限制。
第二步 查找系统缓存
如果浏览器中没有找到该域名,浏览器会将 DNS 查询发送到操作系统的缓存中查询。如果操作系统中存在该域名的缓存,则会直接返回对应的 IP 地址。操作系统也会有一个 DNS 解析过程,会根据本地的 hosts 文件来查询。如果你在 hosts 文件中配置了一个域名解析到的对应IP地址。那么浏览器会首先使用这个IP地址。
第三步 查找路由器缓存
如果本地计算机系统没有缓存该域名, DNS 查询会被发向路由器,并在路由器缓存中查找该域名的 IP 地址。如果找到了,该 IP 地址将被返回。
第四步 查找ISP DNS缓存
如果以上缓存中都没有找到该域名的 IP 地址,浏览器会发起 DNS 查询,并发送到互联网上的本地 ISP DNS 服务器上。如找到则直接返回,否则起到进行转发或向根服务器查询等功能。
ISP DNS 通常是提供给你接入互联网的提供商。该服务器一般会缓存域名的解析结果(存在失效时间)。一般大多数域名解析到这里就已经完成了。
第五步 递归搜索
如果以上步骤都没有找到该域名的 IP 地址,本地 DNS 服务器会向根域名服务器查询该域名的 IP 地址。根 DNS 服务器将会向本地 DNS 服务器提供下一个要进行查找的顶级域 DNS 服务器的IP。一旦本地 DNS 服务器已经知道了顶级 DNS 服务器的地址,它将向其发送一个查询请求。顶级域名服务器会给本地 DNS 服务器提供下一步 DNS 服务器的地址(通常是该域名的权威域服务器),并将其返回给本地 DNS 服务器。接着本地 DNS 服务器会去查询权威域 DNS 服务器,权威域 DNS 服务器将会提供域名对应的 IP 地址回本地 DNS 服务器,如果 DNS 记录存在就返回 IP 地址,否则返回无记录。