dns系统设计教程 (dns基础知识总结)

DNS它是互联网的核心服务。作为一个可以将网址和IP地址相互映射的分布式数据库,它可以让人们更容易访问互联网

这是系统设计基础知识系列第十章DNS。你可以阅读我以前的文章

系统设计基础知识(一) - 网络

系统设计基础知识(二)—数据库

系统设计的基础知识(三)吞吐量和延迟

系统设计基础知识(四)—系统可用性

系统设计基础知识(五)—缓存

系统设计基础知识(六)—缓存区

系统设计基础知识(七)—代理

系统设计基础知识(八)了解IP地址和端口

系统设计基础知识(九)—负载均衡器

网址系统(DNS)是互联网的核心协议之一。了解基本的 DNS 原理有助于我们设计系统。

TCP/IP 基于 IP 地址进行通信,但 IP 地址很难记住。还有另一个标识符——主机名。为计算机配置主机名,并在使用网络通信时使用主机名指导,而不是输入一长串 IP 地址。网络系统通过一个名为hosts的文件实现将主机名转换为IP地址的功能。主机文件是本地文件。优点是搜索响应快。主要用于存储一些本地网络的主机名和IP地址的对应信息。当系统通过主机名访问主机时,会检查本地主机文件,从文件中找到对应的IP地址,然后发送消息。如果在主机文件中找不到相关信息,则主机访问失败。

dns系统架构与解析原理,dns基础知识讲解

DNS原理

网络通信基于 TCP/IP

TCP/IP 基于 IP 地址

计算机只能识别网络上的 IP 地址

我们无法记住超过 7 组 IP 地址的网站,所以当我们访问一个网站时,我们在浏览器地址栏中输入主机名即可访问所需的网页。有一个DNS服务器,可以将任何网址翻译成对应的IP地址,并调用该IP地址对应的网页。

dns系统架构与解析原理,dns基础知识讲解

网址结构

顶级域包括 com、net、gov、mil 或任何标准国家顶级域。新的顶级域 (TLD) 一直在创建。

资源类型 ——页面的类型

  • 典型的网页是超文本传输协议 (HTTP)
  • HTTPS 是安全的 HTTP。
  • 其他资源包括文件传输协议 (FTP)、GOPHER、远程登录协议 (Telnet)、简单邮件传输协议 (SMTP) 等

dns系统架构与解析原理,dns基础知识讲解

机器名称 - 子域

  • 大多数网页以 WWW 开头。这不是一个绝对的规则。如果 DNS 设置正确,则大多数网页都不需要 WWW。

顶级网址 ——一大群相似类型的网址

  • 有些仅限于某些机构,如 gov 或 int。

每个级别的网址 由字母和数字组成。不区分大小写, 长度不能超过63字节 一个完整的网址不能超过255字节。

网址空间

域命名空间结构就像一棵倒置的树。根网址是树的根。根网址的下一层称为顶级网址。是管理范围的划分。最大的域是根域,可以分为顶级域、二级域、三级域、四级域。对应的网址有根网址、顶级网址、二级网址、三级网址等。不同级别的网址以点号分隔,最低级的网址在最远左边,右边是最高级别的域。

dns系统架构与解析原理,dns基础知识讲解

顶级网址可以分为3类。

  1. ccTLD——国家顶级网址采用ISO3166的规定。现在大约有 200 个 ccTLD 正在使用中。

dns系统架构与解析原理,dns基础知识讲解

2. gTLD 国际顶级网址) ——国际组织可以注册 .int

有著名的顶级网址。他们是:

.com 为公司,

.net 代表网络服务机构,

.org 指非营利组织,

.edu 指教育机构(仅限美国),

.gov 表示政府部门(仅限美国),

.mil 表示军事部门(仅限美国)。

随着互联网用户的持续增长,又增加了 七个gTLD。 他们是:

.aero 对于航空运输业,

.biz 对于公司和企业,

.coop 对于合作团体,

.info 在各种情况下使用,

.museum 对于博物馆,

.name 供个人使用,

.pro 对于自由工作者。

3.二级网址

注册在国家自行确定的国家顶级网址下。它们分为 2 类:

  • 分类网址
  • 管理网址

4. 三级网址和四级网址

命名树中任何一个节点的网址都是从这个节点到顶级网址的字符串,用“.”分隔。在域命名空间结构中,其所属域中节点的主机名标识可以相同,但网址必须不同。

网址解析流程

dns系统架构与解析原理,dns基础知识讲解

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

  1. 客户端检测到自己的缓存
  2. 如果不是,请检查主机文件
  3. 如果不是,则客户端发送 DNS 请求以转换 IP 地址或主机名
  4. DNS 服务器接收客户端的请求
  5. 检查 DNS 服务器的缓存,如果找到请求的地址或主机名,将向客户端发送响应消息
  6. 如果没有找到,将在数据库中搜索。如果找到请求的或主机名,将向客户端发送响应消息
  7. 如果没有找到,将向根域DNS服务器发送请求
  8. 根域服务器查找顶级域
  9. 从顶级域中找到二级域
  10. 二级网址找到三级
  11. 直到找到要解析的地址或主机名,才会向 DNS 服务器发送响应消息
  12. DNS 服务器将响应存储在缓存中,然后将解析结果发送给客户端
  13. 客户端从 DNS 服务器接收 IP 地址
  14. 如果未找到客户端,则返回错误消息。

网址解析

它可以分为2种。解析网址时,首先使用静态网址解析。如果静态网址解析不成功,则使用动态网址解析。

  1. 静态网址解析 ——通过静态网址解析表进行,手动建立网址与IP地址的对应表。DNS客户端在查找网址对应的IP地址时,会在静态网址解析表中查找指定的网址,从而获得对应的IP地址,提高解析效力。
  2. 动态网址解析 ——需要专门的网址服务器来运行网址解析服务器程序,提供网址到IP地址的映射关系,负责接收客户端的网址解析请求。

DNS 代理

它首先查找本地网址解析表。如果没有查询到对应的解析表项,则将DNS请求报文转发给DNS服务器,并在收到DNS服务器的响应报文后返回给DNS客户端。这样,当DNS服务器的地址发生变化时,只需要改变DNS代理上的配置,就不需要对局域网中每个DNS客户端的配置进行一一更改,从而简化了网络管理。

dns系统架构与解析原理,dns基础知识讲解

DNS解析器

从应用程序的角度来看,访问网页是通过解析器完成的。在发送 TCP 或 UDP 数据包之前,解析器必须将网址(主机名)转换为 IP 地址。解析器必须至少注册一个网址服务器的 IP 地址。

DNS 服务器

dns系统架构与解析原理,dns基础知识讲解

网址解析是根据DNS层次结构的特点自上而下进行的。但是如果每一个网址解析都是从根DNS服务器开始的,那么根DNS服务器可能承载不了海量的流量。实际上,大多数网址解析都是在本地 DNS 服务器中完成的。

通过适当设置本地DNS服务器,本地DNS服务器负责大部分网址解析请求,提高网址解析效力。

DNS 命名空间的层次结构允许不同的名称服务器管理命名空间的不同部分。网址服务器是管理其所在域的主机和软件。它管理的层称为区域。区域是 DNS 命名空间的子树,可以独立于其他区域进行管理。每层都有一个网址服务器。

根 DNS 服务器在检索数据的功能中起着至关重要的作用。顶级 DNS 服务器的 IP 地址注册在根 DNS 服务器中。如果顶级网址发生变化,您还必须在根 DNS 服务器中进行更改。

同理,二级DNS服务器的IP地址注册在顶级DNS服务器中。

主机名和 DNS 服务器都必须分层设置。如果名称服务器出现故障,则主机名的 DNS 查询将无法正常工作。因此,为了提高可用性,必须设置至少 2 个名称服务器。一旦第一个名称服务器无法提供查询结果,它会自动转到第二个甚至第三个名称服务器。

DNS 服务器类型

  1. 本地 DNS 服务器
  • 本地 DNS 服务器更靠近客户端。当客户端发出查询请求时,它会被发送到本地 DNS 服务器。如果本地文件中有对应的主机名信息,则将其转换为IP地址返回给客户端。
  • 如果不是,它会查询根 DNS 服务器。根 DNS 服务器收到本地 DNS 服务器的请求后,返回相关主机名的 IP 地址。本地 DNS 服务器从根 DNS 服务器接收结果,然后向相关网址服务器发送查询请求。

2. 根名称服务器

  • 用于管理顶级网址。它本身并不解析网址,但它知道相关名称服务器的 IP 地址。全球共有 13 台 IPv4 网址服务器。
  • 数字 13 是网络可靠性和性能之间的折衷。它基于大多数网络使用的 IPv4 约束。
  • 每个根 DNS 服务器代表的不是一台计算机,而是一个由许多计算机组成的服务器集群。
  • 这 13 个 IPv4 根 DNS 服务器可以支持多达 43 亿个 IP 地址。

9 个根 DNS 服务器在美国,2 个在欧洲(英国和瑞典),1 个在亚洲(日本)。

  • 所有名称服务器都必须使用根 DNS 服务器的 IP 地址注册,因为当 DNS 搜索基于 IP 地址时。

3. 权威网址服务器

  • 互联网上的主机注册在网址服务器上,该网址服务器是主机的域权威网址服务器。
  • 主机将有 2 个名称服务器以防止单点故障。
  • 授权网址服务器拥有注册主机网址与IP地址的映射信息。查询注册的主机名时,会返回对应主机的IP地址。如果主机名和IP地址有一些变化,可以在授权的网址服务器中进行处理。无需向其他网址服务器申请或报告。
  • 主网址服务器—— 主网址服务器完成一个或多个区域的网址解析。它在区域中有源数据文件(主机名和 IP 地址信息)。
  • 二级网址服务器 ——辅助主网址服务器提供网址查询服务,可有效降低主机多时主网址服务器的流量压力。当主网址服务器出现故障时,从网址服务器可以在数据有效期内继续为主机提供网址解析服务。
  • 一个主网址服务器可以有多个二级网址服务器,一个二级网址服务器也可以是其他地区的主网址服务器。二级网址服务器包含区域内主机地址数据的授权信息,可以以区域配置文件副本的形式存储。因此,二级网址服务器可以为其覆盖区域提供服务。
  • 二级网址服务器不创建数据文件,它获取区域数据的唯一方式是通过区域传输的方式从一级网址服务器获取最新的区域数据副本。
  • 有两种方法可以获取数据的副本。

1. 二级网址服务器定期主动获取一级网址服务器的副本,或更新副本中的数据2. 一级网址服务器通知二级网址服务器及时更新副本中的数据当区域数据发生变化时。

DNS 传输层协议

dns系统架构与解析原理,dns基础知识讲解

DNS 响应消息中有一个删除标志,用截断响应 (TC)表示。当响应报文采用UDP 封装且报文长度大于512字节时,服务器只返回前512字节,并设置TC标志位,表示该报文已被删除。当客户端收到 TC 设置的响应消息后,会使用 TCP 封装查询请求。DNS服务器返回的响应报文长度大于512字节。

UDP 报文最大长度为 512 字节,最多可包含 13 个根网址服务器。因此,IPv4 网址服务器的数量只能限制在 13 台。每台服务器以 A 到 M 的单个字母命名。

dns系统架构与解析原理,dns基础知识讲解

当辅助 DNS 名称服务器启动时,将从主 DNS 名称服务器执行区域传输。正常运行时,二级网址服务器也会定期查询主网址服务器,了解主网址服务器的数据是否发生变化。如果有变化,将执行区域转移。传输的数据由 TCP 封装。因此,UDP用于客户端和服务器之间的查询和响应。TCP用于主从服务器之间的传输。

DNS查询方式

dns系统架构与解析原理,dns基础知识讲解

  1. 递归查询 ——如果DNS服务器不能直接响应请求,它会继续请求其他DNS服务器,直到查询到解析结果。查询的结果可以是主机名的 IP 地址,也可以是主机名无法解析。无论结果如何,DNS 服务器都会将结果返回给客户端。
  2. 迭代查询 ——如果DNS服务器找不到对应的记录,它会返回一个可能知道结果的网址服务器IP地址给客户端,客户端会继续向其他网址服务器发送查询请求。

客户端查询IP地址时,对本地网址服务器进行递归查询。如果本地文件有对应的数据,则直接返回对应的数据。如果没有,则本地DNS服务器对根DNS服务器进行迭代查询,直到找到具体的网址服务器,并由网址服务器返回相应的数据。客户端和本地 DNS 服务器将接收到的数据存储在缓存中,以优化每次查询的性能。 DNS 正向查询 & DNS 反向查询

转发查询 :客户端知道主机名但不知道 IP 地址

反向查询:客户端知道 IP 地址,但不知道 hsotname

为了实现反向查询/查找,互联网的反向DNS数据库植根于“ in-addr.arpa ”级域。 反向 DNS 解析 (rDNS) 涉及搜索网址注册表和注册商表。为了创建反向命名空间,“ in-addr.arpa ”级域中的子域按照 IP 地址的逆序构建。例如,要对 IP 地址进行反向查找,将查找 8.8.4.4 网址的 PTR 记录 8.8.4.4.in-addr.arpa 并发现指向 dns.google

dns系统架构与解析原理,dns基础知识讲解

DNS的缺点

  1. 使用 DNS 时会有轻微的延迟,即使它可以通过缓存来缓解
  2. DNS服务器的维护非常复杂
  3. DNS服务会受到DDoS攻击,导致用户无法访问网页

因为互联网的扩展,整个网址系统(DNS)变得非常复杂,这导致了DNS系统向多层架构演进。

如果你发现我的任何文章有帮助或有用,麻烦点赞或者转发。 谢谢!