DNS服务器基本概念详解(1)

            我们都知道,在记忆的角色上,人脑总是不如计算机,而人们对文字的印象又比数字高。因此,想要使用纯粹的TCP/IP来上网,用IP地址来记忆很麻烦,为了适应人类的使用习惯,DNS服务器诞生了。

            1.用网络主机名取得IP的历史渊源

            目前的互联网世界中使用的是所谓的TCP/IP协议,当我们利用互联网传送数据时,就需要使用IP地址。目前IP地址的主流版本IPv4是由32位所组成,为了使用人类的使用习惯已经转换为四组十进制的数字格式,然而

人脑对于IP这种数字的格式,记忆力实在不怎么样,但是要上互联网就一定需要使用IP那该怎么办呢?

            单一文件处理上网:/etc/hosts

            早期人们想到的就是利用某些特定文件将主机名与IP地址一一对应,如此一来,我们就可以通过主机名来取得改主机的IP了,于是在Linux操作系统中就有了/etc/hosts这个文件的存在了。

            /etc/hosts这个文件的用法基本上为

            IP     主机名  主机别名1   主机别名2   主机别名3  

            备注:本地主机名是定义在/etc/sysconfig/network中的HOSTNAME="主机名"这一条记录中的

            

            可惜这个方法还是有缺陷的,那就是主机名与IP的对应无法自动在所有计算机中内更新,且要将主机名加入到该文件仅能向国际互联网络信息中心注册,若IP量太多时,该文件会过大,也就跟不利于其它主机同步化了。

        blob.png

        

2.分布式、阶层是主机名管理架构:DNS系统

        为了解决单一文件/etc/hosts的联网问题伯克利大学发展出另外一套阶层式管理主机名对应IP的系统,我们称之为BIND。这也是目前全世界使用最广泛的域名系统。

        DNS利用类似于树形目录的架构,将主机名的管理分配在不同层级的DNS服务器当中,并进行分层管理,所以每一台DNS服务器记忆的信息就不会很多,而且若有IP变动时也

相当容易修改。因为你如果已经申请到主机名解析的授权,那么在你自己的DNS服务器中,就能够修改自己管理主机的主机名,而不用通过上层ISP的维护。

        第一个与DNS有关的主机名概念就是“主机名与域名”的概念,以及这两者组成的完整主机名FQDN。

            *以区域来区分同名同姓者的差异:互联网世界中其实有很多相同的名字,譬如“张三”,那么怎样来区分这些相同的名称呢?这个时候可以使用所在地来区分,

            华北     张三

            华南     张三

            西北     张三

            …………

            在这里地区就是“区域”

          * 已区域号码来区分相同的电话号码:例如北京有个1234的电话号码,上海也有一个1234的电话号码,我们在北京本地拨打1234时可直接拨打,但是想要从北京拨打上海的1234则需要加上区号012才行,

        此时区号012就是域名称,而电话号码就是“主机名”。

           

  在互联网那世界中,我们常常发现主机名都是www的网站,例如:www.baidu.com,www.google.com,www.360.com等等,这些拥有相同主机名的主机则需要用不同的域来区分,也就是baidu.com,google.com,360.com.所以即使你的主机名相同,只要你不是在同一个域内,就可以被分辨出不同的位置。

     大家知道目录的最顶层为/目录,那么DNS既然也是分布式架构的,也应该存在一个最顶层,我们以www.baidu.com为例进行讲解:

                blob.png

在上面的例子中位于最顶层的时.com这台主机,即第二层级的域名称,第二层里面.com为域的名称,而360,baidu,google为主机名称,而在baidu这个主机名称的管理下还有其它更小的网域的主机,所有第三层中域名就变成了baidu.com,而pan,www,ftp,则为这一层级的主机名。

3.DNS的主机名对应的IP的查询流程

        大概了解DNS域名域主机名之间的关系中后我们来看一下客户端如何使用DNS服务器来查询所要访问的主机的。

blob.png

        

假设我们现在有一台PC即机想要访问www.baidu.com这个网站,那么我们首先需要将DNS地址配置到我们的客户端主机上,这里使用谷歌为全球免费提供的8.8.8.8缓存服务器。为什幺使用这种缓存服务器后续会讲解。

首先第1步PC机将查询请求发送到缓存DNS服务器中,第二部DNS服务器回向根服务器发送请求,这里要注意了,因为DNS是采用层级的模式架构的,所有上一层只负责管理自己的下一层。第3步根服务器从自己的本地数据库中将.com注册的信息与对应的IP地址取出来并将信息返回给DNS缓存服务器。第4步缓存服务器根据根服务器提供的地址查找到顶级域名.com所在的服务器,并发送查询请求,第5步.com域所有的服务器通过查找自己本地数据库中baidu.com所注册的域名信息与对应IP地址,并将信息返回个DNS服务器,第6步,DNS缓存服务器通过.com域所返回的信息查找的baidu.com域所在的服务器……,以此类推DNS服务器通过这种迭代查找的方式找到www.baidu.com这台主机所在的位置并将结果返回给PC客户端。这里还要注意了,DNS缓存服务器没向一个层级发期查询请求并得到结果后,都会将返回的结果保存到自己的本地缓存中,当有另一台主机查询相同的地址是,只需要从本地缓存中调取即可,不必从新递归查找。

假设此时这里有一台www.360.com的主机需要与mail.baidu.con这台主机通信,那么通信机制又是怎样的呢?首先www.360.com这台主机将访问请求发送到自己的DNS服务器,即360.com这个域所在的主机。对于360.com来时说它是将自己所申请到的域范围部署在一组服务器上面,称为下级的DNS服务器从而对自己的下级提供域管理功能。然后360.com这个域所在的服务器将请求发送给根服务器,然后依次递归查询,因为每台DNS服务器只能识别根服务器的位置而不能识别其它服务器的位置,这也是为什么DNS服务器在配置式需要将关于自己域的正向解析配置,还需要将根服务器域的正向解析配置进去。

那我们的PC客户即能不能将DNS配置成360或者是百度的DNS服务器中呢?理论上是可以的,但是一般公司自己假设DNS服务器是为自己公司内部主机提供DNS解析功能,将自己公司的主机接入到互联网中的,大多都会设置权限进让自己公司内部使用,所有我们平常使用的DNS解析服务器一般都是互联网上公共的DNS缓存服务器或者是你使用的宽带运营商所提供的DNS服务器。

                                    


猜你喜欢

转载自blog.51cto.com/11970509/2286283