域名系统(Domain Name System,DNS)是把主机域名解析成IP地址的系统,解决了IP地址难记的问题。该系统由解析器和域名服务器组成。DNS主要基于UDP协议,较少情况下使用TCP协议,端口号均为53。域名系统由三部分组成:DNS域名空间、域名服务器、DNS客户机(名字解析器)。
1、DNS域名空间
DNS系统属于分层式命名系统,即采用的命名方法是层次树状结构。连接在Internet上的主机或路由器都有一个唯一的层次结构名,即域名。域名可以由若干个部分组成,每个部分代表不同级别的域名并使用“.”分开。完整的结构为“主机…..三级域名.二级域名.顶级域名.”。域名的每个部分不超过63个字节,整个域名不超过255个字节。顶级域名后的“.”号表示根域,通常可以不用写。
Internet上域名空间的结构如下图所示:
(1)根域:根域处于Internet上域名空间结构树的最高端,是树的根,提供根域名服务。根域名用“.”表示;
(2)顶级域:(Top Level Dimain,TLD):顶级域在根域之下。顶级域分为三大类:国家顶级域名、通用顶级域名和国际顶级域名。具体如下所示:
域名名称 | 作用 |
.com | 商业机构 |
.edu | 教育机构 |
.gov | 政府部门 |
.int | 国际组织 |
.mil | 美国军事部门 |
.net | 网络组织(现在任何人都可以注册) |
.org | 非盈利组织 |
.biz | 商业 |
.info | 网络信息服务组织 |
.pro | 会计、律师和医生 |
,name | 个人 |
.museum | 博物馆 |
.coop | 商业合作团体 |
.aero | 航空工业 |
国家代码 | 国家(cn代表中国) |
(3)主机:属于最低层域,处于域名树的叶子端,代表各类主机提供的服务。
2、域名服务器
域名服务器的运行模式为客户机/服务器模式(C/S模式)。
(1)按域名空间层次。服务器可以分为根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器。具体功能如下表所示:
名称 | 定义 | 作用 |
根域名服务器 | 最高层次的域名服务器,该服务器保存了全球所有顶级域名服务器的IP地址和域名。全球共100多个 | 本地域名无法解析域名时,直接向根域名服务器请求 |
顶级域名服务器 | 管理本级域名(如.cn)上注册的所有二级域名 | 可以解析本级域名下的二级域名的IP地址;提交下一步所需域名服务器地址 |
权限域名服务器 | 一个域可以分为多个区,每一个去都设置服务器,即权限服务器 | 该区域管理主机的域名和IP地址的映射、解析 |
本地域名服务器 | 主机发出的DNS查询报文最初送到的服务器 | 查询本地域名和IP地址的映射、解析。向上级域名服务器进行域名查询 |
(2)按域名服务器的作用,服务器可以分为主域名服务器、辅域名服务器、缓存域名服务器、转发域名服务器。具体功能如下表所示:
名称 | 定义 | 作用 |
主域名服务器 | 维护本区的所有域名信息,信息存于磁盘文件和数据库中 | 根据本区域名解析,是区内域名信息的权威。具有域名数据库。一个域有且只有一个主域名服务器。 |
辅域名服务器 | 主域名服务器的备份服务器提供域名解析服务,信息存于磁盘文件和数据库中 | 主域名服务器备份,可进行域名解析的负载均衡。具有域名数据库 |
缓存域名服务器 | 向其他域名服务器进行域名查询,将查询结果保存在缓存中的域名服务器 | 改善网络中DNS服务器的性能,减少反复查询相同域名的时间,提高解析速度,节约出口带宽。获取解析结果耗时最短,没有域名数据库 |
转发域名服务器 | 负责非本地和缓存中无法查到的域名。接收域名查询请求,首先查询自身缓存,如果找不到对应的,则转发到指定的域名服务器查询 | 负责域名转发,由于转发域名服务器同样可以有缓存,因此可以减少流量和查询次数。具有域名数据库。 |
3、资源记录
DNS数据库包括DNS服务器所使用的一个或多个区域文件,每个区域都拥有一组结构化的资源记录。资源记录的格式为[Domain][TTL][class] record-type record-specific-data。
- Domain:资源记录引用的域对象名。可以是单台主机,也可以是整个域。Domain子串用“.”分隔,如果没有用“.”标识结束,就与当前域有关系。
- TTL:生存时间记录字段。以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常该字段为空,表示生存周期在授权资源记录开始时指定。
- class:指定网络的地址类。
- record-type:记录类型。标识这是哪一类资源记录,常见的记录类型如下表所示。
- record-specific-data:指定与这个资源记录有关的数据。这个值是必要的。数据字段的格式取决于类型字段的内容。
常见资源记录如下:
资源记录名称 | 作用 |
A | 将DNS域名映射到IPv4的32位地址中 |
AAAA | 将DNS域名映射到IPv6的128位地址中 |
CNAME | 规范名资源记录,允许多个名称对应同一主机 |
MX | 邮件交换器资源记录,其后的数字首选参数值(0~5535)指明与其他邮件交换服务器有关的邮件交换服务器的优先级。较低的数值被赋予较高的优先级。 |
NS | 域名服务器记录,指明该域名由哪台服务器来解析 |
PTR | 指针,用于将一个IP地址映射为主机名 |
4、域名解析
域名解析就是将域名解析为IP地址。域名解析的方法有递归查询和迭代查询。
4.1 递归查询
递归查询是最主要的域名查询方式。主机向本地域名服务器的查询一般采用递归查询。
主机有域名解析的需求时,首先查询本地域名服务器,如果成功,则由本地域名服务器反馈结果;如果失败,则查询上一级域名服务器,然后由上一级域名服务器完成查询。下图是递归查询的过程:
4.2 迭代查询
本地域名服务器向根域名服务器的查询通常采用迭代查询。根域名服务器通常不采用递归查询的原因是:大量的递归查询会导致根服务器过载而影响域名服务。
当主机有域名解析的需求时,首先查询本地域名服务器,如果成功,则由本地域名服务器反馈结果;如果失败,本地域名服务器则直接向根域名服务器发起查询,由其给出一个顶级域名服务器的IP地址A.A.A.A。然后,本地域名服务器直接向A.A.A.A顶级域名服务器发起查询请求,由其给出一个本地域名服务器地址B.B.B.B。如此迭代下去,直到得到结果IP地址。下图是迭代查询过程:
5、DNS通知
DNS通知的作用是:权威域名服务器向管理区域内发出公告,辅助域名服务器及时更新信息。DNS通知是一种安全机制,只有被通知的辅助服务器才能进行区域复制,以防止未授权的服务器非法区复制。