DNS协议

什么是DNS

域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。主要功能就是域名转换为IP地址。

因特网的域名空间:

域名服务器

如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。

一个服务器所负责管辖(或有权限)的范围叫做区zone。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。区<= 域。

一般是有着:本地域名服务器 -> 权限域名服务器 -> 顶级域名服务器 -> 根域名服务器(从小到大)

域名解析过程

先看两个概念:

  • 递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以 DNS 客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
  • 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

具体的流程可描述如下:

  • 主机10.74.36.90先向本地域名服务器10.74.1.11进行递归查询
  • 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
  • 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器dns.meIP地址
  • 本地域名服务器向顶级域名服务器 dns.me进行查询
  • 顶级域名服务器me告诉本地域名服务器,下一步查询权限服务器dns.jocent.meIP地址
  • 本地域名服务器向权限服务器 ```dns.jocent.me`进行查询
  • 权限服务器 dns.jocent.me告诉本地域名服务器所查询的主机的IP地址
  • 本地域名服务器最后把查询结果告诉 10.74.36.90

一般 DNS 缓存放浏览器还是放系统

计算机中 DNS 记录在本地也有两种缓存方式:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中则访问 OS 缓存,最后再访问递归 DNS 服务器,然后递归 DNS 服务器会递归式的查找域名记录,然后返回结果。