-
DNS(Domain Name Server)用来返回某个域名对应主机的ip的服务器
-
根DNS (.)
- 只负责提供各类顶级DNS服务器ip地址. 是域名解析的入口.
-
顶级DNS (TLD, Top Level Domain)
-
负责提供二级域名的DNS服务器IP地址.
-
每一个顶级域名都有对应的DNS的服务器,
- 它们通常由专门的机构公司来维护. 比如
.com由Verisign Global Registry Services公司维护,.edu由Educause公司维护. - 它们各自提供自家域名下的子域名(二级域名)的名称服务. 通常我们所说的"购买域名"就是向这些公司的数据库注册一条记录.
- 它们通常由专门的机构公司来维护. 比如
-
-
权威DNS
- 负责提供三级域名对应的主机IP地址。由域名购买者提供,大多数域名注册公司同时提供了权威DNS托管服务。
-
-
获取域名对应的服务器ip的过程:
-
1)浏览器缓存
-
当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);
-
2)系统Hosts
-
当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件是否有该域名对应IP;
-
3)本地域名服务器
-
当在用户客服端查找不到域名对应IP地址,则将进入本地DNS缓存中进行查询。通常这个本地域名DNS会配置成运营商(ISP)指定的DNS,但也不是必须的。
-
4)迭代查询
-
当以上均未完成,则会由本地DNS开始进行迭代查询:
-
5)保存结果至缓存
- 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接
-
-
- 向根域名服务器查询,得到顶级域名服务器的IP地址
-
- 向顶级域名服务器查询,得到权威域名服务器的IP地址
-
- 向权威域名服务器查询,最终得到域名的ip
-
-
DNS预解析
-
DNS Prefetching 是让具有此属性的域名在加载网页时(不需要用户点击链接)就在后台解析
- 域名解析和内容载入是串行的网络操作,所以这个方式能减少用户的等待时间,提升用户体验
-
默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的 DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的 DNS Prefetch 了
-
- 用meta信息来告知浏览器, 当前页面要做DNS预解析:
-
-
在页面header中使用link标签来强制对DNS预解析:
- 注:dns-prefetch需慎用,多页面重复DNS预解析会增加重复DNS查询次数。
- PS:DNS预解析主要是用于网站前端页面优化,在SEO中的作用还未作验证,但作为增强用户体验的一部分rel="dns-prefetch"或许值得大家慢慢发现。
-
-