对于一次web访问,一般认知的DNS查询次序如下
浏览器缓存->操作系统dnscache ->hosts文件->本地域名服务器->根域名服务器->顶级域名服务器->权威域名服务器。
最近博主在win10下做了一下实验发现,实际的DNS查询次序,和上述认知有一定出入,主要区别在hosts,下面是几个结论:
- win10会在启动时加载hosts中的条目到操作系统dns缓存。
- win10会实时监视hosts文件的变化,如新加或删除条目,并实时更新操作系统DNS缓存。
- 如果尝试解析一个未知的域名,win10并不会访问hosts,观察依据是hosts的访问时间在此动作后不会更新。
所以win10下实际的dns查询次序是
浏览器缓存->操作系统dnscache【包含hosts里的条目】->非权威域名服务器->根域名服务器->顶级域名服务器->权威域名服务器。
其它系统,有条件的同学试一试。