首页 > 编程知识 正文

dns域名和ip地址,ip地址与dns

时间:2023-05-06 05:44:55 阅读:282083 作者:1386

因特网上的主机可以使用多种方式进行标识。一种标识方法是用它的主机名,如cnn.com、www.yahoo.com等,这些名字便于记忆也乐于被人们接受。然而,主机名几乎没有提供关于主机在因特网中位置的信息。并且,因为主机名可能由不定长的字母数字组成,路由器难以处理,所以为了机器处理的方便,主机还可以使用IP地址进行标识。

一个IP地址由4个字节组成,并且有着严格的层次结构。例如121.7.106.84,当我们从左至右扫描它时,我们会得到越来越具体的关于主机位于因特网何处的信息(即在众多网络的哪个网络里)。

一、DNS提供的服务

将人们喜欢的便于记忆的主机名标识方式转化为路由器喜欢的定长的IP地址,就是域名系统(Domain Name System,DNS)的主要任务。DNS是:

一个由分层的DNS服务器实现的分布式数据库一个使得主机能够查询分布式数据库的应用层协议
DNS协议运行在UDP上,使用53号端口,与HTTP等协议一样,DNS协议是应用层协议。

DNS通常是由其他应用层协议所使用的,包括HTTP、SMTP和FTP,将用户提供的主机名解析为IP地址。举一个例子,考虑当某个用户主机上的一个浏览器(即一个HTTP客户)请求URL www.someschool.edu/index.html页面会发生什么现象。为了使用户的主机能够将一个HTTP请求报文发送到Web服务器www.someschool.edu,该用户主机必须获得www.someschool.edu的IP地址,具体做法如下:

同一台用户主机上运行着DNS应用的客户端浏览器从上述URL中抽取出主机名www.someschool.edu,并将这台主机名传给DNS应用的客户端DNS客户向DNS服务器发送一个包含主机名的请求DNS客户最终会收到一份回答报文,其中含有对于该主机名的IP地址一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接 二、DNS工作机理概述

假设运行在用户机上的某些应用程序(如Web浏览器或邮件阅读器)需要将主机名转换为IP地址。这些应用程序将调用DNS的客户端,并指明需要被转换的主机名。用户主机上的DNS接收到后,向网络中发送一个DNS查询报文。经过一定的时延后,用户主机上的DNS接收到一个提供所希望映射的DNS回答报文。这个映射结果则被传递到调用DNS的应用程序。

DNS采用了分布式的设计方案,如下图所示,是部分DNS的一个例子:

2.1 分布式、层次数据库

为了处理拓展性问题,DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内。大致来说,有三种类型的DNS服务器:根DNS服务器、顶级域(Top-Level Doman,TLD)DNS服务器和权威DNS服务器。这些服务器以上图所示的层级结构组织起来。以下通过一个例子来说明,加入一个DNS客户要决定主机名www.amazon.com的IP地址:客户首先与根服务器之一联系,它将返回顶级域名com的TLD服务器的IP地址。该客户则与这些TLD服务器之一联系,它将为amazon.com返回权威服务器的IP地址。最后,该客户与amazon.com权威服务器之一联系,它为主机名www.amazon.com返回其IP地址。

接下来看下这三种类型的DNS服务器:

根DNS服务器:在因特网上有13个根DNS服务器,标号为A到M,尽管我们将这13个根DNS服务器每个都视为单个的服务器,但每台“服务器”实际上是一个冗余服务器的网络,以提供安全性和可靠性。顶级域DNS服务器:这些服务器负责顶级域名如com、org、net、edu等,以及所有国家的顶级域名如uk、fr、jp等。权威DNS服务器:在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构都必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。一个组织机构的权威DNS服务器收藏了这些DNS记录。一个组织集构能够选择实现它自己的权威DNS服务器以保存这些记录;另一种方法是,该组织能够支付费用,让这些记录存储在某个服务提供商的一个权威DNS服务器中。多数大学和大公司实现和维护它们自己基本和辅助(备份)的权威DNS服务器。

除了上述DNS服务器外,还有一类重要的DNS,称为本地DNS服务器。一个本地DNS服务器严格来说并不属于该服务器的层次结构,但它对DNS层次结构是很重要的。每个ISP(如一个大学、一个公司或一个居民区的ISP)都有一台本地DNS服务器(也叫冷静的保温杯名字服务器)。当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台本地DNS服务器的IP地址(通常通过DHCP)。通过通过访问Windows或UNIX的网络状态窗口,能够容易地确定本地DNS服务器的IP地址。主机的本地DNS服务器通常“临近”本主机。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中。

接下来看一个例子,假设cis.poly.edu想知道gaia.cs.umass.edu的IP地址。同时假设该大学的本地DNS服务器为dns.poly.edu,并且gaia.cs.umass.edu的权威DNS服务器为dns.umass.edu。整个过程如下所示:

主机cis.poly.edu首先向它的本地DNS服务器dns.poly.edu发送一个DNS查询报文。该查询报文含有被转换的主机名gaia.cs.umass.edu。本地DNS服务器将该报文转发到根DNS服务器。该根DNS服务器注意到其edu前缀并向本地DNS服务器返回负责edu的TLD的IP地址列表。该本地DNS服务器则再次向这些TLD服务器之一发送查询报文。该TLD服务器注意到umass.edu前缀,并用权威DNS服务器的IP地址进行响应,该权威DNS服务器是dns.umass.edu。最后,本地DNS服务器直接向dns.umass.edu重发查询报文,dns.umass.edu用gaia.cs.umass.edu的IP地址进行响应。在这个例子中,为了获得一台主机名的映射,共发送了8份DNS报文:4份查询报文和4份回答报文。在上面的例子中,从cis.poly.edu到dns.poly.edu发出的查询是递归查询,而后继的三个查询是迭代查询,在下面的例子中,整个的查询过程都是递归的:

2.2 DNS缓存

为了改善时延性能并减少在因特网商到处传输的DNS报文数量,DNS广泛使用了缓存技术。DNS缓存的原理非常简单。在一个请求链中,当某DNS服务器接收一个DNS回答时,它能够将该回答中的信息缓存在本地存储器中。例如,在上面的例子中,每当本地DNS服务器dns.poly.edu从某个DNS服务器接收到一个回答,它能够缓存包含在该回答中的任何信息。如果在DNS服务器中缓存了一台主机名/IP地址对,另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器就能够提供所要求的IP地址,即使它不是该主机名的权威服务器。由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

2.3 DNS记录和报文

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Rescource Record,RR),RR提供了主机名到IP地址的映射。每个DNS回答报文包含了一条或多条资源记录。

资源记录时一个i包含了下列字段的4元组:
(Name, Value, Type, TTL)
TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间(以下的例子中都忽略了TTL字段)。Name和Value的值却决于Type:

如果Type=A,则Name是主机名,Value是该主机名对应的IP地址。因此,一条类型为A的资源记录提供了标准的主机名到IP地址的映射。例如(relay1.bar.foo.com, 145.37.93.126, A)如果Type=NS,则Name是个域(如foo.com),而Value是个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。这个记录用于沿着查询链来路由DNS查询。例如(foo.com, dns.foo.com, NS)如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名。该记录能够向查询的主机提供一个主机名对应的规范主机名,例如(foo.com, relay1.bar.foo.com, CNAME)如果Type=MX,则是邮件服务器相关

如果一台DNS服务器是用于某特定主机名的权威DNS服务器,那么该DNS服务器会有一条包含该主机名的类型A记录如果服务器不是用于某主机名的权威服务器,那么该服务器将包含一条类型NS记录,该记录对应于包含主机名的域;它还将包括一条类型A记录,该记录提供了在NS记录的Value字段中的DNS服务器的IP地址。举例来说,假设一台edu TLD服务器不是主机gaia.cs.umass.edu的权威DNS服务器,则该服务器将包括一条包含主机cs.umass.edu的域记录,如(umass.edu, dns.umass.edu, NS);该eduTLD服务器还将包含一条类型A记录,如(dns.umass.edu, 128.119.40.111, A),该记录将名字dns.umass.edu映射为一个IP地址。

2.3.1 DNS报文

DNS有查询和回答报文,两者格式相同,如下图所示:

其中各字段的语义如下:

前12个字节是首部区域,其中有几个字段。第一个字段(标识符)是一个16比特的数,用于标识该查询。这个标识符会被复制到对查询的回答报文中,以便让客户用它来匹配发送的请求和接收到的回答。标志字段中含有若干标志,1比特的“查询/回答”表值为指出报文是查询报文(0)还是回答报文(1)。当某DNS服务器是所请求名字的权威DNS服务器时,1比特的“权威的”标志位被置在回答报文中。如果客户(主机或DNS服务器)在该DNS服务器没有某记录时希望它执行递归查询,将设置1比特的“希望递归”标志位。如果该DNS服务器支持递归查询,在它的回答报文中会对1比特的“递归可用”标志位置位。在该首部中,还有4个有关数量的字段,这些字段指出了在首部后的4类数据区域出现的数量。问题区域包含正在进行的查询信息。该区域包括:名字字段,指出正在被查询的主机名;类型字段,指出有关该名字正在被询问的问题类型,例如主机地址是与一个名字相关联(类型A)还是与某个名字的邮件服务器相关联(类型MX)。在来自DNS服务器的回答中,回答区域包含了对最初请求的名字的资源记录。每个资源记录中有Type(如A、NS等)字段、Value字段和TTL字段。在回答报文中的回答区域可以包含很多条RR,因此一个主机名能够有多个IP地址(冗余Web服务器)。权威区包含了其他权威服务器的记录附加区域包含了其他有帮助的记录。例如,对于一个MX请求的回答报文的回答区域包含了一条资源记录,该记录提供了邮件服务器的规范主机名。该附加区域包含一个类型A记录,该记录提供了用于该邮件服务器的规范主机名的IP地址。 2.3.2 在DNS数据库中插入记录

以一个例子来说明这个过程。假设你要在注册登记机构注册域名networkutopia.com。注册登记机构是一个商业实体,它验证该域名的唯一性,将该域名输入DNS数据库,对提供的服务收取少量费用。

犹豫的天空向某些注册登记机构注册域名networkutopia.com时,需要将该机构提供你的基本和辅助权威DNS服务器的名字和IP地址。假定该名字和IP地址是dns1.networkutopia.com和dns2.networkutopia.com以及212.212.212.1和212.212.212.2。对这两个权威DNS服务器的每一个,该注册登记机构确保将一个类型NS和一个类型A的记录输入TLD com服务器。特别是对于用于networkutopia.com的基本权威服务器,该注册登记机构将下列两条资源记录插入该DNS系统中:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。