因特网上的主机和人类一样,也可以使用多种方式进行识别。主机的一种识别方法是用它的主机名,这些名字便于记忆,也乐于被人们接受。主机也可以使用所谓IP地址进行识别。一个IP地址由4个字节组成,并有着严格的层次结构。我们说IP地址具有层次结构,是因为从左至右它包含了越来越详细的关于主机的位置息。
人们喜欢便于记忆的主机名标识,而路由器则喜欢定长的、有着层次结构的IP地址。因此需要一种能进行主机名到IP地址转换的目录服务,这就是域名系统。
1DNS提供的服务
DNS是:
1:一个由分层的DNS服务器实现的分布式数据库;
2:一个允许主机查询分布式数据库的应用层协议。
DNS服务器通常是运行BIND软件服务器机器。DNS协议运行在UDP之上,使用53号端口。
DNS用于将用户提供的主机名解析为IP地址。例如当某个用户主机上的一个浏览器请求某个网页时,为了使用户的HTTP请求消息发送到Web服务器,用户主机首先必须获得Web服务器的IP地址。
在前面介绍的Socket编程接口中有专门的函数如gethostbyname()允许程序发起一个主机名到IP地址的查询。在Windows系统中专门有一个服务叫DNSClient完成DNS查询工作(控制面板-管理工具-服务中可见)。
除了进行主机名到lP地址的转换外,DNS还提供了一些重要的服务:
.主机别名
主机别名比主机规范名更容易记忆,例如http://www.mit.edu,其真实的服务器名字(主机规范名)并不是http://www.mit.edu,大家可以用ping命令发现它真实的名字。
.邮件服务器别名
一个单位或域中负责邮件收发的主机。
.负载均衡
DNS也可以用于在冗余的服务器之间进行负载分配。可以配置很多冗余的Web服务器,一个IP地址集合对应于同一个规范主机名。DNS数据库中存储着这些IP地址集合。当客户机为映射到这个IP地址集合的名字发出一个DNS请求时,该服务器用包含全部这些地址的消息进行回答,但在每个回答中轮回这些地址排放的顺序。因为客户机通常总是向IP地址排在最前面的服务器发送HTTP请求消息,所以就在所有这些冗余的Web服务器之间均衡分配负载。这是一种非常传统的负载均衡技术。
2工作机理概述
假设运行在用户主机上的某些应用程序(如Web浏览器)需要将主机名转换为IP地址。这些应用程序将调用DNS的客户机端,并指明需要被转换的主机名。在很多系统中,应用程序执行这种转换调用函数gethostbyname()。
DNS的客户机端接收到转换请求后,向网络中发送一个DNS查询消息。所有的DNS请求和回答消息使用UDP数据报经端口53发送。过若干时间后,用户主机上的客户机端接收到一个映射的DNS回答消息。这个查询结果则被传递到应用程序。
从用户调用应用程序的角度看,这是一个简单、直接的转换服务。但事实上,实现这个服务的系统非常复杂,它由分布于全球的大量DNS服务器组成。
DNS不能采用集中式设计的原因:
.单点故障
.通信负担
.延迟
.维护
•分布式、层次数据库
为了处理规模问题,DNS使用了大量的服务器,它们以层次方式组织,并且分布在全世界范围内。大致有3种类型的DNS服务器:根DNS服务器、顶级域DNS服务器和权威服务器。这些服务器以图中所示的层次结构组织起来。
假定一个DNS客户机要确定主机名http://www.mit.edu的IP地址。
域名查询主机的DNSClient向本地域名服务器发起一个查询。
本地域名服务器首先与根服务器之一联系,取得顶级域名edu的TLD服务器的IP地址。
本地域名服务器然后与这些TLD服务器之一联系,取得http://mit.edu权威服务器的IP地址。
本地域名服务器为http://www.mit.edu联系权威服务器,返回www主机的IP地址。
最后,本地域名服务器将结果返还给DNSClient,操作系统将结果作为函数调用返回值给应用程序。
三种类型的DNS服务器。
.根ONS服务器。在因特网上有13个根DNS服务器(标号为A到M),其中大部分位于北美洲。
.顶级域(TLD)服务器。这些服务器负责顶级域名(如COM,ORG,GOV和所有国家的顶级域名(如CN)。
.权威DNS服务器。将主机的名字映射为IP地址,由一个单位的权威DNS服务器负责保存这些记录。另一种方法是支付费用将这些记录存储在某个ISP的权威DNS服务器中。
根、TLD和权威DNS服务器都处在DNS服务器的层次结构中。
本地DNS服务器严格来说并不属于DNS服务器的层次结构,但它对DNS层次结构又是很重要的,本地DNS服务器通常与主机相隔不超过几个路由器。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将域名简析请求转发到DNS服务器层次结构中。
DNS查询过程中可以是迭代查询或是递归查询。
3:DNS缓存
为了改善时延性能并减少在因特网上传输的DNS消息数量,DNS广泛使用了缓存技术。DNS缓存的原理非常简单。在请求链中,当一个DNS服务器接收一个DNS回答时,服
务器能将回答中的信息缓存在本地存储器。
另一个对相同主机名的查询到达该DNS服务器时,该服务器能够提供所要求的IP地址,
即使它不是该主机名的权威服务器。但DNS服务器在一段时间后(通常设置为两天》将丢弃缓存的信息。
4:DNS记录和消息
实现DNS分布式数据库的所有DNS服务器共同存储着资源记录(ResourceRecord,RR)。RR提供了主机名到IP地址的映射。每个DNS回答消息包含了一条或多条资源记录。资源记录通常以文本的形式保存在DNS服务器的配置文件中。资源记录是一个包含了下列字段的4元组:
(Name,Value,Type,TTL)
TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。
Name和value的值取决于Type:
如果Type=A,则Name是主机名,value是该主机名的IP地址。因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。
如果Type=NS,则Name是域,而value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名。
如果Type=CNAME,则value是别名为Name的主机对应的规范主机名。该记录能够向请求主机提供一个主机名对应的规范主机名。
.如果Type=MX,则value是别名为Name的邮件服务器的规范主机名。使用MX记录,一个公司的邮件服务器和其他服务器(如它的web服务器)可以使用相同的别名。为了获得邮件服务器的规范主机名,DNS客户机应当请求一条MX记录;而为了获得其他服务器的规范主机名,DNS客户机应当请求一条CNAME记录。
DNS只有查询和回答消息,并具有相同的格式。
如何在DNS数据库中添加记录
当你申请了一个域名http://test.com,需要向某些注册登记机构注册域名时,需要提供你的主DNS服务器和辅助权威DNS服务器的名字和IP地址。
对这两个权威DNS服务器地址,注册登记机构确保将一个类型NS和一个类型A的记录输入TLDcom服务器。例如注册登记机构会将下列两条资源记录插入该DNS系统中:
(http://test.com,http://dns1.test.com,NS)
(http://dns1.test.com,210.210.111.12,A)
你如果开通了Web服务器、邮件服务器,那么需要在你的主域名服务器中添加www,主机的A类型记录和类型为MX资源记录。一旦完成所有这些步骤,人们就可以访问你的Web站点,并向你发送电子邮件了。
网友评论