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

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

DNS原理及其解析过程

为什么需要DNS将域名解析为IP地址?

大多数网络通讯都是基于 TCP/IP,而 TCP/IP 又是基于 IP 地址的。因此,计算机在互联网上通讯时,只能识别“202.96.134.133”这样的 IP 地址,无法识别域名。我们无法记住超过 10 个 IP 地址的网站,因此我们访问网站时,一般都是在浏览器地址栏中输入域名,才能看到需要的页面。这是因为一台叫做“DNS 服务器”的计算机会自动将我们的域名“翻译”成对应的 IP 地址,然后调出 IP 地址对应的网页。

DNS 到底是什么?

DNS( Name)是“域名系统”的缩写,是一种按域层次组织起来的计算机和网络服务的命名系统,用于 TCP/IP 网络。它提供的服务是将主机名和域名转换为 IP 地址。DNS 就是这样一个“翻译器”。它的基本工作原理可以用下图来表示。

DNS 的流程是怎样的?

关于DNS获取过程:

DNS 是一个应用层协议,其实它还适用于其他应用层协议,包括但不限于 HTTP、SMTP、FTP,用于将用户提供的主机名解析为 IP 地址。

具体过程如下:

① DNS客户端是运行在用户主机上的,也就是我们的PC或者手机客户端都运行着DNS客户端。

②浏览器从收到的URL中提取域名字段,也就是正在访问的主机名,如

http://www.baidu.com/

并将此主机名传递给 DNS 应用程序的客户端

③DNS客户端向DNS服务器发送查询报文,该报文中包含需要访问的主机名字段(包括一系列的缓存查询和分布式DNS集群工作)

④DNS客户端最终会收到一个回复​​报文,该报文中包含了主机名对应的IP地址

⑤浏览器从DNS接收到IP地址后,可以向位于该IP地址的HTTP服务器发起TCP连接

DNS服务的架构是怎样的?

DNS域名的主要作用是将主机域名转换成IP地址

假设在用户主机上运行的某些应用程序(例如网页浏览器或者邮件阅读器)需要将主机名转换为IP地址。这些应用程序会调用DNS的客户端并指定需要转换的主机名。(在许多基于UNIX的机器上,应用程序需要调用函数()来进行这种转换)。用户主机的DNS客户端收到后,向网络发送DNS查询消息。所有的DNS请求和应答消息都使用通过端口53发送的UDP数据报(至于为什么使用UDP,请参考域名根服务器为什么只能有13个?——郭武新的回答)在几毫秒到几秒的延迟后,用户主机上的DNS客户端会收到提供所需映射的DNS应答消息。然后将此查询结果传递给调用DNS的应用程序。因此,从调用用户主机的应用程序的角度来看,DNS是一个提供简单直接的转换服务的黑盒。但实际上,实现这种服务的黑盒是非常复杂的。它由分布在世界各地的大量DNS服务器和定义DNS服务器如何与查询主机进行通信的应用层协议组成。

DNS为什么不采用单点集中式设计,而是采用分布式集群工作方式呢?

一种简单的DNS设计模式是在互联网上只使用一台DNS服务器,该服务器包含所有的映射关系。在这种集中式设计下,客户端将所有查询请求直接发送给单个DNS服务器,DNS服务器直接响应所有查询客户端。虽然这种设计很诱人,但它并不适合当前的互联网,因为当前的互联网拥有庞大且不断增长的主机数量。这种集中式设计会有单点故障(如果一台主机死了,全世界都会着急)、通信容量(数亿台主机发送的DNS查询消息请求,包括但不限于所有的HTTP请求、电子邮件消息服务器、TCP长连接服务)、长距离时延(例如从澳大利亚到纽约)、高维护成本(因为必须在一个服务站点更新所有主机名-IP映射)等问题。

DNS服务器一般有三种类型:根DNS服务器、顶级DNS服务器、权威DNS服务器。

采用分布式层次化数据库模式及缓存方式解决单点集中化问题。

DNS 域名

域名系统是一个分层的分布式数据库,其中包含各种类型的数据,包括主机名和域名。DNS 数据库中的名称形成一个分层树结构,称为域名空间。域名包含单个标签分隔符,例如:

im.qq.com

完全限定域名 (FQDN) 唯一地标识了主机在 DNS 层次树中的位置,并由从路径中的根引用的以点分隔的主机名列表指定。下图显示了一个称为 im 的主机

qq.com

DNS 树的示例。主机的 FQDN 是

 im.qq.com

DNS 域名的层次结构

DNS 域名空间的组织方式

下表按功能介绍了用于描述命名空间中的 DNS 域名的五种类别,以及每种名称类型的示例。

例如:

www.uestc.edu.cn

DNS 和域

互联网域名系统由名称注册机构管理,这些注册机构维护由组织和国家/地区分配的顶级域名。这些域名符合国际标准 3166。下表显示了许多现有缩写中的一部分,这些缩写保留供组织使用,以及两个字母和三个字母的国家/地区缩写。下面显示了一些常见的 DNS 域名:

域名解析服务器的dns_dns域名解析服务_域名解析服务器地址

资源记录

DNS 数据库中包含的资源记录(RR)。每个 RR 标识数据库中的特定资源。在构建 DNS 服务器时,我们经常使用 SOA、NS 和 A 等记录。在维护 DNS 服务器时,我们使用 MX 和 CNAME 记录。

常见的RR如下图所示:

域名解析服务器地址_dns域名解析服务_域名解析服务器的dns

DNS服务工作流程

当 DNS 客户端需要查询程序中使用的名称时,它会查询本地 DNS 服务器来解析该名称。客户端发送的每个查询消息都包含三部分信息,以指定服务器应回答的问题。

● 指定的DNS 域名,以完全限定域名(FQDN) 表示。

● 指定查询类型,可以按类型指定资源记录,也可以作为专门类型的查询操作。

● DNS 域名的指定类别。

对于 DNS 服务器,应始终将其指定为类。例如,指定的名称可以是计算机的完全限定域名,例如

im.qq.com

,并使用指定的查询类型来搜索符合该名称的地址资源记录。

DNS 查询以多种不同的方式解析。客户端有时还可以使用先前查询的缓存信息在本地回答查询。DNS 服务器可以使用其自己的资源记录信息缓存来回答查询,也可以代表请求客户端查询或联系其他 DNS 服务器以完全解析名称,然后将答案返回给客户端。此过程称为递归。

此外,客户端还可以尝试联系其他 DNS 服务器来解析名称。如果客户端这样做,它将根据服务器的答案使用独立的和附加的查询。这个过程称为迭代,也就是说,DNS 服务器之间的交互式查询是一种迭代查询。

DNS查询过程如下图所示。

1、在浏览器中输入www..com域名,操作系统会先检查自己本地的hosts文件是否有这个URL映射关系,如果有的话,就会先调用IP地址映射,完成域名解析。

2、如果hosts中没有该域名的映射,则查找本地DNS解析器缓存,查看是否有该URL的映射关系,如果有,则直接返回,完成域名解析。

3、如果hosts和本地DNS解析器缓存中没有对应的URL映射关系,则第一步就是查找TCP/IP参数中设置的首选DNS服务器,这里我们称之为本地DNS服务器,当该服务器接收到查询时,如果要查询的域名包含在本地配置区域资源中,则将解析结果返回给客户端,完成域名解析,此解析具有权威性。

4、如果要查询的域名没有被本地DNS服务器区域解析,但是服务器缓存了这个URL映射关系,那么就会调用这个IP地址映射来完成域名解析,这个解析不具有权威性。

5、如果本地DNS服务器的本地区域文件和缓存解析均无效,则按照本地DNS服务器的设置(是否设置转发器)进行查询。如果不使用转发模式,本地DNS会将请求发送给13台根DNS服务器。根DNS服务器收到请求后,会判断谁有权限管理这个域名(.com),并返回一个负责这个域名的顶级域名服务器的IP地址。本地DNS服务器收到这个IP信息后,会联系负责.com域名的服务器。收到请求后,如果负责.com域名的服务器无法解析,就会去寻找一个管理.com域名的下一级DNS服务器地址()交给本地DNS服务器。本地DNS服务器收到这个地址后,就会找到这个域名服务器,重复上面的动作进行查询,直到找到www..com主机为止。

6. 如果使用转发模式,则本台DNS服务器会将请求转发给上级DNS服务器,由上级DNS服务器进行解析。如果上级服务器无法解析,则继续查找根DNS或将请求转发给上级服务器,以此类推。无论本地DNS服务器使用转发还是根提示,最终都会将结果返回给本地DNS服务器,本地DNS服务器再将结果返回给客户端。

客户端向本地DNS服务器的查询属于递归查询,而DNS服务器之间的交互查询属于迭代查询。

附录:

本地DNS转发配置与非配置转发数据包分析

新建一个DNS,这里就不描述如何搭建了,请参考我之前的博文《【部署智能DNS】中安装bind》

1. DNS服务器没有转发

在192.168.145.228服务器上安装该软件,打开,将数据包设置为UDP过滤,在192.168.145.12客户端上使用命令查询,立刻可以看到本地DNS服务器直接查全球13个根域中的某几个,然后一步一步解析,通过迭代的方式,直到找到对应的IP为220.181.118.87。

本地DNS服务器获取到搜狐的IP之后,就把这个IP返回给192.168.145.12客户端,完成解析。

2. DNS 服务器设置转发

由于搜狐域名在第一步验证的时候已经使用过,并且有缓存,为了不受前面实验的干扰,我们在客户端上对192.168.145.12进行百度搜索,就知道了。从图中可以看出,本地DNS将请求转发到192.168.133.10服务器,133.10服务器将获取到的IP返回给本地DNS,然后本地DNS将IP告诉DNS客户端,完成解析。

解析顺序

1)浏览器缓存

当用户通过浏览器访问某个域名时,浏览器首先在其缓存中查找该域名对应的IP地址(如果该域名以前被访问过,并且没有清除过缓存,那么就会存在);

2)系统缓存

当浏览器缓存中没有该域名对应的IP时,会自动检查用户计算机系统的Hosts文件的DNS缓存中是否有该域名对应的IP;

3)路由器缓存

如果浏览器和系统缓存中都没有该IP对应的域名,就进入路由器缓存中查看,以上三步都是客户端的DNS缓存;

4)ISP(互联网服务提供商)DNS缓存

当在用户客户端上找不到该域名对应的IP地址时,就会进入ISP的DNS缓存中进行查询。比如你使用的是电信网络,就会进入电信DNS缓存服务器进行查找;

5)根域名服务器

如果以上没有完成,就进入根服务器进行查询。全球只有13台根域名服务器,1台主根域名服务器,其余12台为辅助根域名服务器。根域名收到请求后会检查区域文件记录,如果没有记录,就会告诉本地DNS服务器其管辖范围内的顶级域名(如.com)的IP;

6)顶级域名服务器

顶级域名服务器收到请求后,检查区域文件记录,如果没有记录,则告诉本地DNS服务器其管辖范围内的主域名服务器的IP地址;

7)主域名服务器

主域名服务器收到请求后,查询自己的缓存,如果没有找到该记录,则查找下一级域名服务器,并重复该过程,直到找到正确的记录。

8)将结果保存到缓存

本地域名服务器将返回的结果保存到缓存中,以备下次使用,并将结果反馈给客户端,客户端通过这个IP地址与Web服务器建立链接。

部分内容参考自以下博客

http://369369.blog.51cto.com/
http://369369.blog.51cto.com/319630/812889

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

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

项目经理在线

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

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

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线