前语

您是否想知道当您在浏览器中键入任何网站的URL时暗地会产生什么?每逢咱们键入网站地址(例如www.google.com)时,浏览器都会在几毫秒内为咱们加载一个页面。浏览器履行多项操作,如网站 ip 地址查找、加密、呼应解析等。最终咱们有一个美丽的网页能够与之交互。

假如您运用的是 淘宝、微信 或 支付宝 等移动应用程序,您甚至不必输入网址。该应用程序本身会处理一切作业并处理每个用户恳求。

任何客户端设备在拜访网站之前履行的第一步是 DNS 查找。DNS 是域名服务器,其作业是将网站称号转换为 IP 地址。它是最重要的组件,DNS 等级的中止会导致任何网站瘫痪。

在本文中,咱们将深化探讨 DNS 的内部结构以及为什么需要它。咱们将了解处理 DNS 查询所触及的不同组件。此外,咱们将了解这个进程中触及的优化和漏洞

欢迎关注个人大众号【JAVA旭阳】交流学习

为什么要有域名服务器?

互联网上的每个网站都驻留在服务器上。您能够将每个网站视为在互联网上数百万台核算机中的一台上运转的应用程序。当您键入www.google.com等网站称号时,您的浏览器怎么知道要联络哪台核算机?核算机只处理 1 和 0,对网站称号一无所知。

DNS(域名系统)是如何工作的?

核算机只能了解 1 和 0

保管网站的每台核算机都由 IP 地址唯一标识。与咱们拥有家庭住址的方法相似,每个网站也驻留在具有 IP 地址的核算机上。就像一座建筑能够有多间公寓相同,一台核算机能够保管多个网站。

关于衔接到 Web 服务器的任何设备,它有必要知道保管它的核算机的 IP 地址。有两种类型的 IP 地址 IPV4 和 IPV6。IPV4 地址的格式为 10.45.0.9810.32.64.322405:200:1602::312c:8220 是 IPV6 地址。咱们很难记住 IP 地址。此外,网站能够从一台核算机移动到另一台核算机。在这种情况下,网站的 IP 地址会产生变化。

咱们无法记住人们的电话号码,所以咱们将它们存储在日记或咱们的电话联络人中。相同的准则被扩展并应用于网站。DNS 就像一切网站的 IP 地址的主管。当在浏览器中输入新的 url 时,浏览器会联络 DNS 来解析 IP 地址,然后启动与网站的通讯。

DNS 有什么作用?

DNS 是一组实体,担任存储互联网上每个网站的 IP 地址。任何实体都能够在任何网站上履行查找并获取其 IP 地址。让咱们翻开一个新的浏览器选项卡并启动开发人员工具。我拜访了网站www.facebook.com,这些是网络中时刻部分的详细信息:

DNS(域名系统)是如何工作的?

加载网站所花费的时刻

正如所观察到的,有一段 DNS 查找需要12.25 毫秒才能完结,加载网站的总时刻为419.41 毫秒。

现在,让咱们看看这个服务器的 IP 地址。标头部分将显示本网站的 IP 地址。DNS 查找回来网站的 IPV6,咱们的浏览器向同一服务器发送恳求。

DNS(域名系统)是如何工作的?

长途地址是网站的IP地址

有一个名为 as 的命令行实用程序nslookup可帮助您查找任何网站的 IP 地址。让咱们测验nslookup在网站上履行一个www.google.com

DNS(域名系统)是如何工作的?

www.google.com上的 nslookup 成果

上图显示了nslookup的成果,假如您在浏览器中运用上述 IP 地址,您将被重定向到 google

如下图所示,我在浏览器的 url 栏中输入了 IP 地址,它把我重定向到了www.google.com

DNS(域名系统)是如何工作的?

http 重定向到 www.google.com

DNS 的重要性

DNS 设计得非常好,它向最终用户隐藏了很多复杂性。假如 DNS 停止作业,您将无法拜访任何网站。

微软经历了一次中止,由于它的 DNS 服务器被查询淹没并且没有呼应。它影响了大多数微软产品,如 XboxOneNoteOneDriveDynamics 365 等。

2021 年 10 月,Facebook (Meta) 出现故障,导致 InstagramFacebookWhatsApp 近 6 小时无法运用。Facebook 在停电期间丢失了近 1.6 亿美元。这解释了 DNS 在互联网上扮演的重要人物。

DNS(域名系统)是如何工作的?

DNS 查找怎么作业?

到目前为止,咱们已经了解 DNS 的作用就像是世界上一切有效网站的目录。您或许以为一台核算机足以保存一切这些信息。但 DNS 并非如此。现在让咱们了解 DNS 的内部作业原理。

假如单个服务器存储一切网站的映射会怎样?每秒都有数万亿个客户端发送的恳求。单个服务器无法处理这么多恳求。它将成为瓶颈和单点故障。因而,该体系由散布在全球各地的不同组件组成。

DNS 体系由多个组件组成。以下是触及的不同组件:

  • DNS 解析器 (DNS resolver
  • 根服务器(Root Server
  • TLD(尖端域)服务器(TLD (Top-level Domain) Server
  • 威望称号服务器(Authoritative Name Server

让咱们了解恳求处理流程并深化了解每个组件。

DNS 解析器

当您第一次在浏览器中输入 url 时,浏览器并不知道该网站的 IP 地址。浏览器首要联络 DNS 解析器。解析器由 Internet 服务提供商 (ISP) 办理。

DNS(域名系统)是如何工作的?

浏览器向 DNS 解析器发送恳求

解析器查看它是否具有与该网站对应的 IP 地址。假如是,则将相同的内容回来给客户端(浏览器)。假如解析器找不到 IP 地址,则会向 DNS 根服务器发送恳求。

根服务器

在了解根服务器之前,让咱们做一个快速实验。您能够拜访任何已知网站并在结尾附加一个点 (.)。例如:假如网站是www.gmail.com,那么它将是www.gmail.com.

现在,在浏览器的地址栏中输入此网站(附有点, 您的浏览器会将您带到该网站并视为没有附加点。假如您将点替换为任何其他字符,例如+, [,]等,恳求将失利。

DNS(域名系统)是如何工作的?

浏览器无法翻开我的博客,最终有 ]

网站的 URL 由多个部分组成,以.. DNS 体系以层次结构的方法安排。(.点) 出现在顶部,尖端域如com, org, edu,gov等作为其子域。每个尖端域都引证实践的网站,例如www.wikepedia.org, www.google.com等。每个网站都能够界说自己的域。

下图解释了层次结构

DNS(域名系统)是如何工作的?

DNS层次结构

根服务器出现在顶部,担任辨认尖端域 (TLD) 服务器。因而,假如您发送 的 DNS 查找查询www.wikepedia.org,则本例中的尖端域为.org。因而,根服务器现在将向尖端域服务器发送查询以解析 IP 地址。

DNS(域名系统)是如何工作的?

处理 DNS 查询的根服务器

有 13 个不同的根 DNS IP 地址。root DNS 服务器由马里兰大学、VeriSign、NASA 等不同安排办理。在暗地,有近 1000 个不同的根服务器以保证高可用性和冗余, 服务器遍及全球。由于IPV4地址的原始限制,他们只为root DNS服务器分配了13个不同的IP。

尖端域服务器

尖端域服务器办理和存储对每个网站的实践称号服务器的引证。一旦根服务器辨认出尖端域服务器,它就会发送一个 DNS 查询。

尖端域现在查找 url 的下一部分。url 在每个服务器上以从右到左的方法遍历。因而,假如该网站是www.google.com,那么尖端域服务器将测验找到存储google.com, 存储网站与其 IP 地址的实践映射的服务器称为威望称号服务器。

一旦获得威望称号服务器的 IP 地址,TLD 就会将恳求委托给它。

DNS(域名系统)是如何工作的?

TLD 服务器解析称号服务器

现在,您或许会问 TLD 服务器怎么知道威望称号服务器。这产生在域注册期间。有一些实体称为域注册商,他们将此信息发布到每个 TLD 服务器并使网站可用。

威望称号服务器

最终,恳求抵达威望称号服务器。然后称号服务器查看网站称号与其 IP 地址之间的映射是否存在。

DNS(域名系统)是如何工作的?

称号服务器回来网站 IP 地址

假如是,则将其传递回客户端。然后,客户端运用 IP 地址并向保管该网站的服务器发送恳求。

DNS(域名系统)是如何工作的?

拜访网站的浏览器

假如该网站不存在,则不会回来任何地址。客户将无法拜访该网站。假如无法获取网站的 IP 地址,浏览器会显示以下错误。

DNS(域名系统)是如何工作的?

输入www.invalidwebsite.com

DNS(域名系统)是如何工作的?

www.invalidwebsite.com上的 nslookup

相同,nslookup也回来相似的成果,无法获取给定网站的 IP 地址。

DNS 查询的类型

有两种类型的 DNS 查询——递归和迭代。

递归 DNS 查询

咱们在上一节中看到了这种类型的查询。第一个恳求转到 DNS 解析器。假如 DNS 解析器找不到映射,它会将恳求发送到根服务器。此外,根服务器将查询发送到 TLD 服务器。这一向继续到恳求抵达最终的威望称号服务器为止。

下图说明晰递归 DNS 查询的作业原理。

DNS(域名系统)是如何工作的?

递归 DNS 查询

呼应从威望称号服务器传播,直到它抵达客户端。因而,每个组件担任将恳求转发给后续组件。递归 DNS 查询比迭代查询更快。

迭代 DNS 查询

在这种类型中,DNS 解析器首要向根服务器发送恳求。然后根服务器回复 TLD 服务器的信息。解析器然后查询 TLD 服务器。此外,TLD 服务器会将威望称号服务器回来给解析器。最终,解析器将联络威望称号服务器。

下图说明晰迭代 DNS 查询的作业原理。

DNS(域名系统)是如何工作的?

迭代 DNS 查询

在迭代 DNS 查询中,DNS 解析器主动参加向每个 DNS 组件发送恳求。与递归查询不同,DNS 组件之间没有交互。每个组件仅仅将下一个组件的地址发送给解析器。由于多次来回通讯,这些类型的查询需要更长的时刻。

优化 DNS 查找查询

咱们在其中一个插图中看到 DNS 查找时刻为 12.25 毫秒。这因每个网站而异,取决于互联网流量和区域。由于http是无状态的,浏览器每次拜访一个新页面都要向服务器发送一个http恳求。

浏览器是否对您在网站上拜访的每个页面履行 DNS 查找?试想一下,假如它在每次拜访网站资源时都履行 DNS 查找会产生什么。

缺陷是在拜访任何页面时会有 10-20 毫秒的额定推迟。此外,DNS 服务器会被恳求淹没。此外,它还会添加处理不断添加的负载的本钱。

为了战胜这个问题,缓存被广泛用于 DNS 查找作业流程。缓存在多个当地被利用。履行成功查找后,浏览器会缓存 IP 地址并设置 TTL(例如 24 小时)。添加了由客户端设备的操作体系维护的相似条目。

构成 DNS 体系的组件也会缓存查询成果。假如未过期,每个组件都会回来缓存的条目。假如服务器在其缓存中找不到条目,它将向下一个服务器发送恳求(递归 DNS 查询)。

DNS(域名系统)是如何工作的?

缓存 DNS 记录

添加缓存可加快 DNS 查找进程。当一个网站第一次上线时,只要第一个用户会观察到拜访它的推迟。关于其他用户,根服务器将回来缓存的成果,然后缩短页面加载时刻。

什么是 DNS 缓存中毒?

咱们现在将了解 DNS 查找进程中触及的漏洞有哪些。DNS 缓存加快一切查找查询。可是,现有设计存在一些缺陷。

假定我是一名黑客并启动了一个歹意网站。该网站将映射到某个 IP 地址,例如:116.243.41.130。让 IP 地址www.google.com118.45.54.23。假如用户拜访 google,那么一切的 DNS 组件都会缓存 IP 地址118.45.54.23。假如我更改 DNS 解析器的缓存并将 IP 地址修改www.google.com116.243.41.130(歹意的)怎么办?

DNS(域名系统)是如何工作的?

DNS正常作业

新用户在其浏览器中输入 google 将被定向到歹意网站。关于新用户,浏览器和操作体系缓存查找将失利。恳求将抵达 DNS 解析器,解析器将回来更新后的 DNS 条目。现在,让咱们了解黑客怎么更改此条目。

DNS(域名系统)是如何工作的?

DNS 缓存中毒

DNS 组件遵从特定的通讯协议。他们运用 UDP 协议发送恳求和处理呼应。UDP 不是面向衔接的,也没有像 TCP 那样的握手。

A设备之间的 UDP 通讯B如下图所示。

DNS(域名系统)是如何工作的?

两个设备之间的UDP通讯

咱们能够引入一个新的实体C(歹意实体),它将诈骗 IP 地址和端口B并将数据包传送到A。设备A会假定数据包来自B。DNS 缓存中毒运用相同的概念。歹意用户假造威望域名服务器的 IP 地址并将数据包发送到 DNS 解析器。

DNS(域名系统)是如何工作的?

解析器中添加了不正确的映射,用户或许会被重定向到歹意网站。由于通讯在几毫秒内产生,因而进犯的机会较少。此外,诈骗很困难,由于它们Source Port或许会有所不同。进犯者有必要暴力破解一切端口并发送不同的呼应数据包。

总结

DNS 就像互联网上一切网站的目录。它是由多个服务器组成的全球散布式体系。DNS 解析器能够运用递归或迭代查询来履行 DNS 查找。

DNS 体系运用缓存来优化查找调用。缓存在整个仓库的多个方位完结。网站地址或许被诈骗,DNS 缓存或许被投毒。在缓存中毒的情况下,用户或许会被重定向到歹意网站。

欢迎关注个人大众号【JAVA旭阳】交流学习