600 likes | 744 Views
第 9 章 域名系统 (DNS). IP 地址实现了物理地址的统一,全局惟一的标识。 问题:点分十进制数字,对用户来说:抽象,难以理解和记忆。 解决:为方便用户使用因特网, TCP/IP 在应用层采用字符型的主机名字机制。符合用户的命名习惯。. TCP/IP 形成了三个层次的主机标识系统: 位于底层的标识 —— 物理地址 位于中间层次的标识 —— IP 地址 位于高层的标识 —— 主机名 两个映射:协议不仅要进行 IP 地址与物理地址之间的映射,还要进行主机名与 IP 地址之间的映射。. 早期因特网的名字系统采用主机文件。 目前因特网上采用的是域名系统 DNS 。.
E N D
第9章 域名系统(DNS) IP地址实现了物理地址的统一,全局惟一的标识。 问题:点分十进制数字,对用户来说:抽象,难以理解和记忆。 解决:为方便用户使用因特网,TCP/IP在应用层采用字符型的主机名字机制。符合用户的命名习惯。 Logo
TCP/IP形成了三个层次的主机标识系统: • 位于底层的标识——物理地址 • 位于中间层次的标识——IP地址 • 位于高层的标识——主机名 • 两个映射:协议不仅要进行IP地址与物理地址之间的映射,还要进行主机名与IP地址之间的映射。 Logo
早期因特网的名字系统采用主机文件。 • 目前因特网上采用的是域名系统DNS。 Logo
第9章 域名系统(DNS) 9.1 命名机制与名字管理 9.2 因特网域名 9.3 DNS服务器 9.4 域名解析 9.5 DNS报文格式 9.6 DNS资源记录 9.7 DNS配置及数据库文件 Logo
9.1 命名机制与名字管理 • 因特网的命名机制要求主机名字具有: • 全局惟一性 • 便于管理 • 便于映射 • 网络中通常采用的命名机制有两种: 无层次(flat)命名机制:早期因特网采用,主机名用一 个字符串表示,没有任何结构。 Logo
层次型命名机制:将层次结构引入主机名字,该结构对应于管理机构的层次。 层次型命名机制将名字空间分成若干子空间,每个机构负责一个子空间的管理。 字空间呈一种树形结构,树上的每一个节点都有一个相应的标号。 Logo
惟一性:每个机构或子机构向上申请自己负责管理的名字空间,并向下分配子名字空间。惟一性:每个机构或子机构向上申请自己负责管理的名字空间,并向下分配子名字空间。 • 管理:通过层次化的名字结构,将名字空间的管理工作分散到多个不同层次的管理机构去进行管理,减轻了单个管理机构的管理工作量,提高了效率。 • 映射:很多的名字解析工作可以在本地完成。 • 当前因特网采用的是层次型命名机制。 返回 Logo
9.2 因特网域名 • 主机名可以通过主机文件或者域名系统DNS进行转换。 • 用主机文件进行名字解析时,每个需要进行名字解析的主机都拥有一个HOSTS文件。现在,小型网络仍然可以采用这种方式进行名字解析。下面是Windows系统中的HOSTS文件。 Logo
# 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 Logo
域名系统层次结构从高到低的组织: • 根域(Root)位于DNS的最高层,一般不出现在域名中。如果确实需要指明根,那么它将出现在FQDN的最后面,以一个句点“.”表示。 • 顶级域又称为一级域,顶级域按照组织类型和国家划分,可以分为三个主要的域:通用顶级域名gTLD、国家代码顶级域名ccTLD和反向域。 Logo
gTLD:com、org和net是向所有用户开放的三个通用顶级域名,也称为全球域名。 mil、gov和edu三个通用顶级域名只向美国专门机构开放。 int是适用于国际化机构的国际顶级域名(iTLD)。 Logo
上述7个传统的通用顶级域供不应求,后来又新增了7个顶级域:biz、info、name、pro、aero、coop和museum(新的顶级域名)。上述7个传统的通用顶级域供不应求,后来又新增了7个顶级域:biz、info、name、pro、aero、coop和museum(新的顶级域名)。 ccTLD:目前有240多个国家代码顶级域名,由二个字母缩写来表示。uk代表英国,hk代表香港(地区), sg代表新加坡。 反向域:的顶级域名为arpa,用于实现IP地址到域名的反向解析。 Logo
次级域又叫二级域,次级域与具体的公司或组织相关联。 • 子域是次级域下面的域,子域是各个组织将名字空间进行的进一步划分。 • 主机名(Host Name)是最末级的名字。 Logo
中国顶级域名下的行政区域名(34个):适用于我国的各省、自治区、直辖市,分别为:中国顶级域名下的行政区域名(34个):适用于我国的各省、自治区、直辖市,分别为: BJ-北京市;SH-上海市;TJ-天津市; CQ-重庆市; HE-河北省;SX-山西省;NM -内蒙古自治区; LN-辽宁省;JL-吉林省; HL-黑龙江省;JS-江苏省; ZJ-浙江省; AH-安徽省;FJ-福建省; JX-江西省;SD-山东省;HA-河南省;HB-湖北省;HN-湖南省; GD-广东省; GX-广西壮族自治区; HI-海南省; SC-四川省; GZ-贵州省;YN -云南省; XZ-西藏自治区;SN-陕西省;GS-甘肃省; QH-青海省; NX-宁夏回族自治区; XJ-新疆维吾尔自治区;TW-台湾;HK-香港;MO-澳门。 Logo
区域和域是不同的概念: 域是一个完整的子树,而区域可以是子树中的任何一部分; 区域可以是一个域,也可以不是一个域,区域不一定包含那部分DNS树中的所有子域。 Logo
DNS主要由3个部分构成: • 名字解析器(resolver) 名字解析器请求名字服务器的服务,获得待查主机的IP地址。解析器位于应用程序中或主机的例行程序库中。 • 域名空间(domain name space) 用树形结构组织的DNS数据库。 • 名字服务器(name server) 名字服务器用于保存域名空间各部分的信息,响应名字解析请求。 返回 Logo
9.3 DNS服务器 DNS服务器可以通过多种方法获取域名空间的部分信息: • 可以由管理员编辑一个原始区域文件 • 从其他名字服务器那里复制区域文件 • 通过向其他DNS服务器查询来获取具有一定时效的缓存信息 名字服务器的三种主要类型: • 主(primary)名字服务器 • 次(secondary)名字服务器 • 惟高速缓存(caching-only)名字服务器 Logo
主名字服务器是拥有一个区域文件的原始版本的服务器。关于该区域文件的任何变更都在这个主名字服务器的原始版本上进行。主名字服务器是拥有一个区域文件的原始版本的服务器。关于该区域文件的任何变更都在这个主名字服务器的原始版本上进行。 • 次名字服务器从其他主名字服务器那里复制一个区域文件。该区域文件是主名字服务器的原始区域文件的一个只读版本。 • 惟高速缓存名字服务器上没有区域文件,它的职责是帮助名字解析器完成名字解析,并缓存解析结果。惟高速缓存名字服务器对名字解析请求的响应是非授权的。 返回 Logo
9.4 域名解析 • TCP/IP的域名系统DNS是一个有效的、可靠的、通用的、分布式的名字—地址映射系统。 • 域名解析包括正向解析和反向解析: • 正向解析是根据域名查询其对应的IP地址或其他相关信息 • 反向解析是根据IP地址查询其对应的域名 Logo
DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用UDP,也可以使用TCP来进行通信。DNS服务器使用UDP/TCP的53号熟知端口。DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用UDP,也可以使用TCP来进行通信。DNS服务器使用UDP/TCP的53号熟知端口。 • DNS服务器能够接收两种类型的解析: • 递归解析(Recursive resolution) • 反复解析(iterative resolution)。 Logo
9.4.1 递归解析 • 递归解析要求名字服务器系统一次性完成名字—地址变换。 • 客户端计算机的解析器通常会发出递归查询。 Logo
9.4.2 反复解析 反复解析要求客户端本身反复寻求名字服务器的服务来获得最终的解析结果。 • 当一个名字服务器试图找到它的本地域之外的名字时,往往会发送反复查询。为了解析名字,它可能必须查询许多外面的DNS服务器,一般从根域服务器开始自顶向下查找。 Logo
下图给出了一个递归解析与反复解析相结合,以转换名字www.altavista.digital.com的全过程。下图给出了一个递归解析与反复解析相结合,以转换名字www.altavista.digital.com的全过程。 Logo
反向解析是指由主机的IP地址求得其域名的过程。 DNS在名字空间中设置了一个称为in-addr.arpa的特殊域,专门用于反向解析。 例: 地址为202.119.80.126的主机的域名为126.80.119.202.in-addr.arpa. 。 Logo
9.4.4 解析效率 解决:两步名字解析机制和高速缓存技术。 • 采用两步名字解析机制解析时,第一步先通过本地名字服务器进行解析,若不行,再采用自顶向下的方法搜索。两步法既提高了效率又保证了域名管理的层次结构。 • 在名字服务器中采用高速缓存技术,存放最近解析过的名字—地址映射和描述解析该名字的服务器位置的信息,可避免每次解析非本地名字时都进行自顶向下的搜索,减小非本地名字解析带来的开销。 Logo
有效性问题:若授权名字服务器中的名字—地址映射已发生变化而高速缓存未能作相应刷新,则会带来有效性问题,高速缓存内容的失效会导致解析错误。有效性问题:若授权名字服务器中的名字—地址映射已发生变化而高速缓存未能作相应刷新,则会带来有效性问题,高速缓存内容的失效会导致解析错误。 • 解决方法: • 服务器向解析器报告缓冲信息时,必须注明该信息是非授权的信息,同时还指出能够给出授权解析结果的名字服务器的地址。若解析器仅注重效率,它可以立即使用非授权的结果,若解析器注重解析的准确性,则可以立即向授权服务器发出解析请求,以便获得准确的结果。 返回 Logo
高速缓存中的每一个映射条目都有一个生存时间TTL,一旦某条目的TTL时间到,便将它从缓冲区中删除。高速缓存中的每一个映射条目都有一个生存时间TTL,一旦某条目的TTL时间到,便将它从缓冲区中删除。 • 事实上,由于域名—地址映射的稳定性,名字缓冲机制还是非常有效的。 Logo
9.5 DNS报文格式 DNS报文包括请求报文和响应报文。请求报文和响应报文的格式是相同的。 DNS报文的首部由6个字段构成: 标识字段长度为16比特,用于匹配请求和响应。 标志字段长度为16比特,划分为如图9-7所示的若干子字段。 • QR子字段(1比特):用来区别请求和响应。0表示请求报文,1表示响应报文。 • OpCode子字段(4比特):用来定义操作类型。 • 0表示标准查询(正向解析) • 1表示反向查询(反向解析) • 2表示服务器状态请求。 Logo
AA子字段(1比特):授权回答标志,1表示给出回答的服务器是该域的授权服务器。AA子字段(1比特):授权回答标志,1表示给出回答的服务器是该域的授权服务器。 • TC子字段(1比特):截断标志,1表示报文长度超过了512字节,并被截断成了512字节。 • RD子字段(1比特):希望递归标志,1表示请求服务器进行递归解析,0表示反复解析。 • RA子字段(1比特):可以递归标志,该子字段在服务器的响应中有效,1表示服务器支持递归解析。 • RA子字段后面是3比特保留位,必须置为0。 Logo
rCode子字段(4比特):用来表示错误状态。0表示没有错误,1表示格式错,2表示服务器故障,3表示查询的域名不存在,4表示是不支持的解析类型,5表示管理上禁止。rCode子字段(4比特):用来表示错误状态。0表示没有错误,1表示格式错,2表示服务器故障,3表示查询的域名不存在,4表示是不支持的解析类型,5表示管理上禁止。 • 四个“数”域,分别指出“问题记录” 、“回答记录” 、“授权记录” 和“附加信息记录” 的数目。 问题记录数:问题部分所包含的域名解析查询的个数,在一个请求报文中,可以包含若干(最多216-1)个。 Logo
回答记录数:回答部分所包含的回答记录个数。请求报文中该字段被置“0”。回答记录数:回答部分所包含的回答记录个数。请求报文中该字段被置“0”。 授权记录数:授权部分所包含的授权记录的个数。请求报文中该字段被置“0”。 附加信息记录数:附加信息部分所包含的附加信息记录个数。请求报文中该字段被置“0”。 Logo
DNS报文首部的后面是可变部分,包括四个小部分。DNS报文首部的后面是可变部分,包括四个小部分。 • 问题部分由一组问题记录组成。问题记录格式如图。 • 询问名字段可变长,询问名由标号序列构成,每个标号前有一个字节指出该标号的字节长度。 • 询问类(query class)16比特,1表示因特网协议(IN)。 Logo
询问类型(query type)16比特,定义询问希望得到的回答类型。域名虽然主要针对主机而言,但由于域名系统的通用性,域名解析既可以用于获取IP地址,也可以用于获取名字服务器和主机信息等。为了区分这些不同类型的对象,域名系统中每一命名条目都被赋予类型属性。(表9-3) Logo
表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 全记录请求 请求所有的记录 记录别名 数值 记录类型 描 述 Logo
DNS报文的其余三个部分是回答部分、授权部分和附加信息部分,附加信息包含回答部分和授权部分返回的资源所要求的附加信息(如IP地址)。DNS报文的其余三个部分是回答部分、授权部分和附加信息部分,附加信息包含回答部分和授权部分返回的资源所要求的附加信息(如IP地址)。 • 这三部分均由一组资源记录组成,而且仅在应答报文中出现。一条资源记录描述一个域名,格式如图。 Logo
域名、类型和类与问题部分的三个字段的含义相同。域名、类型和类与问题部分的三个字段的含义相同。 生存时间:缓存该资源记录的秒数。 资源数据长度:资源数据的字节数。 资源数据根据类型的不同,可以是IP地址、域名、指针或其他字符串。 域名字段是变长的,DNS报文采取特殊约定的方式来表达域名。请求和响应报文的域名的表达方式不同。 Logo
在响应报文中,回答的域名往往与问题中的域名相同。为了节省响应报文的空间,服务器对回答的域名采用压缩格式,对相同的域名只存放一个拷贝,其他采用指针表示。在响应报文中,回答的域名往往与问题中的域名相同。为了节省响应报文的空间,服务器对回答的域名采用压缩格式,对相同的域名只存放一个拷贝,其他采用指针表示。 • 若开始的两个二进制位为“11”,则接下去的14比特为指针,该指针指向存放在报文中另一位置的域名字符串。 • 若开始的两个二进制位为“00”,则接下去的6比特指出紧跟在计数字节后面的标号的长度。 Logo
解析域名serv.njust.edu.cn的响应报文 返回 Logo
9.6 DNS资源记录 DNS具有20多种不同类型的资源记录,下面给出几种常用的资源记录的格式。 • 授权开始( SOA)资源记录定义在域中充当主名字服务器的主机及相关参数。语法如下: @ IN SOA <source host><contact email> ( <serial number> <refresh time> <retry time> <expiration time> <time to live> ) Logo
@符号指明名字服务器所负责的域,通过引导文件可以查到域名。@符号指明名字服务器所负责的域,通过引导文件可以查到域名。 IN和SOA分别指明资源记录的类和类型。 • 名字服务器(NS)资源记录指明哪一个DNS服务器对于域是授权服务器。要确保在主名字服务器和次名字服务器内包含NS资源记录。语法: <domain name> IN NS <name server> <domain name>指明名字服务器所对应的域的名称。<name server>指定域名的授权名字服务器的完全合格域名FQDN。 • 地址(A)资源记录指明主机的IP地址。语法: <host name> IN A <IP address> <host name>指明主机名。<IP address>定义主机的IPv4地址。IPv6的资源记录类型为AAAA。 Logo
正规名(CNAME)资源记录提供为主机创建别名的能力。通过使用别名,可以使提供多种服务的主机以不同的名字提供不同的服务。语法:正规名(CNAME)资源记录提供为主机创建别名的能力。通过使用别名,可以使提供多种服务的主机以不同的名字提供不同的服务。语法: <alias> IN CNAME <host name> <alias>:主机的别名。<host name>:实际主机名。 • 邮件交换(MX)资源记录描述该域的邮件服务器。一个域可以有多个MX资源记录,以便实现指定域的email服务的负载均衡和容错。语法: <domain name> IN MX <cost> <mail server> <domain name>是邮件交换服务器处理邮件的域名。<cost>是邮件交换服务器的代价值,代价值代表服务器的优先级。代价值越小,优先级越高。相同的代价值:进行负载均衡。仅当低代价值的邮件交换服务器不可达时,邮件才被送往高代价的邮件交换服务器。<mail server>字段代表邮件交换服务器的主机名。 返回 Logo
9.7 DNS配置及数据库文件 • BIND(Berkeley Internet Name Daemon)软件是一个客户/服务系统,客户端称为解析器或转换程序(resolver),解析器产生域名信息的查询请求,并将信息发送给服务器,服务器回答解析器的查询。BIND的服务器是一个称为named的守护进程。 • BIND DNS服务器的配置依赖于几个文本文件。可以用文本编辑器直接生成这些文件或者是从基本模板修改而得到。DNS必须配置的文件包括DNS配置文件(又称引导文件)、DNScache文件、DNS正向查询文件和DNS反向查询文件。 Logo
9.7.1 DNS配置文件 BIND的DNS服务器用配置文件named.conf来包含如下的信息: (1)其他DNS文件所在的路径。 (2)包含因特网根服务器映像的cache文件的名字。 (3)DNS服务器授权的任何主域域名以及包含那个域的资源记录的数据库文件名。 (4)DNS服务器授权的任何次域域名、包含那个域的资源记录的数据库文件名以及对应的主名字服务器的IP地址。 Logo
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” { typeslave; file “slavenet.njust”; masters{ 202.119.85.10; } }; options { directory “/etc/db”; }; zone “.” { type hint; file “named.cache”; }; zone “njust.edu.cn”{ type master; file “named.hosts”; }; Logo