DNS查询全过程

2021-08-09 11:13:10 浏览数 (1)

DNS(Domain Name System,域名系统),是一种用于将域名解析为IP的服务器系统,当你上网时输入一个网址,它之所以能够找到该网址指向的服务器地址,都是靠域名系统来进行解析的。

先来讲讲域名。以华工官网为例 www.scut.edu.cn,一个域名,其实是从最右端开始逐层向下的,也就是说.cn是最高级的域名,往下才是.edu,然后到.scut,最后www是华工网站服务器的主机名,通过这样一层一层就能找到你需要访问的服务器地址。

Query DNS Txt Record with Dig Command

当我们输入一个网址时,DNS帮我们找到这个网址对应的服务器的过程是怎样的呢?

1、首先要知道,我们每一部连上Internet的电脑都需要配置当前网络的DNS服务器地址,例如你开通校园网时,学校会给你分配IP,以及告诉你几个DNS(默认、备用)的地址让你填好,这个就是直接为你服务的DNS。但是,单靠这个DNS是无法直接解析域名的,在它之上还有更高级的DNS,这些DNS协同运作最终为你找到你需要的域名所在的服务器,下面来讲讲具体过程。

2、你输入一个网址www.scnu.edu.cn(华南师范大学官网),这时直接为你服务的华工DNS首先会将请求报告给DNS系统的最高等级服务器“. ”,没错,就是一个小数点,这个最高等级DNS服务器称为root。

华工DNS: 欸~我想找www.scnu.edu.cn这个网站啊,怎么去啊?

root DNS:你去找cn.的DNS吧,它的IP是XXX.XXX.XXX.XXX,他负责管这部分的域名。

3、得到这个响应之后,华工DNS会将请求报告给.cn的DNS。

华工DNS: 欸~我想找www.scnu.edu.cn这个网站啊,root让我来找你,你知不知道怎么去啊?

.cn DNS:你去找edu.cn.的DNS吧,它的IP是XXX.XXX.XXX.XXX,他负责管这部分的域名。

4、然后,华工DNS会再次给.edu.cn的DNS提交请求。

华工DNS: 欸~我想找www.scnu.edu.cn这个网站啊,.cn让我来找你,你知不知道怎么去啊?

.cn DNS:哦~我知道,这是华师的域名,你去找他们家的DNS scnu.edu.cn.吧,它的IP是XXX.XXX.XXX.XXX,你去他家问就知道了。

What is DNS? DNS Meaning

5、最后,华工DNS向华师的DNS 提供请求,终于能够找到这个网址对应的IP了。

华工DNS: 欸~我想找www.scnu.edu.cn这个网站啊,听说是你家的吧,你知不知道怎么去啊?

.cn DNS:哦~这是我们家www服务器的域名啊,我知道,IP就是XXX.XXX.XXX.XXX,你去吧。

整个域名解析过程就是如此,可能你会觉得,这样不是很繁琐吗,为什么不直接找到华师的DNS呢?

这是不可能的,因为单一的DNS不可能记住所有域名对应的IP,这样会使整个服务器变得很臃肿,也就变得不可靠。采用这种分层的方法,就可以实现分层管理,从而达到效率提高的目的。

这个过程其实我们是可以很直观的看到的,就是通过dig命令。

dig trace www.scnu.edu.com

1

从dig trace我们可以很清晰的看到一个域名解析的过程:

第一部分的左边的“.”就是之前提到的root DNS服务器,后面的received。。。。192.168.40.2就是直接为本机服务的DNS(由于我是在虚拟机上运行的所以这是一个本地IP),说明这些root服务器的信息是由直接为本机服务的DNS提供的。

第二部分是由192.112.36.4(即root DNS的IP地址)回馈的消息,cn.就是cn.服务器,后面的e.dns.cn就是这些cn DNS的域名,也就是root告诉我们要到cn去找。

到了最后一部分,由202.116.32.8(华师DNS的IP地址)告诉我们,这个www.scnu.edu.cn网站的IP地址是121.8.171.13,到此一次域名解析就结束了。

其实dig命令更简单的用法是

dig www.baidu.cn

1

Understanding Linux Dig Command

开头是一些统计信息,可以不用管,我们看一看后面的SECTION

QUESTION SECTION 这部分是提问,显示你要查询的域名

ANSWER SECTION 即答案,显示查询到的域名对应的IP

AUTHORITY SECTION 这部分显示的是直接提供这个域名解析的DNS服务器,不包括更高级DNS服务器

ADDITIONAL SECTION 这部分显示的是这些直接提供解析的服务器的IP地址

最后面的是一些统计信息,其中SERVER指的是直接为你服务的本地DNS服务器的IP。

除了这些内容之外,还有:

1、中间的5指的是ttl(time to live ,暂存时间),表示这次请求会在服务器上保存多久时间(单位:秒)。

2、IN是固定关键词

3、CNAME是别名,意思是这个域名还有另外一个名字,两者指向同一个IP。 A指的是Address,即IP地址。 NS指的是服务器主机名,在AUTHORITY SECTION里面的服务器主机名,都会在ADDITIONAL SECTION里给出该主机的IP地址。

在上面的dig命令我们可以看到,在解析一个域名的时候,往往会发现有多个DNS服务器提供解析服务,这是因为DNS服务器要求一般至少有两个,以防发生服务器宕机无法提供域名解析的情况。那么多个服务器,谁来响应这个DNS请求呢?这就要看服务器管理者怎么设置各个服务器的主从关系(Master-Slave)了,通过dig命令也可以查看DNS服务器的主从关系。

dig -t soa www.baidu.com

1

Flush DNS Cache with Command Quick Guide

SOA是start of authority的简称,提供了DNS主服务器的相关信息,在soa之后我们可以看到7个参数,依次是:

1、DNS主服务器名

2、管理员的E-mail,这里是baidu.dns.master@baidu.com,由于@在数据库文件里有特殊作用,所以这里是用.代替的。

3、更新序号。表示数据库文件的新旧,一般是用时间来表示,这里1703230011表示的是2017年3月23日进行了一次更新,当天更新编号0011.

4、更新频率。 表示每5秒,slave服务器就要向master服务器索取更新信息。

5、失败重试时间,当某些原因导致Slave服务器无法向master服务器索取信息时,会隔5秒就重试一次。

6、失效时间。如果一直重试失败,当重试时间累积达到86400秒时,不再向主服务器索取信息。

7、缓存时间。默认的TTL缓存时间。

0 人点赞