dns介绍及其查询过程

本文讲讲解了dns域名系统,简述了查询过程,以及dns的查询原理

DNS,全称Domin Name System,域名系统,是建立域名与IP映射关系的服务器。

我们知道,计算机与计算机之间连接,是靠IP 地址的,并不能通过域名,以目前人类的记忆能力,是无法记住那么多的IP地址的,当然我们在访问网站的时候,在浏览器的地址校正里输入域名,就可以看到网页上呈现的内容,这是因为有一个DNS的服务器,把域名翻译成了IP地址,然后去连接,请求我们所需要的页面。而DNS,就是这样的一个翻译官角色。

另外,整个因特网的规模是很大的,不可能只用一个域名服务器,所以,很早的时候,DNS就采用了分层次,树状的结构命名方法,而且使用分布式的DNS。下面我们先来讲一个DNS结构。

domain

从上图,可以看出,最高级的是根域,这里提一下,根域,就是点 . 其实我们在访问网站的时候,输入的域名,如:www.baidu.com,其实最后还有一个 . 只是不需要手动输入而已,但实际上是存在的,这个就是根域。

这里提一下,根域服务器的主根有一台,在美国,剩下还有12台辅助根域服务器,其中9台在美国,两台在欧洲(英国、瑞典各一台),亚州一台(位于日本),共13台。

根域服务器的主根有一台,在美国,剩下还有12台辅助根域服务器,其中9台在美国,两台在欧洲(英国、瑞典各一台),亚州一台(位于日本),共13台。

然后第二层是顶级域,顶级域分为三大类:

(1) 通用顶级域名:有com一般代表公司、企业,net网络机构,edu教育机构,gov,非军事的政府机构等等

(2) 国家级顶级域名:根据ISO3166标准,cn代表中国,us代表美国,uk代表英国,jp代日本,等等

(3) 基础结构域名:这种顶级域名只有一个,是 arpa,用于反向解析

第三层是二级域名,也就是我们常说的注册一个域名,所注册的名称,如:baidu.com google.com 就是注册二级域名,注册以后,这个注册的域名下面的主机名,以及3级,4级,5级6级等等,都可以自己进行定义了。

DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。标号中除连字符(-)以外,不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

下面我们来讲一下DNS查询过程

dns-from

结合上图,我们来讲一下DNS查询过程 以www.baidu.com为例子

1客户端打开浏览器,输入www.baidu.com并按下回车

2 计算机查询本地缓存是否记录值,如果有,则直接返回结果,解析完成

3 查询本地host文件,如果有记录,直接返回结果,解析完成

4 向本地DNS查询,(就是我们在TCP/IP配置里指定的DNS服务器)

DNS服务器查找,此域是否在自己的资源记录中,若在,直接返回结果,解析完成

5 不在自己的资源记录中,则向根域服务器查询,(所有DNS服务器都知道13台根域服务器的IP地址)

6 根域回复,我这里没有记录,你去问一下 .com. 的DNS,它的IP是x.x.x.1

7 本地DNS向x.x.x.1查询

8 x.x.x.1 回复,我这里没有记录,你去 .baidu.com.的DNS 查询,它的IP是x.x.x.2

9 本地DNS 向x.x.x.2查询

10 x.x.x.2回复,我这里没有记录,你去www.baidu.com.的DNS查询,它的IP是x.x.x.3

11 x.x.x.3回复,www.baidu.com.的IP是119.75.217.109

12 本地DNS回复给客户端,www.baidu.com.的IP 是119.75.217.109

13 计算机将www.baidu.com. 的IP地址存储到计算机的缓存中,以便下次调用

14浏览器请求显示页面

14 网站服务器回复页面内容

这里,我们需要注意,当客户要查询的记录不在自己的资源记录中,则由根开始,一层一层向下查询,这个查询过程中客户端是一直等待本地DNS返回结果的,本地DNS一层一层查询,查询到以后,返回给客户端,域名所应的IP地址,如果没有查询到记录,则会告诉客户端,没有对应的记录,这个过程,叫做递归查询,而从本在DNS服务器开始,由根,一层一层向下查询的时候,叫做迭代查询

再来总结一下:

递归查询,即 客户端向服务器请求解析服务器告诉客户端对应的IP地址或者告诉客户端无此记录,简单的说,就是直接告诉我有记录,还是没有记录。这个叫做递归查询

迭代查询:本地服务器查询自己没有该域名区域资源记录的时候,则由根开始查询顶级域的DNS,再从顶级域的DNS查到二级域,二级域再查到三级域,三级再到四级…………简单的说,就是本地DNS问A,A说你去问B,去问B了,B说我去问C,问了C,C说你去问D。这个过程,叫做迭代查询

由于博主的文化不高,写的若有不明白之处,或者错误之处,还请凉解,纠错可以留言,或者邮件联系,见面右上角有联系方式。。

Linux 下快速搭建DNS https://ifmx.cc/linux/142.html

猜您喜欢