DNS,这篇给你讲明白了( 三 )


整个流程如下图所示

DNS,这篇给你讲明白了

文章插图
 
图 7-3
DNS 解析器
进行 DNS 查询的主机和软件叫做 DNS 解析器,用户所使用的工作站和个人电脑都属于解析器 。一个解析器要至少注册一个以上域名服务器的 IP 地址 。DNS 解析器是 DNS 查找的第一站,其负责与发出初始请求的客户端打交道 。解析器启动查询序列,最终使 URL 转换为必要的 IP 地址 。
DNS,这篇给你讲明白了

文章插图
 
图 7-4
DNS 递归查询和 DNS 递归解析器不同,该查询是指向需要解析该查询的 DNS 解析器发出请求 。DNS 递归解析器是一种计算机,其接受递归查询并通过发出必要的请求来处理响应 。
DNS 查询类型
DNS 查找中会出现三种类型的查询 。通过组合使用这些查询,优化的 DNS 解析过程可缩短传输距离 。在理想情况下,可以使用缓存的记录数据,从而使 DNS 域名服务器能够直接使用非递归查询 。
 
  1. 递归查询:在递归查询中,DNS 客户端要求 DNS 服务器(一般为 DNS 递归解析器)将使用所请求的资源记录响应客户端,或者如果解析器无法找到该记录,则返回错误消息 。图 7-5
  2. 迭代查询:在迭代查询中,如果所查询的 DNS 服务器与查询名称不匹配,则其将返回对较低级别域名空间具有权威性的 DNS 服务器的引用 。然后,DNS 客户端将对引用地址进行查询 。此过程继续使用查询链中的其他 DNS 服务器,直至发生错误或超时为止 。图 7-6
  3. 非递归查询:当 DNS 解析器客户端查询 DNS 服务器以获取其有权访问的记录时通常会进行此查询,因为其对该记录具有权威性,或者该记录存在于其缓存内 。DNS 服务器通常会缓存 DNS 记录,查询到来后能够直接返回缓存结果,以防止更多带宽消耗和上游服务器上的负载 。
DNS 缓存 
DNS 缓存(DNS caching) 有时也叫做DNS 解析器缓存,它是由操作系统维护的临时数据库,它包含有最近的网站和其他 Internet 域的访问记录 。也就是说,DNS 缓存只是计算机为了满足快速的响应速度而把已加载过的资源缓存起来,再次访问时可以直接快速引用的一项技术和手段 。那么 DNS 的缓存是如何工作的呢?
DNS 缓存的工作流程
在浏览器向外部发出请求之前,计算机会拦截每个请求并在 DNS 缓存数据库中查找域名,该数据库包含有最近的域名列表,以及 DNS 首次发出请求时 DNS 为它们计算的地址 。
DNS 缓存方式
DNS 数据可缓存到各种不同的位置上,每个位置均将存储 DNS 记录,它的生存时间由 TTL(DNS 字段) 来决定 。
浏览器缓存
现如今的 Web 浏览器设计默认将 DNS 记录缓存一段时间 。因为越靠近 Web 浏览器进行 DNS 缓存,为检查缓存并向 IP 地址发出请求的次数就越少 。发出对 DNS 记录的请求时,浏览器缓存是针对所请求的记录而检查的第一个位置 。
在 chrome 浏览器中,你可以使用 chrome://net-internals/#dns 查看 DNS 缓存的记录 。
DNS,这篇给你讲明白了

文章插图
 
图 7-7
操作系统内核缓存
在浏览器缓存查询后,会进行操作系统级 DNS 解析器的查询,操作系统级 DNS 解析器是 DNS 查询离开你的计算机前的第二站,也是本地查询的最后一个步骤 。
DNS 报文
共同实现 DNS 分布式数据库的所有 DNS 服务器存储了*资源记录(Resource Record, RR)*,RR 提供了主机名到 IP 地址的映射 。每个 DNS 回答报文中会包含一条或多条资源记录 。RR 记录用于回复客户端查询 。
资源记录是一个包含了下列字段的 4 元组 。
(Name, Value, Type, TTL)
RR 会有不同的类型,下面是不同类型的 RR 汇总表 。
DNS RR 类型解释A 记录IPv4 主机记录,用于将域名映射到 IPv4 地址AAAA 记录IPv6 主机记录,用于将域名映射到 IPv6 地址CNAME 记录别名记录,用于映射 DNS 域名的别名MX 记录邮件交换器,用于将 DNS 域名映射到邮件服务器PTR 记录指针,用于反向查找(IP地址到域名解析)SRV 记录SRV记录,用于映射可用服务 。


推荐阅读