DNS(Domian Name System,域名系统),该系统能够实现网上域名与IP地址相互解析的功能,使得用户更方面的使用互联网,而不用去记忆繁琐的IP数据串。
一、DNS的由来
早期的计算机网络规模并不是很大,也就是几台甚至数十台计算机,计算机之间的网络通信完全可以依靠记忆IP地址来实现。随着网络规模的扩大,人们发现记忆繁琐的IP串既繁琐效率也低,但是对英文名称的记忆却相对容易很多。于是计算机网络开始使用域名来进行相互访问,但是域名与IP地址之间的解析问题也随之而来。早期在计算机规模还不大的情况下,在每一台主机上设置了一个文件专门用于存放域名与IP地址的相关对应表。当计算机访问网络上的另外一台主机时,可以根据这张对照表完成域名的解析。由于网络中计算机存在访问任意一台主机的可能性,所以这张对照表就必须记录全网域名与IP地址的对应关系,网络规模不大时,这不是问题,但是随着网络规模的不断扩大,这一方法就带来了很多问题。DNS系统就是在这样的一个背景下产生的,该系统能够在特地的服务器上向全网提供域名与IP地址的相互解析服务。
二、域名结构及域名服务器
由于因特网主机数量众多,所以因特网在命名时采用了层次树状结构的命名方法。任何一个连接入因特网的主机都有唯一的层次结构名称,即域名 。目前的域名体系大致可以分为四层:根域名、顶级域名、二级域名、三级域名。根域名是一切域名的源头,也是解析的开始。顶级域名主要有.com、.net、.gov、.mil、.org等,每一个顶级域名都有特定的含义,例如.com主要表示商业机构,.gov主要表示政府机构。二级域名主要表示公司或者机构的特征部分,例如.taobao.com中的taobao。三级域名即可表示主机。
域名服务器就是用来提供域名解析功能的服务器。因特网上的DNS服务其是按照层次安排的,每一个域名服务器只对域名日系中的一部分进行管理。根据域名服务器的作用可以分为以下几类:
1.根域名服务器:最高层次域名服务器。根域名服务器能够解析全球顶级域名服务器的域名和IP地址。互联网上的任意一台主机只要自己无法解析,都必须从根域名服务器开始找起,然后通过根域名服务器找到顶级域名服务器。
2.顶级域名服务器:负责解析二级域名服务器的IP地址,然后找到二级域名服务器。
3.二级域名服务器:负责解析三级域名服务器的IP地址,然后找到三级域名服务器。
4.本地域名服务器:本地域名服务器不属于域名服务器的层次,但是也非常重要,它主要用于接收主机的DNS解析请求。
三、完整的DNS查询所需要经过的流程
当一台主机需要解析域名时,它会按照如下顺序查找解析结果。1、本地主机查找本机的hosts文件,2、本地主机查找本地缓存,3、本地主机向本地域名服务器发出解析请求,4、本地DNS服务器查找本地缓存,5、开始由本地服务器向根服务器发出解析请求,6、本地域名服务器根据根域名服务器所提供的顶级域名服务器地址,向它发出请求,7、本地域名服务器根据顶级域名服务器所提供的二级域名服务器地址,向它发出请求....(如此迭代下去,直到找到所要解析的结果),8、由本地域名服务器返回给主机查询的结果。
整个查询过程中,第3步以及第8步为递归的过程,而其它步则是迭代的过程。本地主机并不负责去查找域名的IP地址,此项任务主要由本地域名服务器完成,这是递归。一旦本地域名服务器无法在本机上找到结果,则会开始迭代一步步的由根域名服务器向下查找,直至找到解析结果,最终再返回给本地主机。当然本地主机在提出请求时,会先在本地文件及缓存中查找,如果能够找到则不会再向本地域名服务器发出请求。
四、DNS主从服务器
一般情况下,DNS服务器从冗余性、负载均衡性等角度出发都会设置多台服务器来向外提供服务。这里面就会牵涉到主从的概念,也即主DNS服务器,从DNS服务器。正常向外提供DNS服务时,主从服务器的解析库,应该是一样的,但是免不了需要修改DNS的解析库,但是只能在主DNS服务器上修改,因为主DNS服务器上解析库文件的修改会通过几种方式同步到从服务器上。一旦同步成功,对外界主从服务器所提供的服务是一样的。当然DNS服务器的主从其实是相对于区域而言的,一台域名服务器的解析库中可以包含很多区域,而主服务的标识为master,从服务的标识则为slave。
本文出自 “海之滨的博客” 博客,请务必保留此出处http://haizhibin.blog.51cto.com/13403510/1975797
原文地址:http://haizhibin.blog.51cto.com/13403510/1975797