一、DNS的前身——/etc/hosts
上网的朋友都知道,在internet中要访问另外一台主机时,需要通过那台主机的ip地址去达成连接然后交换数据;但是目前所用的ip地址是32位的二进制数字串,为了方便起见,人们查看将其转换为四组十进制的格式去便于阅读和理解。但尽管如此,记忆或者阅读四组三位数的数字还是挺吃力的。
为了解决这一难题,有的人就想出了一个办法,我们可以给每个主机起个名字,然后用在每台主机上用一个特定的文件去记录它所要访问的主机的主机名和ip的对应关系;有了这个文件清单,我们访问某台主机时,就可直接访问它的主机名,而让这个文件清单完成地址解析的任务。
二、bind横空出世:
随着互联网的蓬勃发展,它所连通的主机越来越多,那么以上域名解析的方法就暴露出了极大的问题:ip地址数量急剧扩增,而上文的文件清单又需要手动添加。显然上文的方式已经不适合时代的要求了。
为了解决这个问题,伯克利大学开发了一套分布式管理主机名和ip地址的系统,称为BIND。这个系统的结构如下图:
发展到如今,BIND已经成为互联网上大多数DNS服务器都在使用的域名解析系统。
三、DNS查询的大致过程:
1.本地查询:
在DNS系统里,提供DNS服务的主机被称为DNS服务器或者域名服务器,提出域名查询请求的主机是DNS客户端;与DNS客户端进行域名查询的相关文件有三个,分别是: /etc/host.conf、/etc/hosts、/etc/resolv.conf。
在linux系统中,当客户端进行域名解析时,系统默认先查看hosts文件的域名解析清单,若不存在该主机,则去 resolv.conf文件中所对应的域名解析服务器查看。