域名系统DNS (Domain Name System)
早在1983年,因特网就开始采用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS。
DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。
由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。
因特网采用层次树状结构的域名结构
域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
···.三级域名.二级域名.顶级域名
-
每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母。
-
级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
-
完整的域名不超过255个字符。
域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
顶级域名TLD (Top Level Domain)分为以下三类:
-
国家顶级域名nTLD 采用ISO 3166的规定。如cn表示中国,us表示美国,uk表示英国、等等。
-
通用顶级域名gTLD 最常见的通用顶级域名有七个,即:com(公司企业)、net (网络服务机构)、org (非营利性组织)、int(国际组织)、edu(美国教育结构)、gov(美国政府部门) . mil(美国军事部门)。
-
反向域arpa 用于反向域名解析,即IP地址反向解析为域名。
在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
我国则将二级域名划分为以下两类:
-
类别域名 共七个: ac(科研机构)、com (工、商、金融等企业)、edu(教育机构)、gov(政府部门)、net(提供网络服务的机构)、mil(军事机构)和org (非营利性组织)。
-
行政区域名 共34个,适用于我国的各省、自治区、直辖市。例如: bj为北京市、sh为上海市、js为江苏省,等等。
举例:因特网的域名空间
这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型:
-
根域名服务器 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。尽管我们将这13个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
-
顶级域名服务器 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
-
权限域名服务器 这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
-
本地域名服务器 本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。每一个因特网服务提供者ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
域名解析的过程
-
递归查询
-
迭代查询
由于递归查询对于被查询大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。
为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。
例题:假设所有域名服务器均采用迭代查询方式进行域名解析,当H4访问规范域名为www.abc.xyz.com的网站时,域名服务器201.1.1.1在完成该域名解析过程中,可能发出DNS查询的最少和最多次数分别是
A.0,3 B.1,3 C.0,4 D.1,4
解析:
若主机H4的DNS高速缓存中有该域名的DNS信息时,不需要查询任何域名服务器。这样,H4无需向图中的默认域名服务器(本地域名服务器)发出DNS查询,该域名服务器也无需发出DNS查询。
题目给定采用迭代查询进行域名解析,在最坏的情况下,需要图中的本地域名服务器依次向以下域名服务器发出共4次DNS查询:
-
根域名服务器
-
顶级域名服务器(.com)
-
权限域名服务器(xyz.com)
-
权限域名服务器(abc.xyz.com)
选C