域名DNS解析的一些专业知识

DNS(英语:Domain Name System,缩写:DNS),一般来说DNS服务器分为:DNS权威服务器与DNS缓存服务器。DNS权威服务器采用迭代查询方式,而DNS缓存服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。

DNS权威服务器就是我们所说的DNS解析服务器,几乎所有域名注册服务商都会提供。

而DNS缓存服务器一般包括ISP服务商DNS服务器或一些公共DNS服务器,例如114 DNS(114.114.114.114,)、百度公共DNS(180.76.76.76)等。

域名解析记录类型

DNS系统中,常见的资源记录类型有:

  • 主机记录(A记录):A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
  • 别名记录(CNAME记录): CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
  • IPv6主机记录(AAAA记录): 与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
  • 服务位置记录(SRV记录): 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
  • 域名服务器记录(NS记录) :用来指定该域名由哪个DNS服务器来进行解析。注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现: ns1.domain.com、ns2.domain.com等。 简单的说,NS记录是指定由哪个DNS服务器解析域名。
  • NAPTR记录:它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

域名解析的技术实现

DNS通过允许一个名称服务器把它的一部分名称服务(众所周知的zone)“委托”给子服务器而实现了一种层次结构的名称空间。此外,DNS还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽。

任何一个使用IP的计算机网络可以使用DNS来实现它自己的私有名称系统。尽管如此,当提到在公共的Internet DNS系统上实现的域名时,术语“域名”是最常使用的。

这是基于984个全球范围的“根域名服务器”(分成13组,分别编号为A至M)。从这984个根服务器开始,余下的Internet DNS名字空间被委托给其他的DNS服务器,这些服务器提供DNS名称空间中的特定部分。

举一个例子,www.php.net 作为一个域名就和IP地址185.85.0.29相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打185.85.0.29 的名字www.php.net 来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像www.php.net 便于人类使用的名字转化成像185.85.0.29一样便于机器识别的IP地址。

以查询www.php.net为例:

  • 客户端发送查询报文”query www.php.net”至DNS缓存服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
  • 如果记录老化或不存在,则:
    1. DNS服务器向根域名服务器发送查询报文”query www.php.net”,根域名服务器返回顶级域 .net 的权威域名服务器地址。
    2. DNS服务器向 .net 域的权威域名服务器发送查询报文”query www.php.net”,得到二级域 .php.net 的权威域名服务器地址。
    3. DNS服务器向 .php.net 域的权威域名服务器发送查询报文”query www.php.net”,得到主机 www 的A记录,存入自身缓存并返回给客户端。

以上示例中,有一个关键的值就是缓存时间(TTL)。在做域名解析设置的时候,每个记录都会有一个TTL值,一般默认设置为10分钟(600秒),这就是该记录的缓存时间,一旦缓存过期,或缓存不存在,就会重复以上的1、2、3步骤。

也就是说,TTL值如果设置过小,则会频繁查询根域名服务器和权威域名服务器。TTL值如果设置较大,则多数情况下在DNS缓存服务器中直接返回结果,加快域名解析的速度。但TTL值如果设置较大,就会有修改解析记录生效较慢的弊端。

TTL值的大小、域名的DNS解析服务器的性能,均会影响域名正常解析或用户体验。

智能DNS解析

一般需要用到智能DNS解析的话,是在开启CDN或服务器有多个镜像的情况下,根据不同线路或地域来判断解析值的一种方式。智能DNS是针对电信和网通互联互通不畅的问题推出的一种DNS解决方案,后来不断升级到根据不同地域(例如划分省、城市、或国家)、不同运营商(例如:电信、联通、移动、长城宽带)等方式。

具体来说,就是把同样的域名记录分别设置指向不同的值(IP),根据客户端的指定条件来判断应该返回该域名记录的哪一条值(IP)。


发表评论