DNS解析过程
- 在浏览器缓存中查找,有没有该域名的IP映射,若有,直接返回
- 若没有,在本地找hosts文件,看有没有
- 若没有,则向本地DNS服务器发起请求,本地DNS服务器看缓存里有没有该域名的IP映射,若有,则直接返回
- 若没有,则看本地DNS服务器有没有设置转发,若没有,向根服务器发起请求,根服务器找相关负责的IP,然后本地DNS服务器再发起请求,直至找到为止
- 若设置了转发,则转发到相应到DNS服务器上,依次查找
DNS相关知识点
- DNS是应用层协议
- 通过UDP协议传递数据,不需要TCP的三次握手
- 浏览器到本地DNS服务器到查询和转发查询是递归查询;本地DNS服务器到根服务器到查询是迭代查询
- DNS架构是分布式的
- 浏览器的DNS缓存时间是根据浏览器不同而不同;本地的DNS缓存时间根据TTL时间和大小
DNS预解析
自动解析
- 当遇到a标签,浏览器会自动将href中的域名解析为IP地址,这个解析过程是与用户浏览网页并行处理的。
- 但是为了确保安全性,在HTTPS页面中不会自动解析
手动解析
- 手动添加对某个域名的解析
<link rel="dns-prefetch" href="http://www.google.com">
- 通过添加x-dns-prefetch-control标记来自动预解析
也可以通过在服务器端发送 X-DNS-Prefetch-Control 报头<meta http-equiv="x-dns-prefetch-control" content="on"> // off 关闭