概述
DNS 解析就是浏览器从 URL 中解析出域名,然后使用解析出的域名作为参数,传给本地的 DNS 解析器,DNS 解析器按照一定的标准格式将域名发送给就近的 DNS 服务器,DNS 服务器通过一系列的查询操作,最终返回该域名对应 IP 地址的过程。
域名的层次结构
根域
根域是域名后面的一个英文句号,常常被省略。根域中保存着 com , cn... 等顶级域的DNS服务器的信息。上级 DNS服务器保存着所有下级域的服务器信息。所以一次完整 DNS 的查询,开始于根域。然而实际情况下会存在大量的缓存。包括本地 DNS 解析器,同一网段是哪个的 DNS 服务器。甚至各个层级的服务器,也都都会缓存,当以上提到的缓存在有效时间内就不会再继续查询了。
分配给根域服务器的 IP 地址全世界只有 13 个,并且这些地址几乎不会变动,所以在每一台 DNS 服务器上都保存着所有根域服务器的 I P地址,以方便直接使用查询。
DNS服务器查询操作
查询操说明以 www.lab.glasscom.com 域名为例 ,具体如下图:
第一步
客户端计算机发起 DNS 解析请求,将域名发送给同一网段的 DNS 服务器(一般自动注册在客户端计算机上)。
第二步
注册在客户端计算机上的 DNS 服务器会优先从缓存中查找该域名对应的 IP 地址,当缓存中的 IP 地址有效时则直接返回给客户端计算机。若失效或不存在时则将该域名发送给根域的 DNS 服务器,开始查询操作。
第三步
根域服务器拿到需要解析的域名后,开始在记录中查询该域名对应的顶级域的 DNS 服务器信息,查到后将顶级域的DNS 服务器的 IP 地址回传给客户端委托 DNS 查询的服务器。
第四步
被委托查询域名信息的 DNS 服务器拿到该域名对应的顶级域的 DNS服务器的 IP(也就是 .com 域对应的 IP) 地址后 ,继续使用该 IP 地址向顶级域服务器发起解析请求。也就是去 .com 域对应的 DNS 服务器去查询。
第五步
.com 域对应的 DNS 服务器收到解析请求后,开始查询域名下一级域对应的 DNS 服务器信息,查询到这一级域对应的 DNS 服务器信息后,将其对应的 IP 地址回传给客户端就近的DNS服务器。
第六步
整个查询过程就这样一级接一级的查询下去,最终会找到完整域名所对应的服务器 IP 地址。找到后同样会回传给客户端委托查询域名信息的 DNS 服务器,然后该 DNS 服务器会将该 IP 地址发送回客户端计算机,同时将本次的查询结果保存在缓存中,以备下次查询是直接使用(有效期内)。
DNS查询消息类型
- 域名:服务器,邮件服务器(邮件地址中@后面的部分)的名称
- Class:在最早设计DNS方案时,DNS在互联网以外的其他网络中的应用也被考虑到,而Class就是用来识别网络信息。不过,目前除了互联网已经没有其他网络了,因此Class的值永远时代表着互联网 即:IN
- 记录类型:表示域名对用的各种记录类型,例如当:类型为A(Address)时,表示域对应的时IP地址;当类型为MX(Mail eXchange)时,表示域名对应的邮件服务器,对于不同的记录类型,服务器向客户端返回的信息也会不同。
例如当要查询www.lab,glasscom.com这个域名的IP地址时,客户端发送的消息包含一下信息:
DNS查询使用网络协议
UDP协议