浏览器缓存
浏览器缓存的域名是有限制的,不仅浏览器缓存大小有限制,而且缓存时间也有限制,通常情况为2-30分钟不等,域名被缓存的时间限制可以通过 TTL 属性来设置。
浏览器检查缓存中是否存在该域名的 IP 地址,如果存在,解析过程结束。
操作系统缓存
如果浏览器缓存中解析失败,则会将查询任务交给操作系统。操作系统优先查询缓存中是否存在,如存在解析结束,若不存在,则读取配置文件(在 Windows 中配置文件:C:\Windows\System32\drivers\etc\hosts ,在 Linux 中配置文件 /etc/named.conf ),如存在解析结束。
操作系统会缓存从配置文件中解析的结果,缓存的时间同样受这个域名的失效时间和缓存的空间大小控制。
操作系统中配置文件可以将任何域名解析到任何能够访问的 IP 地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码。也因为有这种本地 DNS 解析的规程,所有黑客能通过修改本地域名解析来实现域名劫持。
路由器缓存
如果操作系统在操作系统缓存及配置文件中都解析失败,则会将域名发送至 LDNS (本地区域名服务器,该地址就是网络配置中的 DNS 服务器地址)。LDNS 会缓存域名解析结果,结果在缓存中存在则解析结束
ISP DNS 缓存
如果 LDNS 解析失败,LDNS 则会向根服务器发起解析请求,返回顶级国际域名服务器解析地址,然后向顶级域名服务器地址发起解析请求,返回域名服务商的解析地址,然后再向域名服务商请求解析,得到对应的 IP,告知浏览器