DNS

149 阅读1分钟

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标记来自动预解析
    <meta http-equiv="x-dns-prefetch-control" content="on"> // off 关闭
    
    也可以通过在服务器端发送 X-DNS-Prefetch-Control 报头

参考