我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

我们先来了解一下DNS的一些基本概念:

1. 根区

就是所谓的“。”,其实我们的URL应该配置成.(末尾带个点),一般我们在浏览器中输入的时候都会省略末尾的点,这已经成为习惯了。

我们知道根域服务器有13个,但是这是一个错误的观点。

根域服务器只有13个IP地址,但是机器数量却不只有13台,因为这些IP地址使用了技术,所以我们可以在世界各地建立这些IP的镜像站点,你访问的IP并不是唯一的主机。

详细的镜像分布可以参考,这些主机的内容都是一样的。

2. 领域划分

域名下面是顶级域名或一级域名。

分类方式有两种,一种是按照互联网刚出现时的行业性质来划分,比如com.,net.等;另一种是按照国家来划分,比如cn.,jp.等。

您可以自己查看具体金额,我们不关心。

每个域都有一个域名服务器,也叫权威域名服务器。

是顶级域名,但不是顶级域名,是这个域名下有一个名为www的主机。

一级域名之后还有二级域名和三级域名,只要我购买一个顶级域名并搭建自己的BIND服务器(或者其他软件)在网上注册,就可以在它前面添加任意多个域名(当然长度是有限制的)。

例如,此 URL 中的 a. 将成为二级域而不是主机,主机名为 a。

3.域名服务器

能够提供域名解析的服务器,以上记录类型可以是A()记录、NS记录(名称)、MX(邮件)、CNAME等。

(详细解释请参考博客:域名解析中A记录、CNAME记录、MX记录、NS记录的区别和联系)

A记录是什么意思呢?它记录了一个IP地址和一个主机名。比如我的域名服务器所在的域名,我们知道这是一个二级域名,那么我里面就有一个A记录,里面记录了主机a的IP地址。一旦找到它,就会返回给你。

如果我现在要查询这个域名服务器,那么顶级域名服务器就会发现你请求的URL是在这个域内的,而这个二级域的域名服务器的NS IP我都记录下来了,我把这个地址返回给你,你就可以用主机a去查主机了。

这些域中的域名服务器称为权威服务器,它们直接提供 DNS 查询服务。(这些服务器不做递归)

4. 分析过程

那么我们的DNS是如何解析域名的呢?

1、现在我有一台电脑,通过ISP上网,那么ISP会给我分配一个DNS服务器,这个DNS服务器并不是权威服务器,而是相当于一个代理DNS解析服务器,它会帮你迭代权威服务器返回的响应,然后把最终的IP返回给你。

2.现在我的电脑就会向这台电脑发送请求,查询这个域名。

3.收到请求后,首先检查你的缓存中是否有这个地址,如果有,则直接返回。此时获取到的IP地址会被标记为非权威服务器的响应。

4、如果该地址不在缓存中,就会从配置文件中读取13个根域名服务器的地址(这些地址是不变的,直接在BIND配置文件中)。

5.然后向其中一个人提出请求。

6.根服务器收到这个请求之后,知道自己在顶级域名com.下,所以会返回com域中的NS记录,一般是13位主机名和IP地址。

7.然后重新给其中一个发请求,com域的服务器发现你的请求是这个域的,我查了一下,找到这个域的NS,然后就返回给你,你再查一下就可以了。

(目前百度有4个顶级域名服务器)。

8.再向这个域名的权威服务器发出一个请求,收到之后用www查主机,然后返回IP给你。

9.获取到之后返回给客户端,并且保存到缓存中。

我们来用这个工具详细讲解一下解析步骤:

从上图我们可以看出:

第一行是:DNS服务器主机名-210.32.32.1

第二行是:它的 IP 地址 - 210.32.32.1#53

以下名称为:解析后的 URL--

是:解析的IP是112.121.162.168

但也有更复杂的DNS解析,如百度:

你会发现百度有一个cname=的别名。

这个过程是怎样的?

让我们使用 dig 工具来跟踪它(它是 Linux 系统自带的)

————————————————————————————————————————————————————————

Dig工具会在本地计算机进行迭代,并记录查询过程。

第一步从我的机器上获取根域服务区内的13个IP和主机名[bj]。

第二步,向其中一个根域服务器(最后一行括号中的服务器)发送查询请求,该服务器返回 com. 顶级域的服务器 IP(未显示)和名称。

第三步,请求com.域中的服务器,192.33.4.12。它返回域的服务器IP(未显示)和名称。百度有四个顶级域服务器。

【这里可以使用dig@192.33.4.12查看返回的百度顶级域名服务器IP地址】

第四步,请求百度的顶级域名服务器(202.108.22.220)。他发现这个www有一个别名,而不是主机。别名就是。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

按照一般的逻辑,当DNS请求一个别名的时候,查询就会终止,并发起一个新的查询该别名的请求,所以这里应该返回的是。

但是为什么返回的是这个域名的NS呢?

我们可以尝试以下命令:dig +trace看看结果是什么。。。。。。。。

你会发现在第三步,这个顶级域名的域名服务器和本域的域名服务器是同一个主机(即:)!

当我拿到别名之后,需要再到com域中搜索该域的NS,但是因为两个域在同一个NS上,所以我直接发送到本地机器。

域发现请求属于此域。

所以它返回NS和IP,允许我查询该域的域名服务器。

于是我从 ns X 获得了一条 A 记录。最终结果就是 IP 地址。[您也可以在这里使用 dig +trace] 来跟踪它

我用一张图来解释一下(图中第三步显示全世界只有13个,这是错的)

以下内容是在虚拟机中搭建本地dns服务器得到的实验数据,修正以上结论

在上面的分析中,我们使用了dig工具进行追踪,但是在我们拿到cname和IP之后dig并没有继续追踪发生了什么。

我们得出结论,本地 DNS 将发出请求。

其实这个想法是错误的,你可以在本地搭建一个本地DNS,把整个解析过程的数据包全部抓取下来,看一看就明白了。

实际结果是,虽然返回了域名的服务器地址和IP,

但是本地DNS并不直接请求上面返回的IP,而是再次请求com域,获取该域的服务器(也就是那四台服务器)。

然后再次请求,返回域服务器,最后再次请求,

虽然上面已经返回了IP,但是实验的结果还是需要再次查询域名。

上图是解析过程中抓包的整个过程,蓝线是收到响应的cname和域名服务器IP地址后,继续请求com域名。

这个图充分说明了IP和cname同时返回。

总结一下,

①本机请求本地dns

②本地DNS请求根域,根域返回com.域的服务器IP

③ 向com.发出请求,com.返回该域名的服务器IP

④ 返回请求的cname和的服务器IP

⑤向根域的请求

⑥ 向com.域的请求

⑦请求

⑧ 向域发出请求

⑨ 获取IP

⑩返回本地的cname和IP

二维码
扫一扫在手机端查看

    Tags : shifen
本文链接:https://by928.com/5652.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线