【浏览器工作原理】03 - DNS域名解析

487 阅读2分钟

我们一般记住网站是记住网站的名称,但是很难记住网站的 IP 地址,所以我们需要一个地址簿来进行索引,而在网络中的地址簿就是 DNS 服务器

DNS 服务器是高并发高可用分布式的,其为树状结构,如下图所示:

image.png

DNS 服务器按照层次可以分为以下三种

  • 根域 DNS 服务器

    根域就是所谓的 . 比如 www.baidu.com,在配置中应该是 www.baidu.com. (后面还有一个点),一般我们在浏览器里输入时会省略后面的点

    返回顶级域 DNS 服务器的 IP 地址

  • 顶级域 DNS 服务器 - 返回权威 DNS 服务器的 IP 地址

  • 权威 DNS 服务器 - 返回响应主机的 IP 地址

如何区分当前域名是几级域,可以参考域名中有几个点来判断(除了根域外),比如baidu.com就是个一级域,而www.baidu.com就是个二级域(它是在baidu.com这个域里面有一个叫做www的主机)

DNS 域名查找规则:

  • 在客户端和浏览器:本地 DNS 之间的查询方式是递归查询
  • 在本地 DNS 服务器与根域及其子域之间的查询是迭代查询

递归查询:

image.png

客户端输入 URL 之后,开始递归查找,任意一个查找过程中找到了都会结束查找流程

本地浏览器缓存中查找(chrome://dns/) → 本地 hosts 文件查找 → 本地 DNS 解析器缓存查找 → 本地 DNS 服务器查找

如果在本地 DNS 服务器中无法查找到,则会根据本地 DNS 服务器设置的转发器查询,但是如果未设置转发器,则迭代查找的过程如下:

image.png

在查找的过程中有以下的优化点:

  • DNS 存在多级缓存 - 按照离浏览器的距离排序的话:

    浏览器缓存 → 系统缓存 → 路由器缓存 → IPS 服务器缓存 → 根域名服务器缓存 → 顶级域名服务器缓存 → 主域名服务器缓存

  • 在域名和 IP 的映射过程中,给了应用基于域名做负载均衡的机会。