域名系统

可用

DNS 的历史

早在 70 年代,人们就厌倦了记住他们想要访问的服务器的 IP 地址。与此同时,出现了使用更简单、更容易记住的名称而不是数字主机地址的想法。

斯坦福研究所的工作人员提出了一个文本文件HOSTS.TXT,其中包含字符串名称列表及其对应的 ARPANET 计算机数字地址。

地址是手动分配的。要请求主机名和地址或将计算机添加到主文件,用户可以在工作时间通过电话联系斯坦福大学的网络信息中心。

到 20 世纪 80 年代初,维护一个单一的、集中的主机表变得缓慢而繁琐,不断增长的网络需要一个自动命名系统来处理技术和人员问题。

1984 年,加州大学伯克利分校的四名学生编写了分层域名系统的第一个版本。它现在被广泛使用,尤其是在Unix系统上,仍然是互联网上使用最广泛的DNS软件。

DNS简介

域名系统 (DNS)是一种用于存储和检索有关域的信息的分发系统。它最常用于从主机名(计算机或设备)获取 IP 地址、获取邮件路由信息和/或为域中的协议提供主机服务。

该系统以一定层次结构的形式组织,DNS 服务器按照一定的协议进行交互。理解 DNS 的基础是理解名称和区域的层次结构。

负责域区域的每个服务器都可以将域的其他部分的责任转移到另一个服务器,这使得将信息相关性的责任分配给仅负责“他们的”部分域的各种组织的服务器成为可能域名。

DNS 系统包含与区域层次结构相对应的 DNS 服务器层次结构。每个区域都由至少一个托管域信息的权威 DNS 服务器支持。

重要的!名称和 IP 地址不一定一对一地相互关联。一个IP地址可以有多个域名,这样就可以让你在一台电脑上支持多个网站(这叫共享主机)。

它也可以是另一种方式 - 许多 IP 地址可以与一个域名相关联:这允许您创建负载平衡并在 CDN 网络中积极使用

为了增加系统的稳定性,使用了许多包含相同信息的服务器,并且该协议具有保持位于不同服务器上的信息同步的手段。有 13 个根服务器,它们的地址几乎没有变化。

有趣的!DNS 协议使用 TCP 或 UDP 端口 53 来响应查询。传统上,请求和响应作为单个 UDP 数据报发送。当响应数据大小超过 512 字节时使用 TCP。

DNS记录

DNS 服务器为每个域名存储一组参数。这些是关于域名、IP地址以及各种服务信息的记录。

总共有几十个这样的条目,所以我们只考虑其中最受欢迎的条目:

A 地址 IP地址
AAAA级 地址 IPv6 IPv6 格式的地址
别名 规范名称 别名的规范名称
MX 邮件交换器 域的邮件网关地址
NS 名称服务器 负责domain zone的节点地址
面向服务架构 授权开始 信息权威性说明
SRV 服务器选择 为服务指定服务器位置
PTR 指针 地址名称匹配 - A 和 AAAA 的反向匹配
TXT 文本字符串 写入任意二进制数据,最多 255 个字节

这里最有趣的是:

  • A记录允许您指定对应于域的 IP 地址。
  • CNAME允许您为名称设置同义词,例如 www.codegym.cc == codegym.cc。
  • MX记录包含有关邮件服务器的信息:如果信件到达 xxx@codegym.cc 该怎么办。
  • NS - 表示 DNS 服务器的地址,其中包含有关该域的信息。当记录被缓存并存储在非本地节点上时很有用。

IP 地址搜索

让我们看看 DNS 系统是如何工作的。

假设您在浏览器中输入了 api.codegym.cc。浏览器将联系本地 DNS 服务并要求您为其提供 api.codegym.cc 域的 IP 地址。接下来会发生什么……

首先,DNS 服务查看此域是否在您计算机上的本地主机文件中。如果有,它会从中获取 IP 地址。如果不是,它会向它已知的 DNS 服务器发送一个请求:“api.codegym.cc 的 IP 地址是什么?”。

然而,DNS 服务器可能不仅对请求的名称一无所知,甚至对整个 codegym.cc 域也一无所知。在这种情况下,服务器联系根服务器 - 例如,198.41.0.4。这个服务器说:“我没有关于这个地址的信息,但我知道 204.74.112.1 负责 ru 区。”

然后 DNS 服务器将其请求发送到 204.74.112.1,但它回复:“我没有关于此服务器的信息,但我知道 207.142.131.234 负责 codegym.cc 区域。”。最后,相同的请求被发送到第三个 DNS 服务器并收到响应 - 一个 IP 地址,该地址被传输到客户端,即浏览器。

在这种情况下,在按名称搜索 IP 的过程中,以下规则起作用:

  • 浏览器向已知 DNS 服务器发送递归请求(响应此类请求,服务器必须返回 IP 地址,或者返回空响应和 NXDOMAIN 错误代码)。
  • 收到浏览器请求的 DNS 服务器接连发送非递归请求,收到其他 DNS 服务器的响应,直到收到负责请求区域的服务器的响应。
  • 提到的其余 DNS 服务器正在非递归地处理请求(并且很可能不会递归地处理请求,即使请求中有这样的要求)。

有时被请求的服务器可能会向“上游”DNS 服务器发送递归查询并等待准备好的响应。

重要的!通过递归查询处理,所有响应都通过 DNS 服务器,并有机会缓存​​它们。对同一个域名的重复请求通常不会超出服务器的缓存,根本不会出现对其他服务器的调用。

允许的响应缓存时间随响应一起提供(资源记录的 TTL 字段)。

主机文件

我们注意到第一个搜索是在本地主机文件中。这是 HOSTS.TXT 文件的继承者,它是在 ARPANET 时代发明的。是的,它仍然存在并且仍在使用。

它位于路径沿线:

  • /etc/hosts在 Linux 上。
  • Windows 上的%SystemRoot%\system32\drivers\etc\hosts
  • /system/etc/hosts在 android 中。

通常,该文件包含本地主机节点的位置定义:

127.0.0.1   	localhost

它的结构很简单:首先是IP地址,然后是域名。

有用

使用主机文件,可以通过将横幅的域地址重定向到地址 127.0.0.0、127.0.0.1 或 0.0.0.0 来过滤广告。

通常不建议使用 127.0.0.1,因为如果服务器不存在或配置错误,它会导致响应超时和相关延迟。如果你将任何广告域映射到 IP 地址 0.0.0.0,那么所有对它的请求都会立即消失)。

公共 DNS 服务器

当您连接 Internet 服务时,您通常会获得一个 DNS 服务器。但这样的免费 DNS 服务器并不总是最佳选择。此外,您可能不希望每次访问站点时都向 ISP 的 DNS 服务器发送带有域名的查询。

因此,许多人更愿意切换到公共免费 DNS 服务器。首先,它们速度非常快,并且拥有大量的域名缓存。您将获得更快的网站加载和正常运行时间,并且出现技术问题的可能性最小。

其次,安全。某些 DNS 服务可以阻止对网络钓鱼和恶意网站的访问,并提供内容过滤功能以保护儿童免受网上不当内容的侵害。

这样的 DNS 服务器甚至可以对抗诈骗者。例如,你去一个假冒的银行网站,DNS 服务器给你的不是诈骗者的 IP 地址,而是它的安全服务。

此类服务器列表

云彩 1.1.1.1
1.0.0.1
Cloudflare 承诺不会使用访问者数据来投放广告,也不会将请求源 IP 地址刻录到磁盘。
谷歌公共 DNS 8.8.8.8
8.8.4.4
存储有关请求设备的 IP 地址的完整信息大约 24-48 小时,用于故障排除和诊断
Comodo 安全 DNS 8.26.56.26
8.20.247.20
阻止网络钓鱼站点,但如果您试图访问带有恶意软件、间谍软件的站点,也会发出警告
Yandex.DNS 77.88.8.8
77.88.8.1
来自流行的俄罗斯搜索引擎的免费 DNS 服务
评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论