5.1.1 DNS 域名空间
DNS 域名空间是一种树状结构如图 5.1。
目前由InterNIC管理全世界的 IP 地址,在 InterNIC 之下的 DNS 结构分为多个Domain,如图 5.1中 root domain下的七个 top-level domain 都归 InterNIC 管理,上图中还显示了由 InterNIC 分配给微软的域名空间。Top-level domain 可以再细分为 second-level domain 如 "Microsoft" 为公司名称,而 second-level domain 又可以分成多级的 subdomain 如 "example、www" ,在最下面一层被称为 hostname(主机名称)如 "host-a" ,一般用户使用完整的名称来表示 (FQDN),如 "host-a.example.Microsoft.com"。
DNS 域名
DNS 利用完整的名称方式来记录和说明 DNS 域名,就象用户在命令行显示一个文件或目录的路径,如 "C:\Winnt\System32\Drivers\Etc\Services.txt"。同样在在一个完整的 DNS 域名中包含着多级域名。
如 "host-a.example.microsoft.com." 其中 "host-a" 是最基本的信息(一台计算机的主机名称)"example"表示主机名称为host-a的计算机在这个子域中注册和使用它的主机名称 ,"microsoft" 是 "example" 的父域或相对的根域 (即 second-level domain),"com"是用于表示商业机构的top-level domain,最后的句点表示域名空间的根 (root)。
区域(zone)
区域 (zone) 是一个用于存储单个 DNS 域名的数据库,它是域名称空间树状结构的一部分, DNS 服务器是以 zone 为单位来管理域名空间的,zone 中的数据保存在管理它的 DNS 服务器中。当在现有的域中添加子域时,该子域既可以包含在现有的 zone 中,也可以为它创建一个新 zone 或包含在其它的 zone 中。一个 DNS 服务器可以管理一个或多个 zone ,同时一个 zone 可以由多个 DNS 服务器来管理。
用户可以将一个 domain 划分成多个 zone 分别进行管理以减轻网络管理的负荷,如图 5.2 所示,microsoft.com 是一个域,用户可以将它划分为两个 zone:microsoft.com 和 example.Microsoft.com,zone 的数据分别保存在单独的 DNS 服务器中。因为zone"example.Microsoft.com" 是从
"domain" 延伸而来,所以用户可以将 domain"microsoft.com" 称为 zone"example.Microsoft.com" 的 zone root domain。
5.1.2 DNS 查询的工作方式
当 DNS 客户机向 DNS 服务器提出查询请求时,每个查询信息都包括两部分信息:
§ 一个指定的 DNS 域名,要求使用完整名称(FQDN)
§ 指定查询类型,既可以指定资源记录类型又可以指定查询操作的类型
如指定的名称为一台计算机的完整主机名称"host-a.example.microsoft.com.", 指定的查询类型为名称的A (address) 资源记录。可以理解为客户机询问服务器"你有关于计算机的主机名称为'hostname.example.microsoft.com.'的地址记录吗?当客户机收到服务器的回答信息时,它解读该信息,从中获得查询名称的 IP 地址。
DNS 的查询解析可以通过多种方式实现。客户机利用缓存中记录的以前的查询信息直接回答查询请求, DNS 服务器利用缓存中的记录信息回答查询请求, DNS 服务器通过查询其它服务器获得查询信息并将它发送给客户机。这种查询方式称为递归查询。
另外, 客户机通过 DNS 服务器提供的地址直接尝试向其它 DNS 服务器提出查询请求。这种查询方式称为反复查询。
当 DNS 客户机利用 IP 地址查询其名称时,被称为反向查询。
本地查询:
下图 5.3显示了 DNS 查询的完整过程:
当在客户机中 Web 浏览器中输入一个 DNS 域名,则客户机产生一个查询并将查询传给 DNS 客户服务利用本机的缓存信息进行解析,如果查询信息可以被解析则完成了查询。
本机解析所用的缓存信息可以通过两种方式获得:
§ 如果客户机配置了 host 文件,在客户机启动是 host 文件中的名称与地址映射将被加载到缓存中。
§ 以前查询时 DNS 服务器的回答信息将在缓存中保存一段时间
如果在本地无法获得查询信息,则将查询请求发送给 DNS 服务器。查询请求首先发送给主 DNS 服务器,当 DNS 服务器接到查询后,首选在服务器管理的区域的记录中查找,如果找到相应的记录,则利用此记录进行解析。如果没有区域信息可以满足查询请求,服务器在本地的缓存中查找,如果找到相应的记录则查询过程结束。
如果在主 DNS 服务器中仍无法查找到答案,则利用递归查询进行名称的全面解析,这需要网络中的其它 DNS 服务器协助,默认情况下服务器支持递归查询。