DNS 系列(二):DNS 记录及工作方式,你了解吗?

3A网络
• 阅读 596

在上一篇《DNS 系列(一):为什么更新了 DNS 记录不生效?》中,我们主要讲解了 DNS 和 DNS 传播,知道了网络通信主要通过 IP 地址来进行,而域名系统(DNS)则是保证用户在浏览器中输入域名之后,可以访问到对应的网站服务器。那这个过程到底是如何进行的呢?

DNS 记录

DNS 记录是位于权威 DNS 服务器中的指令,提供域和主机名相关的详细信息,包括哪些 IP 地址与该域关联,以及如何处理对该域的请求。

当我们在浏览器中输入网站地址时,浏览器首先要会在计算机内部缓存中查找属于该域名的 IP 地址,如果没有再到网络提供商的数据库或其他 DNS 服务器中查找。

DNS 记录由一系列 DNS 语法编写的文本文件组成。每个 DNS 记录都有一个单独的行。记录通常遵循以下格式:

<name> <ttl> <class> <type> <rdlength> <radata>
  • :指域,即用户在浏览器中输入的名称
  • :TTL 代表 “生存时间”,表示记录可以临时存储在缓存中的时间(以秒为单位)
  • :理论上,DNS 记录有不同的类别。然而实际中,记录常是 Internet(即 IN),
  • :不同的记录类型
  • :指定后续数据字段的大小(可选值)
  • :解析出的域名信息(例如 IP 地址)

我们可以使用 Dig 命令查询 DNS 记录信息,例如:www.example.com

www.example.com.  69288  IN  A  93.184.216.34

这代表着该条记录可以在缓存中存储 69288 秒,它涉及 Internet 上的 DNS 记录(IN),并指向了 A 类记录,同时域名被解析为 IP 地址(93.184.216.34)。

DNS 记录类型

上面我们提到了 DNS 记录有不同的类型,这其实是指记录中的信息类型,比较常见的有以下几种:

A 记录

Internet 上大部分 DNS 解析都是通过 A 类记录进行的,并指向一个 IPv4 地址。通过这个记录,用户在浏览器中输入域名后,客户端向相应的 IP 地址发送 HTTP 请求。由于 IPv4 地址的大小始终为 4 个字节,因此 rdlength 的值始终为 4。

AAAA 记录

AAAA 记录,也称为 “quad A”,功能与 A 记录相同。但是,它指向的是 IPv6 地址。因为 IPv6 的长度为 128 位(16 字节),所以这里也预定义了 rdlength 为 16。

SOA 记录

SOA 记录包含区域文件或 DNS 服务器的区域信息。 因为 DNS 区域传输是将 DNS 记录数据从一个主名称服务器发送到一个辅名称服务器的过程,而 SOA 记录会首先被传输,所以每个 DNS 区域都需要一个 SOA 记录。

CNAME 记录

CNAME 记录(规范名称记录)是将记录值指向一个别名域,而不是 IP 地址。对于这种类型,rdata 字段会填充一个域名,该域名可以继续指向下一个域名或 IP 地址。

MX 记录

MX 记录是指邮件交换或 SMTP 电子邮件服务器,MX 记录可以存在多个,通过指定优先级来确定使用顺序。

PTR 记录

PTR 记录(指针)是允许反向查找的 DNS 记录。与 “A” 记录恰好相反,它可以通过 IP 地址来查找对应的域名。

NS 记录

NS (域名服务器)记录会明确特定区域的管辖权。一个域通常会有多个 NS 记录,这些记录可指示该域的主要和辅助域名服务器。正确配置的 NS 记录能告诉互联网可从哪里找到域的 IP 地址,从而完成加载网站或应用程序。

TXT 记录

TXT 记录包含了供用户或机器可读信息的文本。一个域可以有许多 TXT 记录。

SRV 记录

通过 SRV 记录,服务器可以为一些特定的服务提供主机和端口信息,例如即时通讯等。一些互联网协议需要使用 SRV 记录才能运作。

除了这些常见的 DNS 记录,还有很多不常用的记录类型,例如:APL、CAA、DNAME 等等。了解了 DNS 记录,下一步就来详细看看 DNS 是如何请求到这些记录的。

DNS 请求

每当我们在浏览器的搜索栏中输入网址时,都会先向本地名称服务器(Local DNS)发出请求。Local DNS 是一个检查记录是否在本地缓存中的组件,它的查询是递归 / 迭代查询。

客户端和 Local DNS 是递归查询,这是最常见的一种查询方式。具体来说就是如果 Local DNS 不能响应请求,它会代替客户端向其他根域名服务器继续发出查询请求,即替客户端继续查询,而不是让客户端自己进行下一步查询。

而 Local DNS 和其他名称服务器之间是迭代查询。具体表现为如果 Local DNS 请求的 DNS 服务器无法回答查询,那么它会返回下一个 DNS 服务器的地址作为应答。然后 Local DNS 再向下一个 DNS 服务器发送一个新请求,继续查找直至查到记录。

所以 Local DNS 的查询总体过程是首先将之前获取过的 IP 地址记录到缓存中,并根据请求将结果传递给客户端。如果所需的记录不在 Local DNS 缓存中,则请求将转发到对应网络服务商的 DNS 服务器。如果当前 DNS 服务器无法应答本次查询,它会将请求转发到不同的 DNS 服务器。

DNS 系列(二):DNS 记录及工作方式,你了解吗?

需要注意的是递归查询通常会比迭代查询更快。因为递归 DNS 服务器会缓存它执行的每个查询结果,并将结果保存一个 TTL 时间。当递归解析器接收到其缓存中已有的 IP 地址查询时,它可以快速将结果提供给客户端,而无需与其他 DNS 服务器进行通信。但是,在开放的 DNS 服务器上允许递归查询会产生安全漏洞,这种配置容易遭到 DNS 放大攻击和 DNS 缓存中毒。

了解了 DNS 的记录,下次大家再遇到网站无法访问的错误信息时,就可以优先排查是不是 DNS 出现了问题。如果你是网站管理者,可以查看 DNS 记录是否配置错误,或者 DNS 服务器是否无法响应。如果你是网站访问者,可以尝试切换网络或者更换本地 DNS 来解决。服务器的话博主一般都使用的是3A云服务器,延迟慢。

点赞
收藏
评论区
推荐文章
3A网络 3A网络
1年前
DNS 系列(三):如何免受 DNS 欺骗的侵害
互联网上每一台设备都会有一个IP地址,我们在访问网站或发送信息时,其实都是通过IP地址达成准确请求的。但是这个IP地址由很长一串数字组成,记忆起来相当困难,所以我们创造了更实用的域名来代替IP地址。而如何将域名和IP地址联系起来,就是域名系统(DNS)发挥作用的地方。它由各种名称服务器(即DNS服务器)组成,负责域名解析,帮助客户端建
liuzhen007 liuzhen007
3年前
nslookup命令使用技巧【珍藏版】
目录前言正文一、缺省查询二、指定DNS查询三、查询命名服务器四、反向解析域名五、查询邮件服务器信息前言nslookup是一个DNS查询工具,可以指定查询的类型,可以查到DNS记录的生存时间,还可以指定使用那个DNS服务器进行解释。正文一、缺省查询不指定dnsserver,使用系统默认的dns服务器。 命令:nslookup域名实例:
鱼蛮子9527 鱼蛮子9527
1年前
DNS
DNS(DomainNameSystem),主要作用是将域名转成IP,本文主要讲解了DNS的一些基础知识,以及DNS转换域名的过程。DNS是什么绝大多数网络通信都是基于TCP/IP协议,而TCP/IP协议的基础是IP,所以网络中的计算机进行通信都是基于IP而不是我们在浏览器中输入的域名。DNS全程是DomainName
高防加速CDN 高防加速CDN
1年前
怎样预防和处理DNS劫持?
DNS中文叫域名解析,在计算机中占据非常重要的作用,但是DNS也会被攻击,比如我们经常遇见的域名被劫持,其实也就是DNS被劫持,这里许多人一定会很好奇,DNS被劫持这是怎么回事呢?DNS被劫持后会出现怎么样的后果呢?DNS被劫持后还能拯救吗?对于这些DNS
Stella981 Stella981
2年前
Linux查看DNS服务器及设置DNS服务器
DNS(DomainNameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。一台主机的dns服务器的好坏会直接影响我们上网的速度以及网站的访问,今天我们一起来看一下如何为Linux系统配置好用的公共DNS.1\.查看服务器的DNS方法一,查看
Wesley13 Wesley13
2年前
Ubuntu Linux 学习篇 配置DNS服务器
BIND9DNS(DomainNameServer,域名服务器)是进行域名(domainname)和与之相对应的IP地址(IPaddress)转换的服务器。DNS中保存了一张域名(domainname)和与之相对应的IP地址(IPaddress)的表,以解析消息的域名。域名是Internet上某一台计算机或计算机组的名称,用于在数据传输
Stella981 Stella981
2年前
Linux下DNS简单部署(主从域名服务器)
一、DNS简介DNS(DomainNameSystem),域名系统,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。DNS服务器的作用就是
Wesley13 Wesley13
2年前
DNS解析过程
DNS解析过程是重点也是难点,下面我按自己的理解一步步来解释,可能有错误之处,欢迎指正。以下步骤中,将DNS缓存中存在域名对应IP则DNS解析成功,用户计算机将直接访问服务器,若DNS服务器缓存中不存在域名对应IP,则自动进入下一步。1.浏览器缓存 当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址
3A网络 3A网络
1年前
DNS 系列(一):为什么更新了 DNS 记录不生效?
我们在上网时如果想要访问到另一台机器上的内容,通常只需要直接输入一串地址,就能够准确访问到自己想要访问的网站。但是实际上这只是方便我们记忆的字符形式网络标识,真正让我们的机器和另一台机器进行沟通的是IP地址。只不过IP地址无论是输入还是记忆都非常麻烦,因此才诞生了域名系统。那么域名是怎么连接到那个服务器的IP呢?这就和我们今天要说的域名系统DN
各开发语言DNS缓存配置建议
本文主要围绕不同业务和开发语言背景下,客户端本地如何实现DNS解析记录缓存进行探讨,同时基于笔者所在团队对DNS本身及公司网络环境的掌握,给出一些其他措施,最终致力于客户端一侧的DNS解析请求规范化。