DNS服务介绍
当用户与互联网上的某一主机通信时, IP地址的“点分十进制”表示方法十分的简单。但当用户想要与多个主机通信时,单纯的数字表示IP地址就非常的难记了,如果有一种方法,可以使用一个名称来表示一个主机,那要比使用IP地址更加的便于我们记忆。这个方法就是“名称——IP地址”转换法,只要我们在地址栏输入一个主机名,系统就会自动的查询并转换成TCP/IP能够识别的IP地址。
在早期的ARPAnet时代,网络规模较小,整个网络中只有几百台机器,这时使用了一个名为hosts的纯文本文件(.txt),在其中记录着主机名与IP地址的对应关系。只要在该文件中添加了对应的关系,我们在使用主机名去与对方通信时,系统就会查询该文件,找到该主机名对应的IP地址,并建立通信。
当网络的规模越来越庞大时,hosts的内容不断的增加,并且,每一个hosts文件只能够给本计算机使用,无法适应日益庞大的互联网需求,这是就产生了域名系统(Domain Name Server,DNS)。
DNS协议运行在UDP协议之上,使用端口号53。
1. DNS和WINS的作用
DNS:(Domain Name Server,域名服务)用于实现域名和IP地址的相互转换。
WINS:(Windows Internet Name Service) 用来将计算机的NetBIOS(Network Basic Input Output System,网络基本输入\输出系统)名称解析成IP地址。
2. DNS的结构
在DNS中,域名采用分层结构,包括:根域、顶级域、二级域和主机名称。
在域名层次结构中,每一层称作一个域,每个域用一个“.”分开。域又可以进一步分成子域,每个域都有一个域名。
根域:就是一个“.”号,由Internet名字注册授权机构管理。全世界共有13台根域服务器。
顶级域:由Internet名字授权机构管理。共有3种类型的顶级域:
组织域:采用3个字符的代号,如edu、com、gov等。
地理域:采用2个字符的国家/地区代号,如cn、jp、hk等。
反向域:这是一个特殊域,名称为in-addr.arpa,用于将IP映射到域名。
二级域:注册到个人、组织或公司的名称。二级域下还可以创建子域。
子域:从纯逻辑的角度来说,所有在根域以下的域都可称为子域,因为它们确实都在根域之下。但这样使用术语的对象太广,也不适于区分上层域和非上层域。通常,管理员称二级域以下的域为子域。从更实际的角度来看,根域、顶级域和二级域为域名树的上层固定组成,而子域是指二级域以下的各个域。
主机名:就是FQDN最左边的部分。使用“hostname”命令可以显示当前主机名。
3. DNS的作用机制
域名系统为一个分布式数据库,它使本地负责控制整个分布式数据库的部分段,每一段中的数据通过客户/服务器模式在整个网络上均可存取,通过采用复制技术和缓存技术使得整个数据库可靠的同时,又拥有良好的性能。
DNS的数据库结构形成一个倒立的树状结构,根的名字用空字符串""来表示,但在文本中用"."来书写。树的每一个节点都表示整个分布式数据库中的一个分区(域),每个域可再进一步划分成子分区(域),每个域都有一个标签(LABEL),标明了它与父域的关系。域也有一个域名(domain name),给出它在整个分布式数据库中的位置。在DNS中,域名全称是一个从该域到根的标签序列,以"."分隔这些标签。该标签最多可包含63个字符。树中每一节点的完整域名为从该节点到根之间路径上的标签序列。
如果根域在节点的域名中出现,该名字看起来就象以点结尾(实际上是以点和空标签作结尾)。这些以点结尾的域名被称之为绝对域名(Absoulte Domain Name)。不以点结尾的域名被称之为相对域名。
在DNS中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数量的子域,并将这些子域委托给其他组织进行管理。域既能包括主机又能包括其他域(它的子域)。域名被用做DNS数据库中的索引。子域中任何域名被认为是域的一部分。
事实上,主机即为域,域名仅是DNS数据库中的索引,"主机"可由指向相关主机信息的域名来索引,域包含所有其域名在该域的主机。
在域名树中,叶节点的域通常代表主机,它们的域名可指向网络地址,硬件信息和邮件路由信息。在树内的节点,其域名既可命名一台主机,也可指向有关该域的子域的结构信息,在域名树中的内部域名并不受唯一性限制,它们既可表示它们所对应的域,又可代表网络中某台特定的主机。例如,sun.com既是sun的域,又是在sun和internet间转发信件的邮件服务器的域名。
网络上的每一台主机都有一个域名,域名给出有关主机的信息,该信息中包含IP地址,MAIL路由信息等等,主机也可以有一个或多个域名别名。
4. DNS服务器
存储有关域名空间信息的程序被称为域名服务器(name server)。通常,域名服务器拥有部分域名空间(称之为区zone)的完整信息。域名服务器可以拥有多个区的授权。
DNS服务器主要分为3种:主服务器(Primary Name Server)、辅助服务器(Secondary Name Server)和高速缓存服务器(Cache-only Server)。
主DNS服务器:它存储着自主生成的区域文件,对这些文件可读可写,并且这些文件都是权威性的信息源。
辅DNS服务器:辅DNS服务器在BIND8以后也叫从属服务器。它包含域的授权地址信息,但这些数据都是通过区域数据传输从主DNS获取的,并且无法对获取的这些数据进行修改。主要用于负载均衡和容错。
缓存DNS服务器:它主要用来缓存查询的地址信息,而不用承担任何其他的工作。它没有区域文件,也不从其他DNS服务器传输数据。它能响应客户机的查询,但是没有授权。
5. 域名查询
域名查询从查询方式上来分,可以分为递归查询和迭代查询两种类型。
递归查询(Recursive Query):递归查询是最常见的发送到本地域名服务器的请求。客户机送出查询请求后,DNS服务器必须告诉客户机正确的数据(IP地址)或通知客户机找不到其所需数据。如果DNS服务器内没有所需要的数据,则DNS服务器会代替客户机向其他的DNS服务器查询。客户机只需接触一次DNS服务器系统,就可得到所需的节点地址。
迭代查询(Iterative Query):迭代查询的最好例子是一台本地域名服务器发送请求到根服务器。客户机送出查询请求后,若该DNS服务器中不包含所需数据,它会去根DNS服务器查询,根服务器会告诉它下一级DNS服务器的IP地址,该DNS服务器回去下一级DNS服务器查询,依次类推,直到查到数据,否则该DNS服务器通知客户机查询失败。
域名查询从查询内容上来分,可以分为正向搜索查询和反向搜索查询两种类型。
正向搜索查询:将域名映射成IP地址,通过域名来查找IP。
反向搜索查询:将IP地址映射成域名,通过IP来查找域名。in-addr.arpa特殊域。
DNS服务器经过查询后,返回给解析器的结果可能是下列结果中的一种:
给出所需数据的一个或几个资源记录。在这种情况下,解析器将以适当的格式返回得到的回答。
主机名错误。当所查询的名字不存在时给出这种错误。
数据未找到错误。当存在所查询的主机名,但找不到相应的数据时出现这种错误。
6. 区域
区域是用于存储DNS域名的数据库。DSN服务器是以区域为单位来管理域名空间的。DNS数据库表称为区域文件(Zone File)。数据库中包含着DNS域的RR(resource record,资源记录),数据库表中,RR是用文本形式表示的。
一台DNS服务器可以管理一个或多个区域,而一个区域也可以由多台DNS服务器来管理。
在DNS服务器中必须先建立区域,然后才可以根据需要在区域中建立子域以及在区域中添加RR。
可以创建正向查找区域和反向查找区域两种区域。
区域类型有主要区域、辅助区域和存根区域三种。
主要区域:它是新区域的主副本,负责在新创建区域的服务器上管理和维护本区域的RR。
辅助区域:它是现有区域的副本,主要区域中的DNS服务器将把区域信息传递给辅助区域中的DNS服务器。使用辅助区域的目的是提供冗余、减少包含主要区域数据库文件的DNS服务器的负载。辅助区域的数据无法修改,其所有数据都是从主要区域复制而来。
存根区域:它只包含用于标识该区域的授权DNS服务器所需的RR。含有存根区域的DNS服务器对该区域没有管理权。存根区域只能创建只含有NS、SOA和A记录的区域的副本。其所属的主要区域通常是一个受委派区域。
区与域的关系:
区包含了域中除了代理给别处的子域外所含有的所有域名和数据。如果域的子域没有被代理出去,则该区包含该子域名和子域中的数据。
7. 委派
在默认情况下,DNS的父域将管理自己的子域,并且子域伴随父域一起进行复制和更新。但是,我们可以将子域委派给其他的DNS服务器来进行管理,此时,被委派服务器将承担此子域的管理,并且此子域是该被委派服务器的主要区域。而其父域只有此子域的委派记录即指向此子域的权威DNS服务器(被委派服务器)的A和NS记录,并且不对其子域进行实际管理。
子域和委派的区别:子域建立在父域下,一般和父域在同一台DNS服务器上,其授权服务器就是父域的授权服务器;委派的子域一般建立在别的DNS服务器上,其授权服务器在委派时可以指定为别的DNS服务器,也可以指定为父域的授权服务器。
8. 区域传输
将一个区域文件复制到多个服务器上的过程叫做区域传输。它是通过从主服务器上将区域文件的信息复制到辅助服务器上来实现的。
主服务器是区域复制的来源服务器,它既可以是主要区域,也可以是辅助区域。
*如果主服务器是主要区域,区域传输则直接从主要区域取得区域文件。
*如果主服务器是辅助区域,区域传输仅传输区域文件的一个只读副本。
两种区域文件复制方式:
AXFR:全部区域文件复制,复制整个区域文件。
IXFR:增量区域文件复制,仅仅复制区域里变化的记录。
9. 解析器
运行在主机上并需要域名空间信息的更新时需要解析器(Resolver),在bind中解析器仅仅是一组库例程,并编译进象telnet和ftp这样的程序中,它们并非独立的进程。解析器所做的工作为: 汇集查询,发送查询并等待应答,未得到应答时重发查询。
10. 资源记录(Resource Record)
资源记录简称RR,包含了DNS应该知道的重要资源信息,这些资源就是其他的DNS服务器和主机,是DNS的核心数据。
DNS使用MX记录来实现邮件路由,它规定了域名的邮件服务器要么处理,要么向前转发有关该域名的邮件。处理邮件是指将其传送给其地址所关联的个人,向前转发邮件是指通过SMTP协议将其传送给其最终目的地。为了防止邮递路由,MX记录除了邮件交换器的域名外还有一个特殊参数:优先级值。优先级值是个从0到65535的无符号整数,它给出邮件交换器的优先级别。
11. 动态DNS(DDNS)
DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
DDNS需要DNS和DHCP结合来进行。DHCP服务在为客户端分配IP时,可以代表其DHCP客户端注册和更新该客户端在DNS服务器上的A记录和PTR记录。此外,DHCP服务器还可以在DHCP客户端IP租约被删除时清除该客户端在DNS服务器上的A记录和PTR记录。
本文出自 “Linux安装操作系统” 博客,谢绝转载!
原文地址:http://12540141.blog.51cto.com/12530141/1893993