第8章域名系统(DNS).ppt
第9章 域名系统(DNS),9.1 命名机制与名字管理 9.2 因特网域名 9.3 DNS服务器 9.4 域名解析 9.5 DNS报文格式 9.6 DNS资源记录 9.7 DNS配置及数据库文件,9.1 命名机制与名字管理,因特网的命名机制要求主机名字具有: 全局惟一性 便于管理 便于映射 网络中通常采用的命名机制有两种:无层次命名机制和层次型命名机制。 无层次(flat)命名机制:早期因特网采用,主机名用一个字符串表示,没有任何结构。所有的无结构主机名构成无层次名字空间。 为了保证无层次名字的全局惟一性,命名采用集中式管理方式,名字地址映射通常通过主机文件完成。,问题:无层次命名不适合具有大量对象的网络,随着网络中对象的增加,中央管理机构的工作量也会增加,映射效率降低,而且容易出现名字冲突。 层次型命名机制将层次结构引入主机名字,该结构对应于管理机构的层次。 层次型命名机制将名字空间分成若干子空间,每个机构负责一个子空间的管理。授权管理机构可以将其管理的子名字空间进一步划分,授权给下一级机构管理,而下一级又可以继续划分他所管理的名字空间。这样一来,名字空间呈一种树形结构,树上的每一个节点都有一个相应的标号。,根是惟一的,所以不需要标号。树的叶结点是那些需要根据名字去寻址的主机(通常是网络上提供服务的服务器)。 惟一性:每个机构或子机构向上申请自己负责管理的名字空间,并向下分配子名字空间。在给结点命名标号时(分配子名字空间),每个机构或子机构只要保证自己所管理的名字的下一级标号不发生重复就可以保证所有的名字不重复。 管理:通过层次化的名字结构,将名字空间的管理工作分散到多个不同层次的管理机构去进行管理,减轻了单个管理机构的管理工作量,提高了效率。 映射:很多的名字解析工作可以在本地完成。极大地提高了系统适应大量且迅速变化的对象的能力。 当前因特网采用的是层次型命名机制。,返回,9.2 因特网域名,根据系统采用的是无层次命名机制还是层次型命名机制,主机名可以通过主机文件或者域名系统DNS进行转换。 用主机文件进行名字解析时,每个需要进行名字解析的主机都拥有一个HOSTS文件。现在,小型网络仍然可以采用这种方式进行名字解析。下面是Windows系统中的HOSTS文件。,# This is a sample HOSTS file used by Microsoft # TCP/IP for Windows. # This file contains the mappings of IP addresses to # host names. # Each entry should be kept on an individual line. The # IP address should be placed in the first column # followed by the corresponding host name. # The IP address and the host name should be # separated by at least one space. # Additionally, comments (such as these) may be # inserted on individual lines or following the machine # name denoted by a '# symbol. # For example: # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 127.0.0.1 localhost,域名系统DNS是在1984年为取代HOSTS文件而创建的层次型名字系统。 域名系统层次结构从高到低的组织: 根域(Root)位于DNS的最高层,一般不出现在域名中。如果确实需要指明根,那么它将出现在FQDN的最后面,以一个句点“”表示。 顶级域又称为一级域,顶级域按照组织类型和国家划分,可以分为三个主要的域:通用顶级域名gTLD、国家代码顶级域名ccTLD和反向域。 gTLD:com、org和net是向所有用户开放的三个通用顶级域名,也称为全球域名,任何国家的用户都可申请注册它们下面的二级域名。mil、gov和edu三个通用顶级域名只向美国专门机构开放。int是适用于国际化机构的国际顶级域名(iTLD)。,上述7个传统的通用顶级域供不应求,后来又新增了7个顶级域:biz、info、name、pro、aero、coop和museum(新的顶级域名)。 其中前4个是非限制性域,后3个是限制性域,限制性域只能用于专门的领域。 ccTLD:目前有240多个国家代码顶级域名,由二个字母缩写来表示。uk代表英国,hk代表香港(地区), sg代表新加坡。 反向域:的顶级域名为arpa,用于实现IP地址到域名的反向解析。 次级域又叫二级域,次级域与具体的公司或组织相关联。 子域是次级域下面的域,子域是各个组织将名字空间进行的进一步划分。,主机名(Host Name)是最末级的名字。 每个域/子域对应图9-1中的一棵子树,而在实际的名字空间的管理中采用的是区域(Zone)的概念,区域是DNS的管理单元,通常是指一个DNS服务器所管理的名字空间。区域和域是不同的概念,域是一个完整的子树,而区域可以是子树中的任何一部分,区域可以是一个域,也可以不是一个域,区域不一定包含那部分DNS树中的所有子域。图9-2描述了区域和域的不同。,DNS主要由3个部分构成: 名字解析器(resolver) 名字解析器请求名字服务器的服务,获得待查主机的IP地址。解析器位于应用程序中或主机的例行程序库中。 域名空间(domain name space) 用树形结构组织的DNS数据库。 名字服务器(name server) 名字服务器用于保存域名空间各部分的信息,响应名字解析请求。,返回,9.3 DNS服务器,DNS服务器可以通过多种方法获取域名空间的部分信息: 可以由管理员编辑一个原始区域文件 从其他名字服务器那里复制区域文件 通过向其他DNS服务器查询来获取具有一定时效的缓存信息 名字服务器的三种主要类型: 主(primary)名字服务器 次(secondary)名字服务器 惟高速缓存(caching-only)名字服务器 主名字服务器是拥有一个区域文件的原始版本的服务器。关于该区域文件的任何变更都在这个主名字服务器的原始版本上进行。,次名字服务器从其他主名字服务器那里复制一个区域文件。该区域文件是主名字服务器的原始区域文件的一个只读版本。关于区域文件的任何改动都在主名字服务器那里进行,次名字服务器通过区域传输(zone transfer)跟随主名字服务器上区域文件的变化。 惟高速缓存名字服务器上没有区域文件,它的职责是帮助名字解析器完成名字解析,并缓存解析结果。惟高速缓存名字服务器对名字解析请求的响应是非授权的。惟高速缓存名字服务器在启动之后,通过缓存查询的结果来逐渐建立DNS信息。缓存条目的生存期TTL由提供授权解析结果的名字服务器决定。该服务器将查询的生存期和名字解析一起返回。,返回,9.4 域名解析,TCP/IP的域名系统是一个有效的、可靠的、通用的、分布式的名字地址映射系统。 域名解析包括正向解析和反向解析: 正向解析是根据域名查询其对应的IP地址或其他相关信息 反向解析是根据IP地址查询其对应的域名 DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用UDP,也可以使用TCP来进行通信。DNS服务器使用UDP/TCP的53号熟知端口。 DNS服务器能够接收两种类型的解析: 递归解析(Recursive resolution) 反复解析(iterative resolution)。,9.4.1 递归解析 递归解析要求名字服务器系统一次性完成名字地址变换。递归查询强迫指定的DNS服务器对请求做出响应,该响应或者是一个失败响应,或者是一个包含相应的解析结果的成功响应。客户端计算机的解析器通常会发出递归查询。,9.4.2 反复解析 反复解析要求客户端本身反复寻求名字服务器的服务来获得最终的解析结果。在反复解析中,名字服务器收到请求后,若能够给出解析结果,则向客户端发回最终结果,若本名字服务器无法给出解析结果,则应向查询者提供它认为能够给出解析结果的服务器的IP地址。请求者收到该IP地址后,将向该地址发解析请求,直到获得最终解析结果或失败响应。 当一个名字服务器试图找到它的本地域之外的名字时,往往会发送反复查询。为了解析名字,它可能必须查询许多外面的DNS服务器,一般从根域服务器开始自顶向下查找。,9.4.3 反向解析 名字解析中的反向解析是指由主机的IP地址求得其域名的过程。DNS在名字空间中设置了一个称为in-addr.arpa的特殊域,专门用于反向解析。为了能够将反向解析与正向解析用相同的方法进行解析,反向解析将IP地址的字节颠倒过来写,构成反向解析的“名字空间”。地址为202.119.80.126的主机的域名为126.80.119.202.in-addr.arpa. 。,9.4.4 解析效率 解决:两步名字解析机制和高速缓存技术。 采用两步名字解析机制解析时,第一步先通过本地名字服务器进行解析,若不行,再采用自顶向下的方法搜索。两步法既提高了效率又保证了域名管理的层次结构。 在名字服务器中采用高速缓存技术,存放最近解析过的名字地址映射和描述解析该名字的服务器位置的信息,可避免每次解析非本地名字时都进行自顶向下的搜索,减小非本地名字解析带来的开销。,有效性问题:若授权名字服务器中的名字地址映射已发生变化而高速缓存未能作相应刷新,则会带来有效性问题,高速缓存内容的失效会导致解析错误。 解决方法: 服务器向解析器报告缓冲信息时,必须注明该信息是非授权的信息,同时还指出能够给出授权解析结果的名字服务器的地址。若解析器仅注重效率,它可以立即使用非授权的结果,若解析器注重解析的准确性,则可以立即向授权服务器发出解析请求,以便获得准确的结果。 高速缓存中的每一个映射条目都有一个生存时间TTL,一旦某条目的TTL时间到,便将它从缓冲区中删除。 事实上,由于域名地址映射的稳定性,名字缓冲机制还是非常有效的。,返回,9.5 DNS报文格式,DNS报文包括请求报文和响应报文。请求报文和响应报文的格式是相同的。 DNS报文的首部由6个字段构成: 标识字段长度为16比特,用于匹配请求和响应。 标志字段长度为16比特,划分为如图9-7所示的若干子字段。 QR子字段(1比特):用来区别请求和响应。0表示请求报文,1表示响应报文。 OpCode子字段(4比特):用来定义操作类型。 0表示标准查询(正向解析) 1表示反向查询(反向解析) 2表示服务器状态请求。,DNS报文首部的后面是可变部分,包括四个小部分。 问题部分由一组问题记录组成。问题记录格式如图。 询问名字段可变长,询问名由标号序列构成,每个标号前有一个字节指出该标号的字节长度。 询问类(query class)16比特,1表示因特网协议(IN)。 询问类型(query type)16比特,定义询问希望得到的回答类型。域名虽然主要针对主机而言,但由于域名系统的通用性,域名解析既可以用于获取IP地址,也可以用于获取名字服务器和主机信息等。为了区分这些不同类型的对象,域名系统中每一命名条目都被赋予类型属性。(表9-3),表9-3 常用的类型 A 1 IPv4地址 用于域名到IPv4地址的转换 NS 2 名字服务器 标识区域的授权名字服务器 CNAME 5 正规名 定义主机正规名的别名 SOA 6 授权开始 标识授权的开始 PTR 12 指针 指向其他域名空间的指针 HINFO 13 主机信息 标识主机使用的CPU和OS MX 15 邮件交换 标识用于域的邮件交换资源 AAAA 28 IPv6地址 用于域名到IPv6地址的转换 AXFR 252 区域传输 请求传输整个区域 ANY 255 全记录请求 请求所有的记录,记录别名 数值 记录类型 描 述,DNS报文的其余三个部分是回答部分、授权部分和附加信息部分,附加信息包含回答部分和授权部分返回的资源所要求的附加信息(如IP地址)。 这三部分均由一组资源记录组成,而且仅在应答报文中出现。一条资源记录描述一个域名,格式如图。,在响应报文中,回答的域名往往与问题中的域名相同。为了节省响应报文的空间,服务器对回答的域名采用压缩格式,对相同的域名只存放一个拷贝,其他采用指针表示。 若开始的两个二进制位为“11”,则接下去的14比特为指针,该指针指向存放在报文中另一位置的域名字符串。 若开始的两个二进制位为“00”,则接下去的6比特指出紧跟在计数字节后面的标号的长度。,解析域名serv.njust.edu.cn的请求报文,解析域名serv.njust.edu.cn的响应报文,返回,9.6 DNS资源记录,DNS响应报文中的回答部分、授权部分和附加信息部分由资源记录构成,资源记录存放在名字服务器的数据库中。DNS具有20多种不同类型的资源记录,下面给出几种常用的资源记录的格式。 授权开始( SOA)资源记录定义在域中充当主名字服务器的主机及相关参数。语法如下: IN SOA ( ),符号指明名字服务器所负责的域,通过引导文件可以查到域名。 IN和SOA分别指明资源记录的类和类型。 名字服务器(NS)资源记录指明哪一个DNS服务器对于域是授权服务器。要确保在主名字服务器和次名字服务器内包含NS资源记录。语法: IN NS 指明名字服务器所对应的域的名称。指定域名的授权名字服务器的完全合格域名FQDN。 地址(A)资源记录指明主机的IP地址。语法: IN A 指明主机名。定义主机的IPv4地址。IPv6的资源记录类型为AAAA。,正规名(CNAME)资源记录提供为主机创建别名的能力。通过使用别名,可以使提供多种服务的主机以不同的名字提供不同的服务。语法: IN CNAME :主机的别名。:实际主机名。 邮件交换(MX)资源记录描述该域的邮件服务器。一个域可以有多个MX资源记录,以便实现指定域的email服务的负载均衡和容错。语法: IN MX 是邮件交换服务器处理邮件的域名。是邮件交换服务器的代价值,代价值代表服务器的优先级。代价值越小,优先级越高。相同的代价值:进行负载均衡。仅当低代价值的邮件交换服务器不可达时,邮件才被送往高代价的邮件交换服务器。字段代表邮件交换服务器的主机名。,返回,9.7 DNS配置及数据库文件,BIND(Berkeley Internet Name Daemon)软件是一个客户/服务系统,客户端称为解析器或转换程序(resolver),解析器产生域名信息的查询请求,并将信息发送给服务器,服务器回答解析器的查询。BIND的服务器是一个称为named的守护进程。 BIND DNS服务器的配置依赖于几个文本文件。可以用文本编辑器直接生成这些文件或者是从基本模板修改而得到。DNS必须配置的文件包括DNS配置文件(又称引导文件)、DNScache文件、DNS正向查询文件和DNS反向查询文件。,9.7.1 DNS配置文件 BIND的DNS服务器用配置文件named.conf来包含如下的信息: (1)其他DNS文件所在的路径。 (2)包含因特网根服务器映像的cache文件的名字。 (3)DNS服务器授权的任何主域域名以及包含那个域的资源记录的数据库文件名。 (4)DNS服务器授权的任何次域域名、包含那个域的资源记录的数据库文件名以及对应的主名字服务器的IP地址。,options directory “/etc/db”; ; zone “.” type hint; file “named.cache”; ; zone “njust.edu.cn” type master; file “named.hosts”; ;,BIND-8.x配置文件named.conf的一个例子。,zone “0.0.127.in-addr.arpa” type master; file “named.local”; ; zone “85.119.202.in-addr.arpa” type master; file “named.rev”; ; zone “net.njust.edu.cn” type slave; file “slavenet.njust”; masters 202.119.85.10; ;,9.7.2 DNScache文件,;last update: Aug 22,1997 ;related version of root zone: 1997082200 ;formerly NS.INTERNIC.NET 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ;formerly NSl.ISI.EDU 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90,DNScache文件包含一系列的根域名服务器。该文件应该随根域名服务器的不断更新而更新。以下是DNScache文件(named.cache)的一个版本。, 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.230.230.10 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 192.32.64.12 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ;End of File,9.7.3 DNS正向查询文件,正向查询是指根据主机名查询其IP地址和其他信息。相关的资源记录数据保存在DNS正向查询文件中。一个典型的正向查询区域文件named.hosts的例子: IN SOA serv.njust.edu.cn. hostmaster.njust.edu.cn.( 1998030501 ;serial 10800 ;refresh 3 hours 3600 ;retry 1 hour 604800 ;expire 7 days 86480 ;TTL 1 day ) IN NS serv.njust.edu.cn. IN NS msrv.njust.edu.cn. serv.njust.edu.cn. IN A 202.119.80.126 msrv.njust.edu.cn. IN A 202.119.80.127 msrv1 IN A 202.119.80.128 www IN CNAME serv.njust.edu.cn. ftp IN CNAME serv.njust.edu.cn. mail IN CNAME msrv.njust.edu.cn. njust.edu.cn. IN MX 10 msrv.njust.edu.cn. njust.edu.cn. IN MX 20 msrv1.njust.edu.cn.,9.7.4 DNS反向查询文件,DNS反向查询文件提供将一个IP地址转换为主机名的功能。 反向查询区的区域文件是根据IP网络的网络地址决定的。在反向查询区的区域文件里,IP地址是逆序的。 如果一个网络的地址为10.0.0.0,则命名其反向查询区为10.in-addr.arpa。如果网络的地址为172.16.0.0,则命名其反向查询区为16.172.in-addr.arpa。 配置文件名可以是任何名字。为了便于记忆,通常的命名为db.y.x.w.in-addr.arpa或named.rev。,在DNS反向查询区域文件中,通常至少配置两个反向查询区域: 环回地址127.0.0.0的反向查询区域 该域用的实际网络地址的反向查询区域 地址资源记录要确保包含了所有在网络上经常被访问的主机的地址资源记录。而且要确保SOA、NS或者邮件交换(MX)资源记录中所列举的主机名的地址资源记录存在。,一个典型局域网地址逆向查询配置文件: 0.0.127.in-addr.arpa. IN SOA serv.njust.edu.cn. hostmaster.njust.edu.cn ( 1998030501 ;serial 10800 ;refresh 3h 3600 ;retry 1h 604800 ;expire 7d 86400 ;TTL 1d ) IN NS serv.njust.edu.cn. 1 IN PTR localhost.,域njust.edu.cn的逆向查询区文件: 80.119.202.in-addr.arpa. IN SOA serv.njust.edu.cn. hostmaster.njust.edu.cn. ( 1998030501 ;serial 10800 ;refresh 3600 ;retry 604800 ;expire 86400 ;TTL ) IN NS serv.njust.edu.cn. 126 IN PTR serv.njust.edu.cn. 127 IN PTR msrv.njust.edu.cn. 128 IN PTR msrv1.njust.edu.cn.,本章要点,字符型的名字系统为用户提供了非常直观、便于理解和记忆的方法,非常符合用户的命名习惯。 因特网采用层次型命名机制,层次型命名机制将名字空间分成若干子空间,每个机构负责一个子空间的管理。授权管理机构可以将其管理的子名字空间进一步划分,授权给下一级机构管理。名字空间呈一种树形结构。 域名由圆点“”分开的标号序列构成。若域名包含从树叶到树根的完整标号串并以圆点结束,则称该域名为完全合格域名FQDN。 常用的三块顶级域名为通用顶级域名、国家代码顶级域名和反向域的顶级域名。 TCP/IP的域名系统是一个有效的、可靠的、通用的、分布式的名字地址映射系统。,区域是DNS服务器的管理单元,通常是指一个DNS服务器所管理的名字空间。区域和域是不同的概念,域是一个完整的子树,而区域可以是子树中的任何一部分。 名字服务器的三种主要类型是主名字服务器、次名字服务器和惟高速缓存名字服务器。主名字服务器拥有一个区域文件的原始版本,次名字服务器从主名字服务器那里获得区域文件的拷贝,次名字服务器通过区域传输同主名字服务器保持同步。 DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用UDP,也可以使用TCP来进行通信。DNS服务器使用UDP和TCP的53号熟知端口。 DNS服务器能够使用两种类型的解析:递归解析和反复解析。 DNS响应报文中的回答部分、授权部分和附加信息部分由资源记录构成,资源记录存放在名字服务器的数据库中。,