愿关注我们的人都能找到高薪工作
一、域名
在讲解DNS之前,首先粗略的说一下域名这个东西
通常对于一个域名来说,其主要分为3个部分
①类型:标志着该域名的类型(com、cn、edu、org等)
②域名:域的名称,如上面的 google
③主机名: 域里面一台主机的名字,如www这台主机
对于域名来说,其大小写是不敏感的,在浏览器里面我们输入大小写都指向的同一个ip地址
二、DNS
从上面可以知道,每一个域名都对应了一个IP地址,我们访问一个域名时,其实底层的操作系统进行通信时还是通过IP地址来进行通信,所以我们就需要有一个服务能将域名转换成对应的IP地址,或者反向的将IP地址转换成域名,这个服务就是DNS(Domain Name System)。
DNS服务就是将我们的域名解析成其对应的IP地址,我们日常使用的支持网络的计算机一般是做为DNS客户端来使用的,应用程序、服务、进程等等通过操作系统底层的功能发起对DNS服务器的查询,来对指定的域名进行解析
在Linux系统当中,一般是使用系统底层提供的gethostbyname()这个函数来进行域名解析的
在Linux系统当中,解析域名通常可以基于以下三种方式:
①文件 (/etc/hosts、/etc/networks)
hosts是主机文件,里面存放的是域名到IP地址的一个对应,在windows下也有这样一个文件,通常linux下通过文件来解析域名都是通过 /etc/hosts 这个文件
我们看到,我们在 /etc/hosts 文件里加192.168.1.1www.google.com 这条映射关系以后,此时在ping www.google.com时,其ip地址变成了我们自己设定的 192.168.1.1了,但是我们知道其IP地址肯定不是这个。为此,我们可以在操作系统上将一些域名的IP地址直接写到 hosts 文件里面,这样在进行解析时可以直接去访问我们指定的IP地址
②DNS 这个就是通过我们指定的DNS服务器来对我们的域名进行解析了
③NIS 这个用的非常少
我们可以通过查看 /etc/nsswitch.conf 这个文件来查看DNS解析的顺序
我们看到我们 hosts 解析的顺序先是通过 file 文件来进行解析,再是通过DNS进行解析,我们可以直接修改该文件来控制我们的查询顺序
三、DNS查询
我们可以通过 host 或者 dig 命令来查询我们域名对应的IP地址
①host(显示内容较少)
②dig(显示内容详细)
我们看到dig命令查询出来的内容非常多,对于里面的每一行语句的含义,将在后续文章中详细讲解
对于DNS查询来说,其实DNS是一个树状的结构,查询的时候是根据域名从右到左来进行查询,域名每一级由独立的一个或者多个DNS服务器来进行查询
我们看到整个DNS查询过程就是上述的根据域名从右到左来一步步查询, . root DNS -> com DNS -> google DNS -> www
DNS查询类型一共有两种,一种是 迭代查询 (Iterative Query),另一种是 递归查询 (Recursive Query)我们通过下面两个示意图就可以知道这两种查询的区别了
①迭代查询 (Iterative Query)
②递归查询 (Recursive Query)
特别鸣谢原作者,转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/06/03/3116064.html
领取专属 10元无门槛券
私享最新 技术干货