DNS查找过程
这几天看了一些关于网络方面的知识,总结一下域名系统DNS(Domain Name System)
的查找过程。
基本概念
定义
定义很容易理解:DNS就是用来把便于人们使用的机器名字转换成ip地址。
域名结构
:1
2
3 mail.qq.com
/ | \
三级域名.二级域名.顶级域名
域名服务器
;
- 根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
- 顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
- 权限域名服务器:负责一个“区”的域名服务器。
- 本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
DNS查询方式分类
:
- 递归查询:主机所询问的本地域名服务器不知道被查询的域名ip地址,那么本地服务器就以DNS客户的身份,向其他的根域名服务器继续发出查询请求报文,不论成功与否,都会做出对应的响应。(发生在DNS客户端与DNS服务器之间)
- 迭代查询:DNS服务器根据自己的高速缓存或区域的数据,以最佳结果响应。如果DNS服务器无法解析,它可能返回一个指针。指针指向下级域名的DNS服务器,继续该过程。知道找到拥有所查询名字的DNS服务器,或者出错,超时为止。(发生在DNS服务器之间)
DNS查询过程
假设主机想查询另一个主机的www.163.com的IP地址,则查询步骤如下:
- 主机向本地DNS服务器进行递归查询,浏览器检查缓存中有没有这个域名对应的解析过的ip地址,如果缓存中有,则查询过程结束。
- 否则本地服务器采用迭代查询。它先向一个根域名服务器查询,全球只有13台根域名服务器。
- 根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
- 本地域名服务器向顶级域名服务器dns.com进行查询。
- 顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.163.com的IP地址。
- 本地域名服务器向权限域名服务器dns.163.com进行查询。
- 权限域名服务器dns.163.com告诉本地域名服务器,所查询的主机的IP地址。
- 本地域名服务器最后把查询结果告诉主机。
引用别人的一张图片:
整个查询过程共用到了8个UDP报文。
为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。