DNS解析过程详解

一、DNS名词解释

  域名,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。
  DNS,全称Domain Name System,中文名为域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串。
  以淘宝为例,www.taobao.com就是域名,但计算机并不能直接根据域名找到淘宝,必须转化成101.89.125.239(IPV4)或240e:e1:f300:1:3::3f9(IPV6)这样的IP地址才能准确读取,而且这边的ip地址可能会随着时间、网络、机器的变化而变化。

二、DNS解析过程

在这里插入图片描述

1、 本地解析

  用户在本机浏览器输入www.taobao.com后,计算机会先在本地进行解析(图中为①),这里会分成三小步:
1)、先到浏览器的DNS缓存中查询是否有对应记录,如有则直接返回ip地址,完成解析,如果没有则下一步;
2)、接着会进行一个判断:软件是否或浏览器是否进行域名直接查询。如果有的话,会直接连到软件服务商提供的DNS服务器上,并返回IP;如果没有,则继续查询操作系统的缓存:如有则直接返回ip地址,完成解析,如果没有则下一步;
3)、最后查看本地host文件,比如windows的host文件一般位于“C:\Windows\System32\drivers\etc”,如果这里也没有的话就需要到本地dns服务器上查找了。

2、 本地dns服务器(简称LDNS)

  包括两部分:缓存服务器和递归服务器。
1)、缓存服务器有2种,一种是公共DNS服务器,比如114 DNS(114.114.114.114)、Google DNS(8.8.8.8);另一种是本地运营商提供的DNS服务器,比如我们上海电信的DNS服务器包括202.96.209.5、202.96.209.133、116.228.111.118和180.168.255.118。普通用户使用的都是运营商的本地域名服务器,这些服务器一般架设在离用户不远的地方,而且性能都很好,所以一般都会缓存域名解析结果,大约80%的域名解析都会在这一步完成(图中为②)。
2)、如果缓存服务器无法找到对应IP,则会把信息传递给递归服务器。

3、 根域名服务器

  当信息传递给递归服务器后,会根据内置的根域名服务器ip地址,寻求根域名服务器的帮助::
1)、dns域名服务器一般分3种,分别是根域名服务器(.)、顶级域名服务器(.com)、权威域名服务器。
2)、全球一共有13组根域名服务器(注:这里并不是指13台服务器,是指13个ip地址,按字母a-m编号),根域名服务器不会直接解析域名,二十把不同的解析请求分配给下面的其它服务器来完成,下面是dns域名系统的树状结构图:
在这里插入图片描述
3)、以www.taobao.com为例,当根域名接收到本地dns的解析请求后,获知后缀是.com,于是就把负责.com的顶级域名服务器ip地址返回给本地dns(图中为③和④)。
4)、本地dns获得返回的ip地址,再去找对应的顶级域名服务器,顶级域名又把负责该域名的权威服务器ip返回给本地dns(图中为⑤和⑥)。
5)、最后,本地dns根据ip找到对应的权威服务器,权威服务器把对应的主机ip返回给本地dns,至此完成了域名解析的全过程(图中为⑦和⑧)。

三、DNS资源记录类型

DNS的资源记录类型主要包括6种,如下表所示:

记录名 中文名 作用
A、AAAA 主机记录 说明一个域名对应的IP是多少,它是域名和IP地址的对应关系。Ipv4使用的是A记录,ipv6使用的是AAAA记录
NS 名称服务器记录 说明这个区域有哪些DNS服务器负责解析
SOA 起始授权记录 说明负责解析的DNS服务器中哪一个是主服务器
MX 邮件交换记录 主要用于邮件服务器DNS交互,帮助电子邮件正确到达邮件服务器
Cname 别名记录 用于为当前区域之外的资源提供别名
SRV 服务器资源记录 说明一个服务器能够提供什么样的服务
PTR 指针记录 是A记录的逆向记录,作用是把IP地址解析为域名

四、 DNS解析过程实例

在Linux中,可以使用dig命令将DNS解析过程展现出来。
1、 dig +trace
dig +trace可以显示全部的DNS服务器跟踪记录,如下图所示:
在这里插入图片描述
说明:dig +trace @8.8.8.8 www.baidu.com,是指在谷歌的域名服务器内寻找www.baidu.com的ip地址,可以从上图看到,首先是从root-servers也就是根域名服务器开始寻找的。
在这里插入图片描述
说明:然后开始在顶级域名服务器(.com)中寻找。
在这里插入图片描述
说明:继续从权威域名服务器(baidu.com)中寻找。
在这里插入图片描述
说明:最后查到百度的CNAME是www.a.shifen.com。
2、 dig @202.96.209.5 www.baidu.com
在这里插入图片描述
说明:
1)、202.96.209.5是上海电信的本地DNS服务器,和之前的命令一样,最后同样查到www.baidu.com的CNAME是www.a.shifen.com,而对应的IP地址为180.101.49.11/12。
2)、在DNS中,有一个很重要的概念是TTL(TIME TO LIVE),也就是生存时间,指的是域名和IP地址对应关系的保留时间。如果一直保存或TTL设置时间太长服务器空间会不够,不保存或TTL设置时间太短则会重复解析浪费带宽而且查询时间较长。不同的浏览器、系统和服务器都会有不同的标准,在浏览器中Chrome和Firefox的TTL设置时间默认为1分钟,而IE为30分钟。域名服务器的TTL设置标准一般如下图:
在这里插入图片描述
运营商的本地DNS服务器的TTL值一般设置为300秒。

猜你喜欢

转载自blog.csdn.net/weixin_42029733/article/details/105656665
今日推荐