一、相关定义
域名,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。
DNS解析(Domain Name System,域名系统)是一种将域名和IP地址相互映射的分布式数据库,它使得人们可以通过容易记住的域名来访问互联网,而无需记住复杂的IP地址。
IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。
计算机只能识别纯数字构成的IP地址,不能直接读取域名,因此需要将域名翻译成IP地址。
二、DNS域名解析过程
当我们在浏览器地址栏输入www.baidu.com 时,DNS解析过程大体可以用一张图来表示。
DNS解析主要流程:
1、在浏览器输入www.baidu.com域名后,计算机会先在本地进行解析。先到浏览器的DNS缓存中查询是否有对应的记录,如果有则直接返回IP地址,完成域名解析。如果没有则进行下一步。
2、如果hosts配置文件里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,则直接返回,完成域名解析。
3、如果hosts与本地DNS解析器都没有相应的网址映射关系,首先会找TCP/IP 参数中设置的首选DNS服务器,我们称它为本地DNS服务器(LDNS,其包括缓存服务器和递归服务器)。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了。后续的DNS迭代和递归也是本地DNS服务器负责的。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已经缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析。如果本地服务器DNS服务器没有命中,就向根DNS服务器请求解析。
5、根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。以www.taobao.com为例,当根域名接收到本地DNS的解析请求后,获知后缀为.com,就把负责.com的顶级域名服务器ip地址返回给本地DNS。6、本地DNS获得返回的IP地址,再去找对应的顶级域名服务器发送解析请求。
7、顶级域名又把负责该域名的权威服务器(Name Server)的IP地址返回给本地DNS,这个Name Server服务器就是要访问的网站域名提供商的服务器。
8、本地DNS根据IP找到对应的权威服务器,权威服务器会查询存储的域名和IP的映射关系,再把查询出来的域名和IP地址等信息,连同一个TTL值返回给本地DNS服务器,返回最终的DNS解析结果。
以下图辅助,更加容易理解。
三、DNS解析方式
1、正向解析
正向解析:根据域名查找对应的IP地址
2、反向解析
反向解析:根据IP地址查找对应的域名
四、DNS查询方式
1、递归查询
递归查询是指客户端发送一条查询请求到DNS服务器,如果DNS服务器无法回答该请求,则向他人询问,直到返回结果。这类似于你询问某个问题,如果对方无法回答,他会将问题转发给其他人,直到有人能够回答为止。
(1)主机首先向其本地域名服务器进行递归查询。
(2)本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询。
(3)根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询。
(4)顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询。
2、迭代查询
迭代查询只是返回有权回答该查询的DNS服务器,与转发查询不同,不会为你提供答案,而是要求你下一步进行查询。
(1)主机首先向其本地域名服务器进行递归查询。
(2)本地域名服务器采用迭代查询,它先向某个根域名服务器查询。
(3)根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的IP地址。
(4)本地域名服务器向顶级域名服务器进行迭代查询。
(5)顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的IP地址。
(6)本地域名服务器向权限域名服务器进行迭代查询。
(7)权限域名服务器告诉本地域名服务器所查询的域名的IP地址。
(8)本地域名服务器最后把查询的结果告诉主机