DNS

DNS 协议简介DNS(域名系统)是一种能够完成从名称到地址或从地址到名称的映射系统。使用DNS ,计算机用户可以间接的通过域名来完成通信。Internet 中的DNS 被设计成为一个联机分布式数据库

DNS 协议简介

DNS(域名系统)是一种能够完成从名称到地址或从地址到名称的映射系统。使用DNS ,计算机用户可以间接的通过域名来完成通信。Internet 中的DNS 被设计成为一个联机分布式数据库系统,采用客户服务器方式工作。分布式的机构使DNS 具有很强的容错性。

DNS 报文格式

DNS报文由12字节长的首部和4个长度可变的字段组成,如图所示:

域名空间

所谓域名空间就是一种具有层次结构的命名空间。它采用这样的设计方式:所有的名称由倒置的树结构定义,根节点位于顶部。 树只有128级:0级(根节点)~127级。整棵树汇聚到根节点,树的每一层定义了一种层次级别。如下图所示:

树中的每一个节点有一个标号(label )。标号是一个最多包含63个字符的字符串。根节点的标号是空字符串(空串)。DNS 要求 每一个节点的子节点(同一节点的分枝节点)有不同的标号,这样能确保域名的唯一性。

节点构成一个域名。一个完整的域名是用符号“.”分隔的标号序列。域名总是从节点向上读取到根节点。 最后一个标号是根节点的标号(为空)。

,

因特网中的DNS

DNS是一种可以用于不同平台的协议。在因特网中,域名空间(树)分为三个不同部分:通用域、国家域、反向域。如上图所示:

通用域:最初的7个三字符域标号和新增的7

国家域:国家域部分采用与通用域相同的格式,但是在第一级采用两字符的国家英文名缩

写(例如 us 代表美国)取代长度为三字符的组织机构标号缩写。第二级标号可以是组织机构,

或者更具体一些,由自己国家自己指定。例如,美国使用的州的缩写做为国家域的子域划分(例

如 va.us.)。如上图所示:

,

反向域:反向域用于将地址映射为名称。这里要用到指针(PTR )查询。要处理一项指针查询,反向域需要加入到域名空间中,并且第一级节点称为arpa (由于历史原因)。第二级仍然是单节点,称为in-addr (用于逆向地址)。域的其他部分用于定义IP 地址。处理反向域的服务器也是层次结构的。这意味着地址的网络号部分所处的层次要高于主机号部分所处理的层次。同样道理,为整个网站服务的服务器应该比为子网服务的服务器处于更高的层次。这种配置方法使得反向域与通用域或者国家域相比,看起来是倒置的。按照由下向上读取标号的约定,一个IP 地址如140.252.13.33(一个B 类地址,网络号是140.252)会读取为

33.13.252.140.in-addr.arpa 。如上图所示:

解析

名称映射为地址或者地址映射为名称,称为名称—地址解析(name-address resolution )。 解析器:DNS 是设计为客户/服务器结构的应用程序。将地址映射为名称或者将名称映射为地址时,主机主要是调用的DNS 客户端为解析器(resolver )。 解析器会访问最近的DNS 服务器,发送映射请求。如果服务器含有这种信息,它会满足解析器的请求;否则,它会将解析器指向其他服务器,或者请求其他服务器提供这种信息。当解析器接收到映射时,它解析这一响应,以确定是一个真正的解析还是一个错误,最后将结果传递给发出这一请求的进程。

名称到地址的映射:多数情况下,解析器会向服务器提交域名,请求对应的地址。这种情况下,服务器检查通用域或者国家域以查找响应的映射。如果域名来自通用域部分,解析器则会接收到一个域名,如chal.atc.fhda.edu. 。查询会由解析器发送到本地DNS 服务器寻求解析。 如果本地服务器不能解析这一查询,它要么把解析器指向其他服务器,要么直接请求其他服务器解析。如果域名来自于国家域,则解析器会接收类似于cnri.reston.va.us. 形式的域名。处理过程是相同的。

地址到名称的映射:客户端向服务器发送IP 地址,请求映射为域名。如前所述,这称为一个PTR 查询。要回复这种查询,DNS 使用反向查找域。然而,在这种请求中,IP 地址是反序的,并且将in-addr 和arpa 两个标号附加在最后,以创建能够被反向查找域部分接受的域。例如, 如果解析器接收到IP 地址140.252.13.33,那么解析器会首先将地址反序,然后在发送请求之前附加两个标号。发送的域名是33.13.252.140.in-addr.arpa. ,本地DNS 会接受这一地址,并进行解析。

两种解析方式

递归解析:客户端(解析器)可以从名称服务器中请求递归应答。这意味着解析器期望服务器提供最终答案。如果服务器是这一域名的授权者,它会检查它的数据库并做出响应。如果服务器不是授权者,它会把请求发送给其他服务器(通常是父服务器),并等待响应。如果父服务器是授权者,它就做出响应。否则它仍把查询发送给其他服务器。 当查询最终得到解析后,响应就回溯知道最终到达发出请求的客户端。这就是递归解析(recursive resolution),详情参见(动画演示)。

迭代解析:如果客户端没有请求递归查询,则映射以迭代的形式完成。如果服务器是名称的授权者,则它发送应答; 反之,它会返回一个它认为能够解析该查询的服务器的IP 地址(给客户端),由客户端负责向第二台服务器重复发送请求。如果新的地址解析服务器能够解析这

,

一问题, 那么就用IP 地址响应这一请求。否则,它再向客户端返回新的地址解析服务器的IP 地址。这时,客户端必须向第三台服务器重复该请求。 这一过程称为迭代解析(iterative resolution ),详情参见(动画演示)。

高速缓存

服务器每次接收到不属于自己域的名称请求时,它需要搜索自己的数据库以查找一台服务器的IP 地址。缩短这一查询时间能提高效率。DNS 使用一种称为高速缓存(caching )的机制处理这一问题。 当服务器向其他服务器请求映射并得到回应时,它首先将这一信息存储在高速缓存中,然后再发送给客户端。如果同一客户端或者其他客户请求同一映射,它会检查本地高速缓存解析这一请求。 然而,要通知客户这一响应来自于高速缓存而不是来源于授权服务器,服务器会将这一响应标志为“非授权性的(unauthoritative )”。

高速缓存能够提高解析速度,但也存在问题。如果一台服务器长时间缓存一种映射,可能会发送给客户端一个过期的映射。为了防止这种情况,使用了两种技术。第一种,授权服务器始终给映射增加称为生存时间(time-to-live ,TTL )的信息。 TTL以秒为单位定义接收服务器可以缓存这一信息的持续时间。超过这一时间,映射变为无效,并且任何请求必须再次发送到授权服务器。第二种技术,DNS 需要每一台服务器为它缓存的每一个映射保持一个TTL 计数器。高速缓存会定期检查,清除掉TTL 已经经过的映射。

实验原理

二、Internet 域名空间的分类

在Internet 中,域名空间划分为三个部分:类属域、国家域和反

向域。

1.类属域:按照主机的类属行为定义注册的主机。类属域的顶级

符号包括com 、edu 、gov 、int 、mil 、net 、org 等。

2.国家域:按照国家定义注册的主机。国家域的顶级符号包括cn 、

us 、zw 等。

3.反向域:把一个地址映射为名字。

三、DNS 高速缓存

当服务器向另一个服务器请求映射并收到它的响应时,它会在把

,

结果发送给客户之前,把这个信息存储在它的DNS 高速缓存中。若同一客户或另一个客户请求同样的映射,它就检查高速缓存并解析这个问题。高速缓存减少了查询时间,提高

标签: