如果您利用的是 淘宝、微信 或 支付宝 等移动运用程序,您乃至不必输入网址。
该运用程序本身会处理所有事情并处理每个用户要求。

任何客户端设备在访问网站之前实行的第一步是 DNS 查找。
DNS 是域名做事器,其事情是将网站名称转换为 IP 地址。
它是最主要的组件,DNS 级别的中断会导致任何网站瘫痪。

DNS建筑设计 材料设备

在本文中,我们将深入磋商 DNS 的内部构造以及为什么须要它。
我们将理解处理 DNS 查询所涉及的不同组件。
此外,我们将理解这个过程中涉及的优化和漏洞。

为什么要有域名做事器?

互联网上的每个网站都驻留在做事器上。
您可以将每个网站视为在互联网上数百万台打算机中的一台上运行的运用程序。
当您键入www.google.com等网站名称时,您的浏览器如何知道要联系哪台打算机?打算机只处理 1 和 0,对网站名称一无所知。

打算机只能理解 1 和 0

托管网站的每台打算机都由 IP 地址唯一标识。
与我们拥有家庭住址的办法类似,每个网站也驻留在具有 IP 地址的打算机上。
就像一座建筑可以有多间公寓一样,一台打算机可以托管多个网站。

对付连接到 Web 做事器的任何设备,它必须知道托管它的打算机的 IP 地址。
有两种类型的 IP 地址 IPV4 和 IPV6。
IPV4 地址的格式为 10.45.0.98、10.32.64.32。
2405:200:1602::312c:8220 是 IPV6 地址。
我们很难记住 IP 地址。
此外,网站可以从一台打算机移动到另一台打算机。
在这种情形下,网站的 IP 地址会发生变革。

我们无法记住人们的电话号码,以是我们将它们存储在日记或我们的电话联系人中。
同样的原则被扩展并运用于网站。
DNS 就像所有网站的 IP 地址的主管。
当在浏览器中输入新的 url 时,浏览器会联系 DNS 来解析 IP 地址,然后启动与网站的通信。

DNS 有什么浸染?

DNS 是一组实体,卖力存储互联网上每个网站的 IP 地址。
任何实体都可以在任何网站上实行查找并获取其 IP 地址。
让我们打开一个新的浏览器选项卡并启动开拓职员工具。
我访问了网站www.facebook.com,这些是网络中韶光部分的详细信息:

加载网站所花费的韶光

正如所不雅观察到的,有一段 DNS 查找须要12.25 毫秒才能完成,加载网站的总韶光为419.41 毫秒。

现在,让我们看看这个做事器的 IP 地址。
标头部分将显示本网站的 IP 地址。
DNS 查找返回网站的 IPV6,我们的浏览器向同一做事器发送要求。

远程地址是网站的IP地址

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

www.google.com上的 nslookup 结果

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

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

http 重定向到 www.google.com

DNS 的主要性

DNS 设计得非常好,它向终极用户隐蔽了很多繁芜性。
如果 DNS 停滞事情,您将无法访问任何网站。

微软经历了一次中断,由于它的 DNS 做事器被查询淹没并且没有相应。
它影响了大多数微软产品,如 Xbox、OneNote、OneDrive、Dynamics 365 等。

2021 年 10 月,Facebook (Meta) 涌现故障,导致 Instagram、Facebook 和 WhatsApp 近 6 小时无法利用。
Facebook 在停电期间丢失了近 1.6 亿美元。
这阐明了 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 解析器发送要求

解析器检讨它是否具有与该网站对应的 IP 地址。
如果是,则将相同的内容返回给客户端(浏览器)。
如果解析器找不到 IP 地址,则会向 DNS 根做事器发送要求。

根做事器

在理解根做事器之前,让我们做一个快速实验。
您可以访问任何已知网站并在末端附加一个点 (.)。
例如:如果网站是www.gmail.com,那么它将是www.gmail.com.。

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

浏览器无法打开我的博客,末了有 ]

网站的 URL 由多个部分组成,以.. DNS 系统以层次构造的形式组织。
(.点) 涌如今顶部,顶级域如com, org, edu,gov等作为其子域。
每个顶级域都引用实际的网站,例如www.wikepedia.org, www.google.com等。
每个网站都可以定义自己的域。

下图阐明了层次构造

DNS层次构造

根做事器涌如今顶部,卖力识别顶级域 (TLD) 做事器。
因此,如果您发送 的 DNS 查找查询www.wikepedia.org,则本例中的顶级域为.org。
因此,根做事器现在将向顶级域做事器发送查询以解析 IP 地址。

处理 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 就会将要求委托给它。

TLD 做事器解析名称做事器

现在,您可能会问 TLD 做事器如何知道威信名称做事器。
这发生在域注册期间。
有一些实体称为域注册商,他们将此信息发布到每个 TLD 做事器并使网站可用。

威信名称做事器

末了,要求到达威信名称做事器。
然后名称做事器检讨网站名称与其 IP 地址之间的映射是否存在。

名称做事器返回网站 IP 地址

如果是,则将其通报回客户端。
然后,客户端利用 IP 地址并向托管该网站的做事器发送要求。

访问网站的浏览器

如果该网站不存在,则不会返回任何地址。
客户将无法访问该网站。
如果无法获取网站的 IP 地址,浏览器会显示以下缺点。

输入www.invalidwebsite.com

www.invalidwebsite.com上的 nslookup

同样,nslookup也返回类似的结果,无法获取给定网站的 IP 地址。

DNS 查询的类型

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

递归 DNS 查询

我们在上一节中看到了这种类型的查询。
第一个要求转到 DNS 解析器。
如果 DNS 解析器找不到映射,它会将要求发送到根做事器。
此外,根做事器将查询发送到 TLD 做事器。
这一贯持续到要求到达终极的威信名称做事器为止。

下图解释了递归 DNS 查询的事情事理。

递归 DNS 查询

相应从威信名称做事器传播,直到它到达客户端。
因此,每个组件卖力将要求转发给后续组件。
递归 DNS 查询比迭代查询更快。

迭代 DNS 查询

在这种类型中,DNS 解析器首先向根做事器发送要求。
然后根做事器回答 TLD 做事器的信息。
解析器然后查询 TLD 做事器。
此外,TLD 做事器会将威信名称做事器返回给解析器。
末了,解析器将联系威信名称做事器。

下图解释了迭代 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 缓存加速所有查找查询。
但是,现有设计存在一些缺陷。

假设我是一名黑客并启动了一个恶意网站。
该网站将映射到某个 IP 地址,例如:116.243.41.130。
让 IP 地址www.google.com为118.45.54.23。
如果用户访问 google,那么所有的 DNS 组件都会缓存 IP 地址118.45.54.23。
如果我变动 DNS 解析器的缓存并将 IP 地址修正www.google.com为116.243.41.130(恶意的)怎么办?

DNS正常事情

新用户在其浏览器中输入 google 将被定向到恶意网站。
对付新用户,浏览器和操作系统缓存查找将失落败。
要求将到达 DNS 解析器,解析器将返回更新后的 DNS 条款。
现在,让我们理解黑客如何变动此条款。

DNS 缓存中毒

DNS 组件遵照特定的通信协议。
他们利用 UDP 协议发送要乞降处理相应。
UDP 不是面向连接的,也没有像 TCP 那样的握手。

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

两个设备之间的UDP通信

我们可以引入一个新的实体C(恶意实体),它将欺骗 IP 地址和端口B并将数据包传送到A。
设备A会假天命据包来自B。
DNS 缓存中毒利用相同的观点。
恶意用户假造威信域名做事器的 IP 地址并将数据包发送到 DNS 解析器。

解析器中添加了禁绝确的映射,用户可能会被重定向到恶意网站。
由于通信在几毫秒内发生,因此攻击的机会较少。
此外,欺骗很困难,由于它们Source Port可能会有所不同。
攻击者必须暴力破解所有端口并发送不同的相应数据包。

总结

DNS 就像互联网上所有网站的目录。
它是由多个做事器组成的环球分布式系统。
DNS 解析器可以利用递归或迭代查询来实行 DNS 查找。

DNS 系统利用缓存来优化查找调用。
缓存在全体堆栈的多个位置完成。
网站地址可能被欺骗,DNS 缓存可能被投毒。
在缓存中毒的情形下,用户可能会被重定向到恶意网站。