DNS 解析过程
电脑先 拿着域名
去找 DNS
服务器, DNS
把域名对应的 IP
地址返回给电脑,电脑拿着这个 IP
地址再取访问网站。
DNS服务器的结构
典型的 DNS 解析过程
解析 www.163.com
网址。
这里的www其实就是主机名,也就是163.com
提供 web
服务的主机。
过程
- 先查看本机的
host
文件,如果有,直接返回,没有去本地DNS服务器
查询。 本地DNS服务器
会先查看本地的缓存里面有没有,有直接返回,没有就会向根域名服务器
发送一次请求.(根域名服务器全球一共有13台)。根域名服务器
会告诉你,你要查的顶级域名服务器的IP地址
。- 然后你再去顶级域名服务器地址中查找,顶级域名服务器会告诉你
权威域名
服务器的IP
地址,然后你再去权威域名服务器
上查找, 权威域名服务器
上存有你要查询网址的IP
地址,他就回给他返回过来。
在整个上面的过程中,对于电脑用户来说,他只发送了一次请求,所有的DNS迭代查询过程。都是由本地DNS解析器完成的。
迭代查询和递归查询
一、主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,
向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
二、本地域名服务器向根域名服务器的查询的迭代查询。
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。
然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机
全局负载均衡器
比如百度,在全国有很多的机房,但是他的域名只有一个,但是让山东的用户访问山东的服务器,北京的用户访问北京的服务器。
过程
授权DNS服务器返回一条NS记录给本地DNS服务器。根据授权DNS服务器上的不同设置,这条NS记录可能是指向随机一个GSLB设备的接口地址或者是所有GSLB设备的接口地址。
本地DNS服务器向其中一个GSLB地址发出域名查询请求,如果请求超时会向其它地址发出查询;
GSLB设备选出最优解析结果,返回一条A记录给本地DNS服务器。根据全局负载均衡策略设定的不同可能返回一个或多个VIP地址;
本地服务器将查询结果通过一条A记录返回给用户,并将缓存这条记录。