域名系统DNS
一 概述
域名系统DNS是互联网使用的命名系统,用来把便于人们使用的机器名称转换为IP地址,比如我们熟知的www.baidu.com,www.sina.com,这些域名的背后都对应着一个又一个的IP地址。由域名转换为IP的过程我们称为解析,解析的过程大部分都是本地运行解析的,少量解西需要再互联网上通信解析。
二 域名的构成
域名(Domain Name)是互联网上用于标识网站的名称。它由一个或多个部分组成,各部分之间用点号(.)分隔。域名结构是指域名的组成方式,即域名的各个部分所代表的含义。
域名一般由4部分组成:
顶级域名(TLD):如.com(商用通用顶级域名、.org非盈利组织顶级域名、.cn中国地区顶级域名,arpa反向域名(用于反向域名解析)等)
二级域名(SLD):紧邻顶级域名的左侧部分,一般标识特定的网站或者组织,如:baidu.com中,baidu即为二级域名。
三级域名:位于二级域名的左侧,标识某个网站的某一个特定服务,如www.baidu.com,www即三级域名,标识baidu.com的万维网服务,baike.baidu.com,baike即三级域名,标识baidu.com的百科服务。
四级域名:四级域名即再三级域名左侧还可以细分更多服,如blog.baike.baidu.com
其中顶级域名和二级域名为必选项,三级域名和四级域名科技根据需求添加。
整个互联网域名系统可以用树状图标识,如下图:
在最上面的是根,没有任何对应的名字,在下一级节点为顶级域名,各个顶级域名又可以划分多个子域(顶级域名下的各个子域相互独立,就类比一个一个的小空间),诸如此类,顶级域名又可以划分多个三级域名,三级域名又可以划分多个四级域名。举个例子:国家根域名cn,下划bj、edu、com等二级域名,在edu二级域名又划分了tsinghua和pku两个三级域名,在tsinghua三级域名又划分出了mail和www等四级域名,这就派生出了清华大学的邮件系统(mail.tsinghua.edu.cn)和万维网系统(www.tsinghua.edu.cn)。
三 域名服务器
域名服务器即用来解析域名的服务器。一个服务器所负责管辖的范围叫做去,每个区中的所有域名服务器节点都必须是相互联通的,每个区中设置相应的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射。区是域名服务器管辖的时间范围,区可能等于或者小于域,但一定不能大于域。如下图所示:
abc公司有下属a和b两个部门,两个部门都属于abc.com域,部门x下面又分为u、v、w三个部门,而yx下面只有下属部门t。a中只划分了一个区abc.com,此时区abc,com和域abc.com是一回事;但在b中,域abc.com中被划分了两个区abc.com和y.abc.com。依据b中abc划分两个区为例,域名服务器树状图如下所示:
(1)根域名服务器:最高层次的域名服务器,也是最重要的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP。因为当任意一台本地域名服务器若要对互联网上任何一个域名进行解析时,如果无法解析,则告诉下一步需要向哪一个域名服务器查询,以此类推,根域名服务器是最后的保障。
(2)顶级域名服务器:负责管理该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出回应,如果不行,则反馈该向哪一个权限域名服务器查询。
(3)权限域名服务器:负责一个区的域名服务器,如果不能给出最后的查询,就会告诉查询请求的DNS用户,下一步应当去找哪一个权限域名服务器,
(4)本地域名服务器:他不隶属于域名服务器架构图,但对于域名系统来说同样很重要,当一台主机发出DNS请求时,优先使用本地域名服务器查询,因为这样查询速度更快捷,如果查询不到,再去向其他域名服务器查询。
四 域名查询方式
1 递归查询
主机向本地域名服务器的查询一般采用递归查询。如果主机所询问的本地域名服务器无法解析域名,那么本地域名服务器则会依DNS客户端的身份,向其他根域名服务器继续发送查询请求报文,而不是让主机自己进行下一步的查询,因此,递归查询返回的查询结果或者是所查询的IP,或者是报错,无法解析该IP地址。
(1)主机向本地域名服务器发起域名解析请求;
(2)本地域名服务器接收到解析请求,入宫本地可以解析,则直接返回对应IP地址,如果不能解析,则进行递归查询,依据客户端的身份向根域名服务器发起解析请求;
(3)根域名服务器在收到本地域名服务器的请求时,要么返回解析地址,要么代替本地域名服务器继续前往下一(顶级域名服务器进行解析);
(4)顶级域名服务器收到来自根域名服务器的解析请求,可以解析,则返回解析IP地址,如果不行,则代替根域名服务器前往权限域名服务器进行解析;
(5)权限域名服务器收到域名解析请求后,返回解析IP或者返回无法解析该IP。
(6)整个过程,一级一级返回结果,最终完成IP解析。
2 迭代查询
本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:下一步需要向哪一个域名服务器查询。一般情况下,根域名服务器会把自己直到的顶级域名服务器告诉本地域名服务器,本地域名服务器会继续向顶级域名服务器进行查询,要么返回IP,要么告诉本地域名服务器,接下来需要向哪一个权限服务器查询,依次类推,最终完成域名解析。
(1)主机向本地域名服务器发起域名解析请求;
(2)本地域名解析服务器再收到请求后,如果可以解析,则返回IP地址,如果无法解析,则启用递归查询,代替主机向根域名服务器发起解析请求;
(3)根域名服务器收到本地域名服务器的请求,要么返回解析IP地址,要么告诉本地域名服务器,接下来可以向哪一个顶级域名服务器发起域名解析请求;本地域名服务器收到来自根域名服务器的返回包,开始前往顶级域名服务器发起解析请求。
(4)顶级域名服务器收到来自本地域名服务器的解析请求,要么返回解析IP地址,要么告诉本地域名服务器下一步该去哪一个权限域名服务器发起解析请求;本地域名服务器收到来自顶级域名的返回包,向权限域名服务器发起解析请求。
(4)权限服务器接收到来自本地域名服务器的解析请求,要么返回解析IP,要么返回解析错误,如此反复,完成域名解析任务。