DNS解析流程

Posted by Mars . Modified at

DNS的解析流程

DNS(Domain Name System)域名系统,就是把人们好记的计算机域名与对应的IP地址相互转换的系统。

应用很少直接使用DNS,一般都是间接使用。但是DNS是应用层的一个核心服务。

互联网的域名结构

任何一个连接到互联网的主机或路由器,都有一个唯一的层级结构的名字,称为域名。

域(domain)是一个命名空间中可被管理的划分。从级别上可以划分为:顶级域、二级域、三级域等等。

域名系统规定:

① 各级域名的标号都由数字和字母构成;

② 每一个标号不超过63个字符,也不区分大小写字母;

③ 标点符号只能使用连字符 - ;

④ 级别低的域名级别写在左边,级别高的写在右边;

⑤ 多个标号组成的完整域名,长度不超过255字符;

顶级域名

顶级域名有国家顶级域名(.cn等)、通用顶级域名(.com等)和基础结构域名(.arpa)三种。

二级域名

各国家顶级域名下的二级域名划分,由各国自行决定。我国划分为类别域名和行政区域名两个大类。

类别域名:.ac .com .edu .gov .mil .net .org

行政区域名: .bj .js 等

三级域名

如mail、www等,可以由各单位自己划分。

域名服务器

根域名服务器

最顶级的域名服务器。互联网一共有13个根域名服务器,也就是说根域名服务器只有13个ip地址。

但是并不是只有13个服务器主机,而是每一个服务器由分布在世界上各个位置的若干主机的一套设备构成,这些设备通用一个ip地址,彼此互为镜像。

根域名服务器由字母A-M命名。

顶级域名服务器

负责管理一个顶级域名下的所有二级域名。如.com服务器。

权限域名服务器

负责一个区的域名服务器。如a.abc.com这个区的服务器。

本地域名服务器

位于主机本地的服务器,与主机距离很近,一般也称默认服务器。

一个大学、大学的一个系都可以拥有自己的本地服务器。

当主机发出DNS请求时,首先向本地DNS服务器发送。其内部缓存了所有查询过的域名列表,如果查询不到,则作为客户代表主机向下一级DNS服务器发送查询请求。

DNS解析流程

DNS解析使用UDP协议进行。流程如下:

  1. 主机提出需要解析的域名(www.baidu.com),请求本地域名服务器解析。先查找缓存,顺序为:浏览器DNS缓存->操作系统hosts文件->本地DNS服务器缓存。如果缓存中存在这个域名和对应的ip地址,则直接返回ip给主机。
  2. 如果以上缓存中没有,则本地域名服务器代替主机与根域名服务器进行请求。(主机与本地域名服务器之间为递归查询

递归查询:每次由下一级服务器代表上一级服务器进行查询,最终结果层层返回。

  1. 本地域名服务器向根域名服务器进行请求,根域名服务器返回下一级域名服务器(.com顶级域名服务器)的ip地址给本地域名服务器;
  2. 本地域名服务器向.com顶级域名服务器发起请求,.com顶级域名服务器返回下一级域名服务器(baidu.com二级域名服务器)ip地址给本地域名服务器;
  3. 本地域名服务器向baidu.com二级域名服务器发起请求,baidu.com二级域名服务器内保存了www.baidu.com域名的ip地址,所以返回这个ip地址给本地域名服务器;

本地域名服务器与其他域名服务器的查询,为迭代查询。

迭代查询:每次查询下一级服务器返回结果给发起查询的服务器,由发起查询的服务器自己进行发起下一次的查询。

  1. 本地域名服务器将查询到的结果返回给主机,并把域名www.baidu.com和对应的IP地址保存到本地DNS高速缓存中,以备主机下一次查询。

以上各级DNS服务器也具有自身的缓存,如果缓存中存在,则直接返回给代替客户查找的本地DNS服务器,不再进行后面的查找工作。

Keywords: Network
previousPost nextPost
已经有 1000000 个小伙伴看完了这篇推文。