系统架构设计笔记(107)—— 域名服务器

197 阅读10分钟

DNS ( Domain Name Server ,域名服务器)是进行域名 (domain name) 和与之相对应的 IP 地址( IP address)转换的服务器。 DNS 中保存了一张域名 (domain name) 和与之相对应的 IP 地址( IP address)的表,以解析消息的域名。

域名是 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

1 概述

把域名翻译成 IP 地址的软件称为域名系统,即 DNS。 它是一种管理名字的方法。这种方法是:分不同的组来负责各子系统的名字。系统中的每一层叫做一个域,每个域用一个点分开。所谓域名服务器(即 Domain Name Server ,简称 Name Server )实际上就是装有域名系统的主机。它是一种能够实现名字解析( name resolution )的分层结构数据库。

2 域名解析

(1)注册域名

你在域名注册并购买了主机服务后,你需要将域名解析到所购买的主机上,才能看到网站内容。在绝大部分情况下, DNS 域名服务器解析好域名后,并不能马上看到网站内容,而是要过几个小时,甚至一两天才能打开你的网站。

(2)解析过程

要明白为什么域名解析需要这么长时间,就需要了解域名解析过程和 DNS 服务器的作用。

互联网上的每一台电脑都被分配一个 IP 地址,数据的传输实际上是在不同 IP 地址之间进行的。包括我们在家上网时使用的电脑,在连上网以后也被分配一个 IP 地址,这个 IP 地址绝大部分情况下是动态的。也就是说你关掉调制解调器,再重新打开上网,你的上网接入商会随机分配一个新的 IP 地址。

网站服务器本质上也是一台连上网的电脑,只不过配置上更适合作为服务器,并且放在数据中心,保持低温,低尘环境,同时有安全保卫。这些服务器使用固定 IP 地址连入互联网。

一个域名解析到某一台服务器上,并且把网页文件放到这台服务器上,用户的电脑才知道去哪一台服务器获取这个域名的网页信息。这是通过域名服务器来实现的。

域名服务器 DNS 是英文 Domain Name Server 的缩写。每一个域名都至少要有两个 DNS 服务器,这样如果其中一个 DNS 服务器出现问题,另外一个也可以返回关于这个域名的数据。 DNS 服务器也可以有两个以上,但所有这些 DNS 服务器上的 DNS 记录都应该是相同的。

在 DNS 服务器中保留有该域名的 DNS 记录,比如 A 记录, MX 记录。 A 记录是用来指定主机名(或域名)对应的 IP 地址。 MX 记录用来解析域名的邮件服务器。

当一个浏览者在浏览器地址框中打入某一个域名,或者从其他网站点击了链接来到了这个域名,浏览器向这个用户的上网接入商发出域名请求,接入商的 DNS 服务器要查询域名数据库,看这个域名的 DNS 服务器是什么。然后到 DNS 服务器中抓取 DNS 记录,也就是获取这个域名指向哪一个 IP 地址。在获得这个 IP 信息后,接入商的服务器就去这个 IP 地址所对应的服务器上抓取网页内容,然后传输给发出请求的浏览器。

这个过程描述起来蛮复杂,但实际上不到一两秒钟就完成了。

3 域名类型

一是国际域名( international top-level domain-names ,简称 iTDs ),也叫国际顶级域名。这也是使用最早也最广泛的域名。例如表示工商企业的 .com .top ,表示网络提供商的 .net ,表示非盈利组织的 .org 等。

二是国内域名,又称为国内顶级域名( national top-level domainnames ,简称 nTLDs ),即按照国家的不同分配不同后缀,这些域名即为该国的国内顶级域名 。200 多个国家和地区都按照 ISO3166 国家代码分配了顶级域名,例如中国是 cn ,美国是 us ,日本是 jp 等。

4 类型

主域名服务器

负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。

辅助域名服务器

当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。辅助域名服务器中的区域文件中的数据是从另外的一台主域名服务器中复制过来的,是不可以修改的。

缓存域名服务器

从某个远程服务器取得每次域名服务器的查询回答,一旦取得一个答案就将它放在高速缓存中,以后查询相同的信息就用高速缓存中的数据回答,缓存域名服务器不是权威的域名服务器,因为它提供的信息都是间接信息。

转发域名服务器

负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

5 优点

之所以域名解析不需要很长时间,是因为上网接入商,比如北京电信,河南电信等,为了要加速用户打开网页的速度,通常在他们的 DNS 服务器中缓存了很多域名的 DNS 记录。这样这个接入商的用户要打开某个网页时,接入商的服务器不需要去查询域名数据库,而是把自己缓存中的 DNS 记录直接使用,从而加快用户访问网站的速度。这是优点。

6 缺点

缺点是上网接入商 ISP 的缓存会存储一段时间,只在需要的时候才更新,而更新的频率没有什么标准。有的 ISP 可能1小时更新一次,有的可能长达一两天才更新一次。

所以新注册的域名一般来说解析反倒比较快。因为所有的 ISP 都没有缓存,用户访问时 ISP 都是要查询域名数据库,得到最新的 DNS 数据。

而老域名如果更改了 DNS 记录,但世界各地的 ISP 缓存数据却并不是立即更新的。这样不同 ISP 下的不同用户,有的可以比较快的获取新的 DNS 记录,有的就要等 ISP 缓存的下一次更新。

7 提供商

最后要说明的一点是, DNS 服务器和网页服务器可以是同一个提供商提供的,也可以是不同的。通常虚拟主机提供商也提供自己的 DNS 服务器,这样用户只要把自己的域名指向虚拟主机提供商自己的域名服务器就可以了。有的用户喜欢使用域名注册服务商提供的 DNS 服务器,这时候用户就要在域名注册商的 DNS 服务器中更改 DNS 记录,如 A , MX 记录等到虚拟主机提供商的 IP 地址。

8 DNS解析过程

DNS是应用层协议,事实上它是为其它应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。

具体过程如下:

①用户主机上运行着DNS的客户端,客户端指的是我们的PC机或者手机;

②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.163.com/, 并将这个主机名传送给DNS应用的客户端;

③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段;

④该DNS客户端最终会收到一份回答报文,其中包含有该主机名对应的IP地址;

⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接。

9 分布式集群

DNS 的一种简单的设计模式就是在因特网上只使用一个 DNS 服务器,该服务器包含所有的映射,在这种集中式的设计中,客户机直接将所有查询请求发往单一的 DNS 服务器,同时该 DNS 服务器直接对所有查询客户机做出响应,尽管这种设计方式非常诱人,但他不适用当前的互联网,因为当今的因特网有着数量巨大并且在持续增长的主机,这种集中式设计会出现单点故障问题,而且在通信容量、远距离时间延迟、维护开销等方面也都存在着难以逾越的巨大问题。

10 分类

DNS 服务器一般分三种:根 DNS 服务器,顶级 DNS 服务器,权威 DNS 服务器 。

(1)根 DNS 服务器

互联网的顶级域名解析服务由根服务器完成,根服务器对网络安全 、 运行稳定至关重要,被称为互联网的 “ 中枢神经 ” 。随着互联网+ 、 物联网和工业互联网等网络应用融合发展,原有 IPv4 体系已经不能满足需求。基于 IPv6 的新型地址结构为新增根服务器提供了契机。下一代互联网国家工程中心于 2013 年联合日本和美国相关运营机构和专业人士发起 “ 雪人计划 ” ,提出以 IPv6 为基础 、 面向新兴应用 、 自主可控的一整套根服务器解决方案和技术体系。

(2)顶级 DNS 服务器

负责顶级域名( 如 com、org、net、edu 等)以及所有国家顶级域名(如 uk、frca、jp 等)的解析工作。

(3)权威 DNS 服务器

某些机构内的 DNS 服务器,负责对本机构内的一些服务器提供 “ 权威 ” 的主机名到 IP 地址的映射。它由组织机构自己或者 ISP 进行维护。

ISP,互联网服务提供商(Internet Service Provider)指的是面向公众提供以下这些信息服务的经营者。 一是接入服务,即帮助用户接入Internet; 二是导航服务,即帮助用户在Internet上找到所需要的信息; 三是信息服务,即建立数据服务系统,收集、加工、存储信息,定期维护更新,并通过网络向用户提供信息内容服务。

11 域名称空间的组织方式

名称类型说明示例
根域使用尾部句点来间隔域层次结构
顶级域指定国家、地区或组织类型名称.com
第二层域个人或组织在互联网上使用的注册名称163.com
子域已注册的二级域名www.163.com
主机名特定服务器,比如 img 表示图片服务器img.www.163.com