【概述】
域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来将便于记忆的含有特定含义的主机名转换为便于机器处理的 IP 地址
因特网的域名系统被设计为一个联机分布式数据库系统,并采用 C/S 模型,运行在 UDP 协议之上,使用 53 号端口
从概念上讲,DNS 分为三个部分:层次域名空间、域名服务器、域名解析
需要注意的是,域名与 IP 地址、MAC 地址、主机等均不存在一一对应的关系
如果一个主机利用两块网卡采用服务器双线接入的方式连接到不同的两个网络,那么会具有两个 IP 地址,每个网卡对应一个 MAC 地址,那么这两个 IP 地址就可以映射到同一个域名上
而多个主机之间可采用负载均衡的方式,映射到同一个域名上;一个主机也可以采用虚拟主机的方式,映射到多个域名上
【层次域名空间】
域与域名
因特网采用层次树形结构的命名方法,使得任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构名字,即域名(Domain Name)
域,是命名空间中一个可被管理的划分,其可进一步划分为子域,还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等
每一个域名都是由标号序列组成,各标号之间用 .
来隔开,对于标号序列来说,其要求如下:
- 标号中的英文不分大小写
- 标号中除连字符
-
外不能使用其他标点符号 - 每一个标号不超过 $63$ 个字符,多标号组成的完整域名不超过 $255$ 个字符
- 级别最低的域名写在最左边,级别最高的域名写在最右边
举例来说,对于域名 www.baidu.com
,其中 www
为三级域名,级别最低;baidu
为二级域名;com
为顶级域名,级别最高
顶级域名
顶级域名(Top Level Domain,TLD)是最高级别的域名,其有以下三大类:
1)国家顶级域名 nTLD
国家顶级域名,是国家和某些地区的域名,例如:.cn
表示中国,.us
表示美国,.uk
表示英国
2)通用顶级域名 gTLD
最早的通用顶级域名有:
域名 | 用途 |
---|---|
.com |
公司和企业 |
.org |
非赢利性组织 |
.net |
网络服务机构 |
.int |
国际组织 |
.edu |
美国专用的教育机构 |
.gov |
美国专用的政府部门 |
.mil |
美国专用的军事部门 |
除以上通用顶级域名外,后续又增加了若干通用顶级域名,如 .museum
表示博物馆、.name
表示个人、.pro
表示有证书的专业人员等
3)基础结构域名
基础结构域名只有一个,即 arpa
,用于反向域名解析,因此又称反向域名
域名空间结构
在域名系统中,每个域分别由不同的组织管理,每个组织都可以将它的域再分成一定数目的子域,再将这些子域委托给其他机构管理
对于国家顶级域名来说,会交由各国相关机构管理,在国家域名下注册的二级域名,均由该国家自行确定
下图展示了域名空间的结构
【域名服务器】
区
域名到 IP 地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的范围被称为区,各单位根据具体情况来划分自己管辖的区,但要求在一个区中的所有结点必须是能够连通的
同时,每个区会设置相应的权限域名服务器,用来保存该区中所有的主机域名到 IP 地址的映射
下图给出了区的不同划分方法的例子
此外,每一个域名服务器不仅能够进行域名到 IP 地址的解析,还必须要具有连向其他域名服务器的信息,当自己不能进行域名解析时,要知道能去什么地方找到别的域名服务器来解析
域名服务器层次
DNS 采用层次分布式设置了大量的域名服务器,因特网上所有域名到 IP 地址的映射,分布地存储在 DNS 系统中的域名服务器中,没有一台域名服务器具有因特网上所有主机的映射
根据域名服务器的层次,可分为四种类型的域名服务器:
1.根域名服务器
根域名服务器是最高层次的域名服务器,其用来管辖顶级域,每个根域名服务器都知道所有的顶级域名服务器的 IP 地址
因特网上总共设置了 $13$ 个不同 IP 地址的根域名服务器,全世界共有几百台服务器来组成这 $13$ 套根域名服务器,从而方便用户,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器
无论是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就会首先求助根域名服务器,根域名服务器会告诉本地域名服务器下一步应该去寻找哪个顶级域名服务器查询
2.顶级域名服务器
顶级域名服务器负责管理该顶级域名服务器注册的所有二级域名,当 DNS 查询请求时,就给出相应的回答,可能是最终的结果,也可能是下一步应当查找的域名服务器的 IP 地址
3.权限域名服务器
权限域名服务器又称授权域名服务器,每一个主机都会在权限域名服务器上登记
通常来说,为保障可靠性,一台主机最少会在两个授权域名服务器上登记,其一定可以将其管辖的主机名转换成该主机的 IP 地址
通常来说,许多域名服务器在同时充当权限域名服务器与本地域名服务器
4.本地域名服务器
每一个因特网服务提供商 ISP,或者每一个单位,甚至一个单位中的一个部门,都可以拥有一个本地域名服务器
当一个主机发出 DNS 查询请求时,这个查询请求报文会最先发送给本地域名服务器进行查询
实际上,在 Windows 系统中配置本地连接时,填写的 DNS 服务器地址,就是该本地域名服务器的地址
【域名解析】
域名解析过程
域名解析是指将域名映射层 IP 地址,或将 IP 地址映射成域名的过程,前者称为正向解析,后者称为反向解析,当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器
当本地主机所询问的本地域名服务器不知道被查询域名的 IP 地址时,会向根域名服务器发送查询请求报文,之后根域名服务器要么采用递归查询的方法,代替本地域名服务器以 DNS 客户的身份进行查询,给出查询到的 IP 地址,要么采用迭代查询的方法,告诉本地域名服务器下一步应该向哪一个域名服务器进行查询
下图给出了使用递归查询的示例,当本地域名服务器以 DNS 客户的身份向根域名服务器发送查询请求报文后,根域名服务器会代替该主机进行查询,递归地在其他几个域名服务器之间进行查询
下图则给出了使用迭代查询的示例,当本地域名服务器以 DNS 客户的身份向根域名服务器发送查询请求报文后,要么给出要查询的 IP 地址,要么告诉本地域名服务器下一步应该向哪一个顶级域名服务器进行查询,之后,本地服务器会向这个顶级域名服务器进行后续查询,同样,顶级域名服务器收到查询报文后,要么给出查询的 IP 地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询
域名服务器高速缓存
为提高 DNS 的查询效率,同时减少因特网上 DNS 查询报文的数量,域名服务器中广泛使用了高速缓存
当一个 DNS 服务器收到 DNS 查询结果时,其能将该 DNS 信息缓存在高速缓存中
这样,当另一个相同的域名查询到达该 DNS 服务器时,该服务器能够直接提供要求的 IP 地址,不需再向其他 DNS 服务器询问
由于主机名与 IP 地址之间的映射不是永久的,因此 DNS 服务器会在一段时候后丢弃高速缓存中的信息