域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
DNS使用UDP——端口:53。
当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
在互联网中,每台计算机都有一个唯一的IP地址,而IP地址是一串数字,很不便于人们记忆和使用。因此,DNS就是需要的了。通过DNS,我们可以使用易于记忆的域名来访问网站,而不必每次都输入复杂的IP地址。
命名结构
DNS系统采用树状结构,每个域名都被分配到一个层次结构上,从而构成了一个层次的命名空间,也就是域名系统的命名结构,便于管理和查找。
管理与解析
分区管理——一个DNS服务器管辖固定的范围,简称为区。
每个区会设置权限域名服务器:保存该区的主机域名到IP地址的映射
解析过程:
-
查询本地缓存:首先,操作系统会查询本地缓存(浏览器和DNS服务器均有可能缓存域名解析结果),如果已经有缓存,直接返回结果,跳过后续步骤。
-
请求本地DNS服务器:如果本地缓存中没有找到匹配的解析结果,操作系统会向本地DNS服务器发送解析请求,将域名解析的任务交给本地DNS服务器处理。
-
查询根域服务器:如果本地DNS服务器也没有缓存匹配记录,那么会向根域服务器发送请求(每个DNS服务器只知道连接到另外两台DNS服务器的信息,不知道目标IP地址,需要通过根域服务器逐步查询)。
-
查询顶级域服务器:通过根域服务器,本地DNS服务器得到所查询域名对应的顶级域服务器,将目标请求转发给对应的顶级域服务器。
-
查询下一级域服务器:通过顶级域服务器,本地DNS服务器得到所查询域名对应的下一级域服务器地址,将目标请求转发给下一级域服务器,直至解析完成得到IP地址。
-
返回解析结果:最终,本地服务器返回查询结果(IP地址),并将结果存入本地DNS服务器缓存,供下次使用。
DNS域名服务器查询方法
递归查询
主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
迭代查询
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
迭代查询的特点是这样的:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器,“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续的查询)。
根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪一个权限域名服务器进行查询。
最后,知道了所要解析的域名的IP地址,然后把这个结果返回给发起查询的主机。当然,本地域名服务器也可以采用递归查询,这取决于最初的请求报文的设置是要求使用哪一种查询方式。