DNS(域名解析)基本过程深入理解

概览

DNS,全称 Domain Name System,域名系统,是一个记录域名和 IP 地址相互映射的一个系统,能够将用户访问互联网时使用的域名地址转换成对应的 IP 地址,而不用使用者去记住数量众多的 IP 地址。
通过域名得到域名对应的 IP 地址的过程被称为域名解析,DNS 运行于 UDP 协议之上,使用的端口为 53。

查询方式

DNS 的查询方式有两种,分别为递归查询(recursion)和迭代查询(iteration)。

递归查询:客户端发起一个 DNS 解析请求,若本地 DNS 服务器若不能为客户端直接解析域名,则域名服务器会代替客户端(下级服务器)向域名系统中的各分支的上下级服务器进行递归查询,直到有服务器响应回答了该请求后,将该请求结果返回客户端。在此期间,客户端将一直处于等待状态。

迭代查询:客户端(下级服务器)发起一个 DNS 解析请求后,若上级 DNS 服务器并不能直接提供该 DNS 的解析结果,则该上级 DNS 服务器会告知客户端(下级服务器)另一个可能查询到该 DNS 解析结果的 DNS 服务器 IP,客户端(下级服务器)再次向这个 DNS 服务器发起解析请求,如此类推,直到查询到对应的结果为止。

通常递归查询这种方式用于 PC 机与本地 DNS 服务器之间的查询,而递归查询则多用于 DNS 服务器之间的查询:

DNS(域名解析)基本过程深入理解

解析图示

DNS(域名解析)基本过程深入理解

  1. 浏览器缓存
    当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址(若曾经访问过该域名且没有清空缓存便存在);
  2. 系统缓存
    当浏览器缓存中无域名对应 IP 则会自动检查用户计算机系统 Hosts 文件 DNS 缓存是否有该域名对应 IP;
  3. 路由器缓存
    当浏览器及系统缓存中均无域名对应 IP 则进入路由器缓存中检查,以上三步均为客服端的 DNS 缓存;
  4. ISP(互联网服务提供商)DNS 缓存
    当在用户客服端查找不到域名对应 IP 地址,则将进入 ISP DNS 缓存中进行查询。比如你用的是电信的网络,则会进入电信的 DNS 缓存服务器中进行查找;
  5. 根域名服务器
    当以上均未完成,则进入根服务器进行查询。全球仅有 13 台根域名服务器,1 个主根域名服务器,其余 12 为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器 IP 告诉本地 DNS 服务器;
  6. 顶级域名服务器
    顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的 IP 地址告诉本地 DNS 服务器;
  7. 主域名服务器
    主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;
  8. 保存结果至缓存
    本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个 IP 地址与 web 服务器建立链接。

 

树状结构

DNS 在网络中存在着数量众多的域名,如.com、.org 等,而域名系统中是以层级树状结构划分域名的,类似于下图:

DNS(域名解析)基本过程深入理解

位于域名系统的顶端为根域名,表现形式为:.(即一个点符号);再往下一级即为顶级域名,如:.net、.com、.org 等(而国家或地区域名.cn、.tw、.hk、.us、.jp 也是顶级域名。);再往下则为二级域名,如.qq.xxx、.baidu.xxx 等;而位于域名系统最底层的为三级域名或主机名,如 www.,im. 等,一般域名的树状结构到此为止,但系统依然可以再往下更多级增加,如腾讯的企业微信服务商开放平台域名即是 open.work.weixin.qq.com,达到五级之多。

域名合法性

一个合法的域名格式,应遵循 FQDN(Full Qualified Domain Name,完全合格域名)格式,以域名系统的级别从低到高,从左往右编写,如:www.qq.net.、www.sina.org.,最顶层亦最右边的 root(根)即是一个点(.),正常使用可以省略,所以如上的 www.qq.com. 可以以 www.qq.com 来表示,所以我们常见的格式都是后者,都是将根域省略的。

正/反向解析

在 DNS 服务器中逻辑上存在着两个区域,一个是正向解析区域,另一个是反向解析区域。正向解析区域即我们通常所说的域名解析,而反向解析指的是 IP 反向解析,即通过查询 IP 地址的 PTR 记录来得到该 IP 地址所指向的域名记录。而 PTR 记录为邮件交换记录的一种,另一种为 A 记录。A 记录解析域名到 IP 地址,而 PTR 记录则负责解析 IP 地址到域名。

给TA打赏
共{{data.count}}人
人已打赏
技术教程

CSS 全局变量函数的声明与应用

2022-11-14 15:13:13

技术教程

PHP 判断值是否存在数组中以校验用户访问权限

2022-11-15 10:18:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索