DNS基础及域名系统架构一

关注我们的人都能找到高薪工作

一、域名

在讲解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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180414B0Z8R800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券