linux下DNS详解及应用一

一 DNS的应用范围

    使用主机名标识一台主机,也可以使用IP地址标识。人们更愿意使用便于记忆的主机名标识符,而路由器则只愿使用长度固定民有层次结构的IP地址。为调解这两种不同的偏好,我们需要一个把主机名转换成IP地址的目录服务。这就是因特网的域名系统(Domain Name System,DNS)的主要任务。DNS既是一个在由名称服务器主机构成的层次结构中实现的分布式数据库,又是一个允许客户主机和名称服务器主机通信以使用域名转换服务的应用层协议。名称服务器主机通常是运行Berkeley Internet Name Domain(简称BIND)软件的UNIX主机。DNS协议运行在UDP之上,使用端口号53。

   其他应用层协议(例如HTTP,SMTP,FTP)普遍使用DNS把由用户提供的主机名转换成IP地址。作为例子,我们考虑某个用户使用运行在本地主机上的一个浏览器(也就是HTTP客户)请求http://www.yesky.com时会发生什么。为了把HTTP请求消息发送到名为www.yesky.com的web服务器主机,浏览器必须获悉这台主机的IP地址。我们知道,差不多每台主机都运行着DNS应用的客户端。浏览器从URL中抽取出主机名后把它传递给本地主机上的DNS应用客户端。DNS客户于是向某个DNS服务器发出一个包含该主机名的DNS查询消息。DNS客户最终收到一个包含与该主机名对应的IP地址的应答消息。浏览器接着打开一个到位于该IP地址的HTTP服务器的TCP连接。从这个例子中可以看出,DNS给使用它的因特网应用引入了额外延迟(有时还相当大)。所幸的是,正如我们即将讨论的那样.预期的主机名—IP地址对应关系往往高速缓存在就近的DNS名称服务器主机中,从而帮助降低了DNS访问延迟和DNS网络流量。

除了从主机名到IP地址的转换,DNS还提供其他一些重要的服务:●主机别名(hody aliasing)。具有复杂主机名的主机还可以有一个或多个别名。例如,

  主机名为relay1.west-coast.enterprise.com的主机有两个别名:enterprise.com和www.enterprise.com。这种情况下,主机名relay1.west-coast.enterprise.com特称为正规主机名(canonical hostname),另外两个主机名则是别名主机名(alias hostname)。

  别名主机名往往比正规主机名更便于记忆。应用可以调用DNS获取所给定别名主机名的正规主机名和IP地址。

  ●邮件服务器别名(mall server aliasing)。电子邮件地址显然要求便于记忆。例如,如果Bob有一个hotmail账号,那么他的电子邮件地址可能是简单的bob@hotmail.com。然而hotmail邮件服务器的主机名要比hotmail.com复杂且不易记住。电子邮件应用可以调用DNS获取所给定别名主机名的正规主机名和IP地址。事实上,DNS允许一个公司的邮件服务器和Web服务器使用相同的别名主机名。例如,某个公司的web服务器和邮件服务器可以都称为enterprise.com。

  ●负载分担(load distribution)。DNS还越来越多地用于执行在多个复制成的服务器(例如复制成的Web服务器)之间的负载分担。像cnn.com那样的繁忙站点往往把Web服务器复制成多个,每个服务器运行在不向的端系统上,具有不同的IP地址。对于复制成的多个Web服务器,与其单个正规主机名相关联的是一组IP地址。DNS数据库中保存着这组IP地址。客户发出针对映射到一组IP地址的某个主机名的DNS查询后,服务器响应以整组IP地址,不过每次响应的地址顺序是轮转的。既然访问web站点时,浏览器一般把HTTP请求消息发送给内DNS客户否询到的一组IP地址中的第一个,DNS轮转于是把web站点的访问负载分担在所有复制成的服务器上。电子邮件应用也可以使用DNS轮转,这样多个邮件服务器可以有相同的别名。近来,有些公司已经以更为复杂的方式使用DNS提供web内容分发服务。

  DNS在RFC 1034和RFC 1035中有详细说明,并在另外若干个RFC中作了更新。DNS是一个复杂的系统,我们只在这儿讨论其操作的关键方面。感兴趣朗读者可以参见协议文档。

二 DNS工作机理概述

我们就DNS工作机理的讨论将集中在从主机名到IP地址的转换服务上。从客户看来,DNS是一个黑盒子。客户把一个DNS查询消息发送给这个黑盒于,其中指明需要转换成IP地址的主机名。在许多基于UNIX的主机上,应用程序通过调用库函数gethostbyname()发出查询消息。过了从数毫秒到数十秒的一段延迟时间之后,客户收到一个给出所需映射关系的DNS响应消息。因此从客户看来,DNS是一个简单而直接了当的转换服务。然而实现这个服务的黑盒子事实上相当复杂,涉及散布全球的许多台名称服务器主机,以及说明名称服务器和DNS客尸如何通信的一个应用层协议。

  DNS可以简单地设计成让单个因特网名称服务器包含所有映射关系。在这种集中式的设计中,客户简单地把所有咨询消息发送给这个惟一的名称服务器,该名称服务器则把响应消息返回给查询的客户。这种设汁尽管具有诱人的简单性,但对于今今的因特网来说却完全不合适,因为其中的主机数非常巨大,而且仍在增长。集中式设计的问题在于:

  ●单点故障 要是惟一的名称服务器崩溃了,整个因特网也完了。

  ●巨大访问量 单个名称服务器将不得不处理所有DNS查询消息(因为所有的HITP请求和电子邮件消息都是由数百万台的主机生成的。

  ●远距离集中式数据库 单台名称服务器主机不可能在所有请求查询的客户主机附近。例如,假设名称服务器在纽约,而所有的查询都来自于地球另一边的

澳大利亚,可能要经过缓慢且拥塞的链路。这样造成的远距离访问将导致相当大的延迟。

  ●维护 单台名称服务器将保存所有因特网主机的记录。这个集中式数据库不仅会相当巨大,而且不得不为每台新增的主机频繁更新。允许任何用户在集中式数据库中注册主机还存在身份认证与授权问题。

  总之,存放在单台名称服务器主机中的集中式数据库是不可扩展的。可见DNS必须设计成分布式数据库。实际上,DNS是一个如何在因特网中实现分布式数据库的范例。

  为了应对扩展问题,DNS使用以某种层次结构组织的散布全世界各地的大量名称服务器主机。其中没有一个名称服务器拥有因特网中所有主机的主机名—IP地址映射关系。相反,这些映射关系足散布在各个名称服务器上的。近似地说,共有三种类型的名称服务器:局部名称服务器、根名称服务器和权威名称服务器。再近似地说,这些名称服务器本身之间相互作用,并且还和查询主机之间相互作用,如下:

  ●局部名称服务器

  每个ISP一如大学、一个学院中的部门、一个雇员的公司或者一个居民区的ISP———都有一个局部名称服务器(也称为默认名称服务器)。当一台主机发布了DNS查询消息,该消息首先被发送到主机的局部名称服务器上。局部名称服务器上的IP地址通常是在主机中手动设置的(在一台Wlndows机器上可以用你的PC机通过如下过程找到:首先打开控制面板,然后选择“网络”,然后选择己安装的TCP/1P组件,查看它的属性)。局部名称服务器通常是在客户端“附近”的。在一个教育公共机构的ISP情况下,它可能会和客户端主机位于同一个局域网中;对于一个住宅区的ISP来说,名称服务器通常是和客户端主机仅通过少量路由器分隔开来的。如果一个主机为另一属于同一个ISP的主机请求解析,那么局部名称服务器将能够立即提供所请求的IP地址。例如,当主机surf.yesky.com求baie yesky.com的IP地址时,yesky.com的局部名称服务器将不用和任何其他名称服务器联络就能够提供所请求的IP地址。

  ●根名称服务器

  因特网中有十几个左右的根名称服务器,它们目前大多数都位于北美。当一个局部名称服务器无法立即满足一个从主机到来的查询的时候(因为它没有被请求的主机名称记录),局部名称服务器就会作为一个DNS客户端并向根名称服务器查询。如果根名称服务器有该主机的记录,它就会给局部名称服务器发送一个DNS应答消息,并且局部名称服务器给发出查询的主机做以应答。但是根名称服务器可能也没有该主机的记录。相反,根名称服务器知道一个有详细的主机名称映射的“权威名称服务器”的IP地址。

  ●权威名称服务器

  每个主机都被记录在一个权威名称服务器上。通常,一个主机的权威名称服务器是该主机的局部ISP中的名称服务器(事实上,要求每个主机都至少有两个权威名称服务器,以防它们出现故障)。由定义可知,如果它总是存在着将主机名称解析为IP地址的DNS记录,那么该名称服务器对于主机来说就是权威性的。当一个权威名称服务器被一个根服务器查询的时候,权威名称服务器就会用包含着请求映射的DNS应答来响应。然后根服务器将映射发送到局部名称服务器上,然后局部名称服务器将映射转发到发出请求的主机上。很多名称服务器都是同时作为局部和权威名称服务器使用的。

让我们看一个简单的例子。假设主机surf.eurecom.cn想要得到gain.cs.umass.edu的IP地址。并且假设eurecom的局部名称服务器称为dns.eurecom.cn,而gain.cs.umass.edu的权威名称服务器称为dns.umass.edu。如图1所示,主机surf.eurecom.cn首先给它的局部名称服务器dns.eurecom.cn发送一个DNS请求消息。该请求消息包含着要被解析的主机名称,也就是gain.cs.umass.edu。局部名称服务器将查询消息发送到一个根名称服务器。根名称服务器将该查询消息发送到umass.edu域中所有主机的权威名称服务器上,例如,发送到dns.umass.edu。然后权威名称服务器将所要的映射通过根名称服务器和局部名称服务器发送到发出查询的主机上。注意,在这个例子中,为了得到一个主机名称的映射,发送了6个DNS消息:3个查询消息和3个应答消息。

刚刚入门新手:了解DNS服务基本原理(3)
图1 获得域名映射所进行的递归查询



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值