域名解析系统 DNS
1.域名系统概述
用户与互联网上某台主机通信时,必须要知道对方的IP地址。然而用户很难记住长达32 位的二进制主机地址。即使是点分十进制地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用,连接在互联网上的主机不仅有P地址,而且还有便于用户记忆的主机名字。
域名系统(DomainNameSystem,DNS)是因特网使用的命名系统,用于将人们熟悉且具有意义的主机名(例如 www.baidu.com)转换为计算机更易处理的IP地址。相比于IP地址,人们更倾向于使用能够传达含义的字符串来标识网络上的设备。DNS系统采用客户/服务器(C/S)模型,其协议运行在UDP之上,使用53号端口。
简而言之:域名系统 DNS能够把互联网上的主机名字转换为IP地址。
在概念上,DNS可以分为三部分:
-
层次域名空间: DNS使用层次结构的域名空间来组织和管理域名。域名按照逻辑关系组成树状结构,以点分隔不同级别的域名。顶级域名(如.com、.org、.net)位于树的顶部,而主机名(如www)则位于树的底部,形成了完整的域名。
-
域名服务器: DNS系统由多个不同类型的域名服务器组成,这些服务器负责存储和管理域名与IP地址的映射关系。根域名服务器、顶级域名服务器、权威域名服务器和本地域名服务器等扮演不同的角色,协同工作完成域名解析的任务。
-
解析器: 解析器是DNS系统中的客户端程序,负责向域名服务器发送查询请求,并解析返回的响应数据。解析器通常运行在用户设备或网络设备上,如计算机、路由器等,帮助实现域名到IP地址的转换过程。
通过以上三部分的协同工作,DNS系统能够有效地实现域名解析功能,使得用户能够通过便于记忆的域名访问因特网上的各种服务和资源。
2. 层次域名空间
(1)层次树状域名
早期的互联网使用了非等级的名字空间,其优点是名字简短。但当互联网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的。因此,互联网后来就采用了层次树状结构的命名方法。
采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(Domain Name)。这里,域(domain) 是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。
从语法上讲,每一个域名都由**标号(label)**序列组成,而各标号之间用 “ . ” 隔开。
例如此域名就是中央电视台用于收发电子邮件的计算机(即邮件服务器)的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。
(2)DNS对域名的规定
DNS对域名有着如下规定
- 域名中的标号仅包含英文字母和数字,每个标号最多不超过63个字符(建议不超过12个字符以便记忆);
- 不区分大小写(例如,CCTV和cctv等效);
- 标号中除连字符(-)外不允许使用其他标点符号;
- 域名从左到右级别递减,顶级域名在最右边;
- 完整域名由多个标号组成,总长度不超过255个字符。
DNS不规定域名需要包含多少个子域名,也不规定每个级别的域名意义。各级域名由其上一级管理机构管理,最高级顶级域名由ICANN管理。这种方法确保每个域名在互联网上是唯一的,同时设计了一种有效的域名查找机制。
(3)顶级域名的分类
根据2012年5月的统计[W-IANA-root],目前顶级域名TLD(Top-Level Domain)总数已达326个。
最初的顶级域名可分为三类:
- 国家顶级域名 nTLD:按照ISO 3166标准命名,通常被称为ccTLD(cc代表国家代码country-code如: cn 表示中国,us 表示美国,uk 表示英国等等)。截至2012年5月,国家顶级域名总数已达296个。
- 通用顶级域名 gTLD:截至2006年12月,通用顶级域名总数已达20个。最初确定的通用顶级域名包括7个:com(公司企业),net(网络服务机构),org(非营利性组织),int(国际组织),edu(美国专用的教育机构),gov(美国的政府部门),mil表示(美国的军事部门)。
后来又陆续增加了13个:aero(航空运输企业)、asia(亚太地区)、biz(公司和企业)、cat(使用加泰隆人的语言和文化团体)、coop(合作团体)、info(各种情况)、jobs(人力资源管理者)、mobi(移动产品与服务的用户和提供者)、museum(博物馆)、name(个人)、pro(有证书的专业人员)、tel(Telnic股份有限公司)、travel(旅游业)。 - 基础结构域名(infrastructure domain):这种顶级域名仅有一个,即arpa,用于反向域名解析,因此也被称为反向域名。
在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu 和 com。
我国把二级域名划分为类别域名和行政区域名两大类。
- 类别域名共7个,分别为:ac(科研机构),com(工、商、金融等企业),edu(中国的教育机构),gov(中国的政府机构),mil(中国的国防机构),net(提供互联网络服务的机构),org(非营利性的组织)。
- 行政区域名共 34个,适用于我国的各省、自治区、直辖市。例如:hlj(黑龙江省)、jl(吉林省)、ln(辽宁省),等等。
3. 域名服务器
因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的。一个服务器所负责管辖的(有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到 IP 地址的映射。
互联网上的DNS 域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为4种不同的类型:
-
根域名服务器(Root Name Server):根域名服务器位于域名系统的最顶层,是所有域名服务器中最高级别的服务器。所有根域名服务器都具有所有顶级域名服务器的IP地址信息。根域名服务器在整个DNS系统中起着至关重要的作用,当本地域名服务器无法解析某个域名时,会向根域名服务器请求帮助。全球共有13台根域名服务器,每台看似独立,但实际上是由冗余服务器组成的集群,以确保安全性和可靠性。需要强调的是,根域名服务器主要负责管理顶级域名(如.com),通常不直接将域名解析为IP地址,而是指示本地域名服务器下一步应向哪个顶级域名服务器查询。
-
顶级域名服务器(Top-Level Domain Name Server):顶级域名服务器负责管理注册在该顶级域名服务器下的所有二级域名。当接收到DNS查询请求时,顶级域名服务器会提供相应的回答,可能是最终结果,也可能是下一个需要查询的域名服务器的IP地址。
-
权威域名服务器(Authoritative Name Server):每台主机都必须向授权域名服务器注册。为了提高可靠性,建议每台主机至少注册两个授权域名服务器。事实上,许多域名服务器同时担任本地域名服务器和授权域名服务器的角色。授权域名服务器能够将其管理的主机名转换为相应主机的IP地址。
-
本地域名服务器(Local Name Server):本地域名服务器在域名系统中扮演着重要角色。每个互联网服务提供商(ISP)、大学甚至大学内的各系都可能拥有一个本地域名服务器。当主机发送DNS查询请求时,该请求将发送至主机的本地域名服务器。例如,在Windows系统中配置网络连接时,需要填写DNS地址,这就是本地域名服务器的地址。
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器(Master Name Server),其他的是辅助域名服务器(Secondary Name Server)。当主域名服务器出故障时,辅助域名服务器可以保证 DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
4. 域名解析过程
域名解析是将人类可读的域名转换为计算机可识别的IP地址的过程。以下是域名解析的工作流程:
-
本地域名服务器查询:本地计算机上的操作系统会首先向本地域名服务器发送DNS查询请求。本地域名服务器通常由ISP提供,可以直接回答或者向其他域名服务器发出请求。
-
本地域名服务器查询缓存:本地域名服务器首先检查自己的缓存中是否保存有所查询域名的IP地址。如果缓存中存在,则直接返回IP地址给客户端。
-
向根域名服务器查询:如果本地域名服务器没有缓存查询的域名信息,它会向根域名服务器发送请求,询问该域名对应的顶级域名服务器的IP地址。
-
向顶级域名服务器查询:根域名服务器返回顶级域名服务器的IP地址给本地域名服务器。然后本地域名服务器向顶级域名服务器发送请求,获取下一级域名服务器的IP地址,比如.com顶级域名服务器。
-
向权威域名服务器查询:本地域名服务器将继续向下一级域名服务器(权威域名服务器)发送请求,获取查询域名对应的具体主机IP地址。
-
返回IP地址:最终,本地域名服务器通过多次查询获得了要查询域名的IP地址,并将这个IP地址返回给客户端的操作系统。
-
客户端访问网站:客户端收到IP地址后,就可以向该IP地址对应的主机发起连接,访问目标网站。这样,域名解析过程完成,用户可以正常访问网站内容。
整个域名解析的工作流程通过多层级的域名服务器协同工作,实现了将人类可读的域名映射到计算机可识别的IP地址,从而实现了因特网上各种服务的正常访问。