DNS系统

安全咨询 0 41

DNS系统概述

域名系统DNS(domain name system)是因特网使用的命名系统,用来把便于人们记忆的含有特定含义的主机名转换为便于机器处理的IP地址,值得注意的是,DNS系统采用C/S架构,其协议运行在UDP之上,使用53号端口。

DNS分为三个部分,层次域名空间,域名服务器和解析器。


层次域名空间

因特网采用层次树状结构的命名方法。任何一个连接在因特网上的主机或者路由器,都有一个唯一的层次结构的名字,即域名(Domain name)域是名字空间中一个可以被管理的划分。域还可以被分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域,二级域,三级域等。每一个域名都是由标号序列组成,各标号之间用点“.“”隔开。

举个例子:www.baidu.com 其中com是顶级域名,cskaoyan是二级域名,www是三级域名。

关于域名中的标号有以下几点值得注意:

1.英文不区分大小写。

2.标号中除了连字符-之外不能使用其他的标点符号。

3.每一个标号不超过63个字符,多标号组成的完整域名最长不超过255字符。

4.级别最低的域名写在最左边,级别最高的顶级域名写在最右边。


顶级域名(Top name domain TLD):有以下大三类

1.国家级顶级域名nTLD,国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,“.uk”表示英国,“.hk”表示中国香港特区。

2.通用顶级域名gTLD.常见的有“.com”(公司企业)“.net”(网络服务机构)“.org”(非营利性的组织)“.gov”(美国的政府部门)等。

3.基础结构域名。这种顶级域名只有一个,即arga,用于反向域名解析,因此又称为反向域名。

国家顶级域名注册的二级域名均由国家自行确定。下图是域名空间的结构

20181227145035233.png

在域名系统中,每个域分别由不同的组织进行管理,每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。例如,管理CN域的中国将EDU.CN子域授权给中国教育和科研计算机网CERNET来管理。


域名服务器

因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模式。域名到IP地址的解析是在域名服务器上进行的,一个服务器所负责(或者说是有权限的)的管辖范围称为区(不是以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的,每一个区设置相应的权限域名服务器,用来保护该区中的所有主机的域名IP地址的映射。每一个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息,当自己不能进行域名到IP地址的转换时,能够知道什么地方去找别的域名服务器。


1.根域名服务器


根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有着13个根域名服务器,尽管我们将这13个根域名服务器中的每个都是为单个的服务器,但每台“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖顶级域(.com)通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当照拿一个顶级域名服务器进行查询。


2.顶级域名服务器

这些域名服务器负责管理在该顶级域名服务器注册的二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。


3.授权域名服务器(权限域名服务器)

每一个主机都必须在授权域名服务器处登记,为了更加可靠地工作,一个主机最好至少有两个授权域名服务器,实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总是能够将其管辖的主机名的IP地址。


4.本地域名服务器

本地域名服务器对域名系统非常重要,每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,当一个主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS服务器地址,这个地址就是本地DNS域名服务器的地址。

DNS域名服务器的层次结构如图:

20181227150929581.png

域名解析过程

域名解析也就是把域名映射成IP地址或者把IP地址映射成为域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。


域名解析有两种方式:递归查询和迭代相结合的查询。

递归查询的过程如图所示,该方式由于给根域名服务器的负载过大,几乎不使用。


(1)主机向本地域名服务器的查询采用的是递归查询。

如果本地主机所询问的本地域名服务器不知道被查询的域名IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(替该主机继续查询)

而不是让该主机自己进行下一步查询。在这种情况下,本地域名服务器只需要向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间的进行的,在步骤7中,本地域名服务器从根域名服务器得到了所需要得IP地址,最后一步,本地域名服务器把查询结果告诉了主机。


(2)本地域名服务器向根域名服务器的查询采用迭代查询。

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一步应当向哪一个顶级域名服务器进行查询”然后让本地域名服务器向这个顶级域名服务器进行后续的查询。同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个权限域名服务器查询。最后返还结果。


举个例子:

某主机希望获得y.abc.com的主机的IP地址,域名解析过程如下(共使用八个UDP报文)

1.客户机向本地域名服务器发出DNS请求报文。

2.本地域名服务器收到请求后,查询本地缓存,假设没有该记录,则以DNS客户的身份向根域名服务器发出解析请求。

3.根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。

4.本地域名服务器向顶级域名服务器dns.com发出解析请求报文

5.顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,故将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。

6.本地域名服务器想授权域名服务器发起解析请求报文。

7.授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。

8.本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。

为了提供DNS的查询效率,减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存,当一个DNS服务器接收到DNS查询结果是,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到大概DNS服务器是,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问了,因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。


也许您对下面的内容还感兴趣:

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。