域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机转化为便于机器处理的IP地址,相对于IP地址,人们更喜欢用具有特定含义的字符串来标识因特网上的计算机。值得注意的是,DNS系统 采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。
从概念上可将DNS分为3部分:层次域名空间、域名服务器和解析器
层次域名空间
因特网采用层次树状结构的命名方法,采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name).域(Domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以划分为子域的子域,这样就形成了顶级域、二级域和三级域等。每个域名都由标号序列组成,而各标号之间用点(".")隔开。一个典型的例子是www.cykaoyan.com,它由三个标号组成,其中标号com是顶级域名,标号cskaoyan是二级域名,标号www是三级域名
关于域名中的标号有以下几点需要注意:
- 标号中的英文不区分大小写
- 标号中除连字符(-)外不能使用其他的标点符号
- 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符
顶级域名(Top Level Domain,TLD)分为如下三大类
- 国家顶级域名(nTLD).国家和某些地区的域名,如".cn"代表中国,".us"代表美国,".uk"表示英国
- 通用顶级域名(gTLD)常见的有".com"公司、".net"网络服务机构
- 基础结构域名。这种顶级域名只有一个,即arpa,用于反向域名解析。因此又称反向域名
国家顶级域名下注册的二级域名均有该国家自行确定
域名服务器
因特网的域名系统被设计为一个联机分布式数据库系统,并采用客户/服务器模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中所有域名到IP地址的映射。每个域名服务器不但能进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器
DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上,采用分布式设计的DNS,是一个在因特网上实现分布式数据库的精彩范例。主要由以下4种
1)根域名服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上的任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管理顶级域(如.com),通常它并不直接把所待查询的域名直接转化为IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询
2)顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)
3)授权域名服务器(权限域名服务器)
每台主机都必须在授权域名服务器处登记。为了更加可靠的工作,一台主机最好有两个授权域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转化为主机的IP地址
4)本地域名服务器
本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP)。或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要写DNS地址,这个地址就是本地DNS(域名服务器)的地址。