DNS解析流程

DNS系统解析基本流程

  1. DNS简介

DNS, 全称为Domain Name System , 它在一个网站运行中起到了至关重要的作用, 其主要作用是把网站域名解析为对应的印地址, 例如:把www.etiantian.org解析为对 应的IP地址记录, 如1.1.1. 1, 这个从域名到lP的解析过程, 称作A记录, 即Address Record。

 

DNS系统除了负责这个最重要的A记录解析外, 还有很多的功能呢!例如:

  • 设置CNAME别名记录, 这个别名解析功能常被CDN加速服务商应用。
  • 设置MX邮件记录 ,这个 MX记录功能, 在购买或搭建邮件服务时会被用到。
  • 设置PTR 记录, 反向解析, 即把IP地址解析为对应的域名 ,和A记录的解析相
  • 反, 此功能在邮件服务等业务中会用到。

 

DNS系统的架构类似于一棵倒挂着的树(和Linux系统目录结构类似), 它的顶点也是根(…),只不过这个根是用点( " ." )来表示的, 不是目录的根斜线( "/" )。 整个DNS系统的树状结构如图所示。

 

2.DNS解析流程

  • 第一步:客户端用户在浏览器里输入 www.etiantian.org网站地址后回车 ,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.etiantian.org域名对应的四解析记录,如果有就直接获取到 IP地址 ,然后去访问这个E地址对应的WWW. etiantian.org域名的服务器。 一般第一次请求时,DNS缓存是没有解析记录的,而hosts多为内部临时测试使用。
  • 第二步:如果客户端本地DNS缓存及本地hosts文件没有www.etiantian.org域名对应的解析记录,那么,系统会把浏览器的解析请求发送给在客户端本地设置的DNS服务器地址 (通常称此DNS为LONS,即Local DNS)解析,如果LONS服务器的本地缓 存有对应的解析记录就会直接返回IP地址 给客户端;如果没有,则LONS 会负责继续 请求其他的DNS服务器。
  • 第三步:LONS 从DNS系统的( "")根开始请求对www.eti antian. org域名的解析,根DNS服务器在全球一共有13台,根服务器下面是没有www.etiantian. org域名解析 记录的,但是根 下面有www.etiantian.org对应的顶级域.org 的解析记录, 因此, 根会 把.org对应的DNS服务器地址返回给LONS。
  • 第四步:LONS获取到 .org对应的DNS服务器地址后, 就会去.org服务器请求www.etiantian.org域名的解析,而.org服务器下面也没有www.etiantian.org域名对应的 解析记录,但是有etiantian.org域名的解析记录, 因此,.org服务器会把etiantian.org 对应的DNS服务器地址返回给LDNS。
  • 第五步: 同理, LDNS获取到etiantian.org对应的DNS服务器地址后, 就会去 etiantian.org服务器请求对www.etiantian.org域名的解析,etiantian.org域名对应的DNS 服务器是该域名的授权DNS服务器, 这个DNS服务器正是企业购买域名时用于管理解析的服务器(也可能是自建的授权DNS服务器), 这个服务器会有与www.etiantian.org 对应的IP解析记录, 如果此时没有, 就表示企业的域名人员没有为www.etiantian.org 域名做解析, 即网站还没架设好。
  • 第六步: etiantian.org域名DNS服务器会把www.etiantian.org对应的IP解析记录 (例如 1.1.1.1 )发给LDNS。
  • 第七步:LDNS把来自授权DNS服务器的与www.etiantian.org对应的IP解析记录发给客户端浏览器, 并且LDNS会在本地把域名和IP的对应解析记录缓存起来, 以便下一次更快地返回相同解析请求的记录。至此, 整个DNS的解析流程就完成了。

 

 

 

2.DNS解析流程图

 

3.实践理解DNS的解析流程

命令:dig www.baidu.com +trace

+[no]trace(更多dig命令使用请自行查找)

切换为待查询名称从根名称服务器开始的代理路径跟踪。缺省情况不使用跟踪。一旦启用跟踪,dig 使用迭代查询解析待查询名称。它将按照从根服务器的参照,显示来自每台使用解析查询的服务器的应答。

可以看到左侧是从(.)也就是根DNS服务器,共13个。可以看到后面from 198.97.190.53#53(f.root-servers.net)也是这个IP完成的解析。

 

然后是解析(com.)的14台DNS服务器。可以看到后面是e这台DNS负责的解析

接着是解析(baidu.com.)的五台DNS服务器,也可以看到是ns3完成的解析。

 

最后的一个cname记录是www.baidu.com的真实域名www.a.shift.com,是在DNS服务器上把www.a.shift.com映射为www.baidu.com,是为为网站域名加壳,避免被攻击。有人会问为啥不是解析成A记录也就是域名解析成IP的形式,我猜测是为了安全吧。

 

 

递归查询

上述的客户机到本地DNS是进行了迭代查询,以下为为递归查询,可以看到把请求交给本地DNS,本地DNS会请求根DNS服务器,直到请求最后授权的DNS服务器,得到记录再返回客户端。下图为递归查询。

简单来说就是本地DNS请求根DNS,根DNS又去请求下面的顶级DNS,最后找到记录,并从原路返回最后返回给客户端。

迭代查询

迭代查询是指先请求本地DNS,然后本地DNS会让客户端去请求本地DNS查询到的根服务器,客户端会逐一请求各个顶级DNS,直到从授权DNS服务器找到解析记录,并返回客户端。

简单来说,客户端只有第一次是请求本地DNS,后面都是自己根据本地DNS给予的应答,自己逐一去请求,而递归是DNS帮你去逐一请求。

 

 

 

 

 

posted @ 2021-11-19 17:32  头发重要  阅读(1151)  评论(0编辑  收藏  举报