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

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

DNS

为什么我们需要 DNS?

DNS服务器:简单来说就是将名称转换为IP的软件。

IP:IP就是IP,无需解释。

假设有一台设备(作为DNS客户端)需要解析域名abcd,那么它可以向DNS服务器发起请求,然后DNS服务器将解析后的IP结果wxyz返回给客户端。

img

1.什么是DNS?

DNS是Name的缩写,即域名解析系统,它的作用很简单,就是根据域名找到对应的IP地址。

你可以把它想象成一本巨型电话簿,比如你想访问一个域名,首先需要通过DNS找到它的IP地址,也就是112.48.162.8。

2. 域名层级

由于后面会讲到DNS解析过程,所以需要大家对域名层次有一定的了解。

域名格式

一个域名可以划分为多个子域名,子域名又可以进一步划分为子域名的子域名,从而形成顶级域名、二级域名、三级域名等。

顶级域名分为:国家顶级域名、通用顶级域名、反向域名。

通用顶级域名,edu教育机构,int国际组织,net网络,org非营利组织...

反向域名

arpa,用于PTR查询(IP地址转换为域名

分类

根 DNS 服务器

最高级别的域名服务器,当域名无法解析时会向本地域名服务器寻求帮助

顶级域名服务器

负责管理顶级域名服务器下注册的二级域名

权威域名服务器

负责某区的域名解析

本地域名服务器

当主机发送DNS查询请求时,该查询请求首先被发送到本地域名服务器。

注:域名服务器的范围,或者说管理权限的范围,称为区域(Zone)。

关于分层,需要注意的是:

域名每一层都有自己的域名服务器,最上层是根域名服务器

每一级域名服务器都知道下级域名服务器的IP地址

为了保证灾难恢复,每级至少设置两个或两个以上的域名服务器

关于域名层次结构的要点如下:

(1)“ ”的最完整形式应为“ ”。

也就是每个域名后面都会有一个“.”,“.”代表根。我们把这个域名称为绝对域名“Fully Name”(FQDN),相当于Linux系统中的绝对文件路径。你可以在电脑中输入“ ”或者“ ”来确认是否可以打开网站。

不需要输入并不代表它不存在。

“.”用来表示词根,通常我们不需要输入这个词根,因为电脑和浏览器已经默认帮我们输入了这个“.”词根。

(2)域名系统用一棵逆树来表示,树中的每个分支称为一个域,一个域名可以属于多个域,例如一个域名既属于 域的一部分,又属于 com 域的一部分。

(3)“ .”为树形结构中的顶级域名,统称为“根”。即每个域名都是从根开始索引的,所有域名都属于根。

(4)域名体系是按照倒序来描述一个域名的,比如先写最下方的www,再写中间的baidu,再写最上方的com,最后写“。”,只有词根可以省略。

(5)顶级域名下面分支为二级域名,也就是我们通常通过阿里云、腾讯云购买的域名,比如、、等等。

(6)二级域名以下的分支为三级域名,有时也叫服务器名,如baidu下的www代表百度的网站服务名,music代表百度音乐网站的服务器名。

(7)从根分支出来的域名称为顶级域名(一般简称TLD),一般分为国家级顶级域名和通用顶级域名。

国家顶级域名有cn、jp等。

通用顶级域名有com、org、net、edu等,其中.com代表工商企业,.net代表网络提供商,.org代表非营利组织,.edu代表教育。

通常我们只能注册一个二级域名,如果需要注册一个顶级域名,比如.com这样的域名,就需要联系国内的CNNIC,让他们代为注册,费用一般比较高。大多数情况下,二级域名已经完全可以满足现在的业务需求了。

当然,三级域名还可以向四级域名延伸。DNS 类似于 Unix 文件系统的结构,用倒置的树表示,根节点在最顶端。最多有 127 个分支,每层最多由 63 个字符组成,每层之间用“.”分隔,类似于 Unix 文件中用于分隔各个目录的“/”。域名总长度不能超过 255 个字符。只能使用字符、数字和连字符,不区分大小写。

3.DNS解析过程

我们以访问该域名为例,看看访问时会发生什么情况:

首先搜索本地DNS缓存(在自己的电脑上),如果找到则返回,如果没有则继续下一步。查看本地hosts文件中是否有对应的映射记录,如果找到则返回,如果没有则继续下一步。向本地DNS服务器(一般是你的网络接入服务器提供商提供的,比如电信,移动)发送请求进行查询。本地DNS服务器收到请求后会先查看自己的缓存记录,如果找到则直接返回,如果没有找到则本地DNS服务器会向DNS的根域名服务器发起查询请求:请问的IP地址是多少?根域名服务器收到请求后看到这是一个.com域名,就回复:这个域名是.com哥在管理的,你可以问问他。这是.com哥的联系方式(ip1)。本地DNS服务器收到回复之后,立刻根据大佬给出的联系方式(ip1)向.com的顶级域名服务器发起请求:请问.com大佬,的IP地址是多少? .com顶级域名服务器收到请求之后,看到这是的域名,便回复道:这个域名是 .com 大佬管理的,你问他就可以了,这是他的联系方式(ip2) 本地DNS服务器收到回复之后,按照前辈(ip2)的指引,再次向 .com 的权威域名服务器发起请求:请问 .com 的IP地址是多少? 权威域名服务器收到请求之后,确认是自己管理的域名,立刻查了一下自己的记事本,把 .com 的IP地址告诉了本地DNS服务器。 本地DNS服务器收到回复之后,非常开心,终于得到了 .com 的IP地址,它立刻告诉了请求查询的客户端是谁(也就是你的电脑)。由于这个过程比较长,为了节省时间,尽量不打扰大佬们,本地DNS服务器偷偷把查询结果记录在自己的笔记本里,以便下次有人来查询时能快速响应。总结起来就是三句话:从“根域名服务器”找到“顶级域名服务器”的NS记录和A记录(IP地址)从“顶级域名服务器”找到“次级域名服务器”的NS记录和A记录(IP地址)从“次级域名服务器”找到“主机名”的IP地址4.DNS缓存时间

在上面的步骤中,可以看到有两个地方会缓存DNS查询记录,有了缓存之后,查询效率会有一定的提升,但是同时也会有准确率的损失。

因此我们在配置DNS解析的时候,会有一个TTL参数(Time To Live),也就是缓存可以存活多久,超过这个时间本地DNS就会删除该记录,删除缓存之后如果再次访问,就要重新经过上面的流程才能获取到最新的地址。

常见的DNS记录类型如下

类型 内容

将DNS域名映射到IPv4地址,基本作用是指示某个域名对应哪个IPv4地址。

NS 权威名称服务器记录,用于指示哪些 DNS 服务器负责解析此区域

CNAME 别名记录,主机别名对应的规范名称

SOA 6 授权记录开始。NS 记录表示有多个服务器执行解析,但 NS 记录不表示哪个是主服务器。SOA 记录表示在众多 NS 记录中哪个是主服务器。

PTR IP地址反向解析是A记录的反向记录,用于将IP地址解析为域名

MX 邮件交换记录指定负责接收和发送电子邮件的主机

TXT文本资源记录,用于设置主机名或域名的描述

AAAA将DNS域名映射到IPv6地址,其基本作用是指示某个域名对应哪个IPv6地址。

域名解析中,A记录、CNAME记录、MX记录、NS记录有什么区别和联系?

连接:

所有区域数据库文件均由资源记录组成。

A记录:又称IP指向

用户可以在这里设立一个子域名,并将其指向自己的目标主机地址,从而通过域名找到服务器。

注意:目标主机地址类型只能使用IP地址;

补充说明:

通配符域名解析会将域名下所有未指定的子域名都指向一个空格,填写“主机名”,“类型”为A,在“IP地址/主机名”中填写Web服务器的IP地址,点击“添加”按钮即可。*

负载均衡的实现:负载均衡(SLB)是指在一系列资源之间动态分配网络负载。负载均衡可以减少网络拥塞,提高整体网络性能,提高自愈能力,并确保关键企业应用程序的可用性。

当同一个子域名有多个目标地址时,就意味着循环调度,可以达到负载均衡的目的,但是需要虚拟主机服务商的支持。

CNAME:通常称为别名指向。

您可以为主机设置别名。

例如,如果你将其设置为指向某个主机,则可以稍后使用它来访问该主机。

阐明:·

CNAME的目标主机地址只能使用主机名,不能使用IP地址;

主机名不能有其他前缀,如:等都是不允许的;

A记录优先于CNAME记录,即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不会生效。

MX记录:邮件交换记录。

用于将以域名结尾的邮件导向相应的邮件服务器进行处理,例如用户使用的邮件是以域名结尾的,则需要在管理界面添加该域名的MX记录,才能处理所有以@结尾的邮件。

阐明:

MX记录可以使用主机名或IP地址;

MX记录可以通过设置优先级来设置为主服务器和辅服务器,“优先级”中的数字越小,级别越高。

也可以使用相同优先级来实现负载均衡;

如果您在“主机名”中输入了子域名,则该MX记录只对该子域名有效。

6.DNS消息结构

img

总体分为三步:第一步:缓存搜索IP

步骤1:检查域名对应的IP地址是否缓存在浏览器缓存中

用户通过浏览器浏览某个网站后,浏览器会自动缓存该网站域名对应的IP地址,当用户再次访问时,浏览器会从缓存中查找该域名对应的IP地址。

但是浏览器的本地缓存不仅有大小限制,还有时间限制(域名被缓存的时间由TTL属性设置),所以存在找不到域名对应IP的情况。

当浏览器从缓存中找到该网站域名对应的IP地址时,就会进行下一步操作。

关于IP缓存时间问题,不建议设置过长的缓存时间,时间过长如果域名对应的IP发生变化,会导致用户一段时间内无法正常访问网站,时间过短又会造成域名频繁解析。

第二步:在本机的hosts文件中找到IP

第二步:如果在浏览器缓存中没有找到该IP,则查找本机hosts文件中是否存在该IP配置。

如果第一步没有完成域名解析过程,浏览器就会去系统hosts文件中查找系统是否配置了这个域名对应的IP地址。这就意味着系统也具备了配置域名的基本能力。

在系统中,hosts文件位于C:\\\\etc\hosts。

在 Linux 或 Mac 系统上,hosts 文件位于 /etc/hosts 文件中。

对于开发者来说,通过将域名和IP地址与主机绑定,可以轻松切换环境,从测试环境切换到开发环境,让开发测试更加便捷。

步骤3:DNS服务器查找IP

步骤3:向本地域名解析服务系统发起域名解析请求

如果本地无法完成域名解析,系统只能请求域名解析服务系统进行解析。本地域名系统LDNS一般是本地的域名服务器。本地dns(local name)是客户端网络设置的一部分,可以手动配置,也可以从DHCP中获取。一般来说,本地dns在网络上距离客户端较近。

比如你连接的是校园网,那么域名解析系统就在你的校园机房;

如果你连接的是中国电信、中国移动或者中国联通的网络,那么本地域名解析服务器就在当地,由各自的运营商提供服务。

对于本地DNS服务器地址,可以使用命令查看,在Linux、Mac系统下,直接使用cat /etc/.conf命令查看LDNS服务地址。

LDNS一般会缓存大部分域名解析结果,当然缓存时间也是受域名过期时间控制的,大部分解析工作到这里就差不多完成了,LDNS负责了大部分的解析工作。

DNS解析整体流程

img

整体的DNS流程可以用三句话来概括: 从“根域名服务器”中查找“主域名服务器”的NS记录和A记录(IP地址) 从“主域名服务器”中查找“辅助域名服务器”的NS记录和A记录(IP地址) 从“辅助域名服务器”中查找“主机名”的IP地址 DNS查询类型

从客户端来看,完整的 DNS 查找过程中会发生三种类型的查询。

通过组合这些查询,优化的DNS解析过程减少了传输距离。

递归查询

本机向本地域名服务器发送查询请求并等待最终结果,若本地域名服务器无法解析,则以DNS客户端的身份向其他域名服务器进行查询,直到得到最终的IP地址并告知本机。

img

迭代查询

本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步去哪里查询,然后它再去查询。每次它都以客户端的身份向每个服务器进行查询。

img

迭代查询通常发生在DNS服务器之间,当发出域名解析请求时,DNS需要给出最佳答案,这个最佳答案可能是“最近的”顶级域名服务器,也可能是权威域名服务器,无论如何都需要对返回的结果再次进行请求,直到得到最终结果。

非递归查询

可以理解为缓存查找,或者一次性查找。

非递归查询发生在DNS服务器之间,也就是说请求查询的DNS服务器已经知道答案,直接返回。这里可能有两种情况,一种是DNS服务器已经缓存了对应的IP地址,或者已经缓存了对应域名的权威服务器,第二种情况只需要再次发送请求就可以得到结果。

此查询通常在 DNS 解析器客户端向 DNS 服务器查询其有权访问的记录时进行,这是因为它对该记录具有权威性,或者因为该记录存在于其缓存中。

DNS服务器通常会缓存DNS记录,当查询进来时,可以直接返回缓存的结果,以防止更多的带宽消耗和上游服务器的负载。

从递归和迭代查询我们可以看到:

客户端本地 DNS 服务器:

这部分属于递归查询,递归查询时返回的结果只有两种:查询成功或者查询失败。

本地DNS服务器-外部网络:

这部分属于迭代查询,迭代查询又称为重定向,返回最佳的查询点或主机地址。

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

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

项目经理在线

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

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

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线