域名解析
DNS(Domain Name Server,域名服务器)
2 域名分级
任何连接到因特网上的主机或路由都有唯一层次结构的名字即域名(domain name)。
因特网采用层次树状结构命名方法。域是名字空间中一个可被管理的划分(按机构组织划分),域可被划分为子域,子域可再被划分,即形成了顶级域名、二级域名、三级域名等。从右向左为顶级域名、二级域名、三级域名等,用点隔开。如:
tieba.baidu.com
它由三个标号组成, com即为顶级域名,baidu为二级域名,tieba即为三级域名。且域名不分区大小写。
PS:没有一级域名的说法。
现在也有人把baidu.com连在一起称为二级域名,但从wiki定义上来说二级域名只是baidu而已。
3 域名体系与域名解析流程
3.1 域名体系
上面只是从语法上对域名解析进行了分析,但实际上对域名解析真实流程应该有一个基础的概念。
我们可以用一个域名树来表示一个来表示域名网络结构,最上面的是根,但没有对应的名字。根下面一级的节点就是最高一级的顶级域名(因为根没名字,所以根下面一级域名就是顶级域名)。顶级域名往下划分就是二级域名,再往下划分就是三级四级域名。这里就解释了域名系统中根的概念。
DNS域名服务器同样具有类似的结构
在图中每一个域名服务器都能进行部分域名到IP地址的解析,当某个DNS服务器不能进行域名到IP地址的转换时,它就会到网络上其他域名服务器进行解析。从图中也可看出,DNS域名服务器也是按照层次安排。每一个域名服务器都只对域名体系中的一部分进行管辖。
3.2 域名服务器分类
个人认为本地域名服务器的概念比较重要 和前面三类是不一样的。
(1) 根服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有顶级域名服务器的域名和ip。根域名服务器一版情况下不会把待查询的域名直接转换IP,而是告诉本地域名服务器下一步应该找哪一个顶级域名服务器进行查询。
(2)顶级域名服务器
顶级域名服务器管理在该顶级域名服务器注册的所有二级域名,但受到DNS查询就会有相应应答。(可能是给出最后的结果或下一步一应当找的域名服务器ip)
(3)权限域名服务器
可以理解为二级域名下 负责一个区的域名服务器、如abc.com和y.abc.com应各设有一个权限域名服务器。
PS: 这里感觉有理解有点误差,在阿里云上买了某个域名abc.com 后面的三级域名都是可以自己设置的,如果访问量较小,整个abc.com仅一个区。下面的y.abc.com和 a.abc.com应该是公用的同一个权限域名服务器。
(4)本地域名服务器
本地域名服务器并不属于3.1域名服务器图中的层级结构,但对域名系统非常重要。但一台主机发出DNS请求时就是发给本地域名服务器。
每一个因特网服务提供ISP(电信联通移动),或一个大学都可以拥有一个本地域名服务器。这种服务器有时也被称为默认域名服务器。本地域名服务器一般离用户较近,一般不超过几个路由的距离。如果要查询的IP同属一个本地ISP时即可直接返回结果地址ip。
域名服务器同样具有主从模式保证服务可用
3.3 域名解析过程
在3.2中了解到了几种域名服务器的区别之后,这里就学习最重要的一个域名是如何变成ip的。
域名服务器(DNS)实际上记录域名与ip的对应关系。
主机发起查询请求到得到结果有以下流程:
1 主机向本地域名服务器发起查询。
2 本地域名服务器向网络上各DNS域名服务器发起请求得到结果
3 本地域名服务器告诉主机结果。
而DNS查询流程有两种模式
递归模式(用于上诉查询1过程中 主机与本地域名服务器的查询):
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服 务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结 果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
迭代模式(用于上诉查询过程2 本地域名服务器与各DNS域名服务器的查):
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
真实DNS解析流程:主机与本地域名服务器递归查询,本地域名服务器迭代查询
真实DNS实现上一般都采用高速缓存技术,各级域名服务器缓存一段时间查询结果。