我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

0. 简介

为了保证 URL 的正常访问,域名解析协议 (DNS) 其实在幕后做了很多努力,本文将深入解释 DNS 协议的原理,了解我们每天接触到的 URL 实际上是如何运作的。

1. 什么是 DNS 协议

在了解 DNS 协议之前,我们先来区分一下域名和 IP 地址

不知道有没有同学会把域名和「URL」的概念搞混,但可以理解为这个 URL 包含的是域名。例如,它是一个 Web 地址,它是一个域名

由于 IP 地址的缺点,例如不易记记、不显示地址组织的名称和性质,因此设计了域名并“通过域名解析协议 (DNS) 协议相互映射”,使人们更容易访问互联网,而不必记住机器可以直接读取的 IP 地址字符串。将域名映射到 IP 地址称为正向解析,将 IP 地址映射到域名称为反向解析。

DNS 协议可以使用 UDP 或 TCP 传输,并且都使用端口号 53。但是“大多数时候 DNS 使用 UDP 进行传输”。

❞2.域名详情

❓ 那么,谁来管理和管理域名呢?不能随便写吧?

世界顶级域名管理机构是一个名为 ICANN(名称与)的组织,总部位于美国加利福尼亚州。“ICANN 负责管理全球域名系统的运营。”

反向域名解析协议_域名反向解析协议有哪些_域名反解析命令

其实域名从上到下都有一定的层次结构:“根域名”、“顶级域名”(TLD)、“二级域名”(三级域名)。

域名反解析命令_域名反向解析协议有哪些_反向域名解析协议

(1) 顶级域名

让我们从 “top-level ” (TLD) 开始,这是最高级别的域名。简单地说,它是 URL 的最后一部分。例如,URL 的顶级域为 .com。ICANN 的主要工作之一是定义哪些字符串可以用作顶级域。截至 2015 年 7 月,共有 1,058 个 TLD,大致可分为两类:

当然,ICANN 不会自行管理这些 TLD,因为它不能。想想看,有 1000 多个 TLD,每个 TLD 下都有很多批发商,管理每一个都太麻烦了。ICANN 的政策是,每个顶级域都有一个“托管人”,并且该域的所有事务都由托管人处理。ICANN 只联系托管人,这使得管理变得更加容易。例如,.cn ccTLD 的主机是中国互联网络信息中心 (CNNIC),该中心负责确定 .cn 域的策略。

(2) 二级域名

二级域名 (SLD) 在 gTLD 或 ccTLD 下具有不同的含义:

“三级域名”是指可以作为二级域名的子域名的域名,其特点是域名包含两个..对于域名所有者/消费者来说,三级域名是二级域名的附属物,无需单独付费。“三级域名甚至不能叫域名,一般都叫域名下的'二级目录'。”

(3) 根域名

❓ 那么“根域”在哪里呢?根域不是在层次结构的顶层吗?为什么我在域名中没有看到它?

由于 ICANN 管理所有顶级域,因此它是最高级别的域节点,称为根。在某些情况下,它被写成 ,即末尾会多一个点。此点是根域。

反向域名解析协议_域名反向解析协议有哪些_域名反解析命令

理论上,“所有域查询都必须首先由根域查询”,因为只有根域才能告诉你哪个服务器管理着顶级域。事实上,“ICANN 维护着一个顶级域及其相应主机的列表”,这是真的。

域名反解析命令_域名反向解析协议有哪些_反向域名解析协议

例如,如果我想访问 abc.xyz,我必须首先询问根域列表,它会告诉我 .xyz 域由公司托管。根域列表还指出 .is 由 托管,.apple 由 Apple 托管,依此类推。

由于根域列表很少更改,因此大多数 DNS 提供商都会提供其缓存,因此实际上不会经常查询根域。

3. 域名服务器详解

名称服务器是管理域名和相应软件的主机,它可以管理有关层次结构中域的信息。名称服务器负责的层次结构称为区域。域名的每一层都有一个域名服务器:

这是一张非常简单的图片

除了以上三种类型的 DNS 服务器外,还有另一种类型的 DNS 服务器,它不在 DNS 层次结构中,但很重要,那就是“本地名称服务器”。让我们解释一下这四个服务器中的每一个都是做什么的

(1) 根域名服务器

如上所述,ICANN 维护着一个包含顶级域及其相应主机的根域列表,但根域列表的正式名称是“DNS 根区域”,而保存 DNS 根区域文件的服务器称为“DNS 根名称服务器”。根域名服务器 “保存所有顶级域名服务器的地址”。

由于之前的 DNS 查询会生成 512 字节的 UDP 数据包。此软件包最多可容纳 13 个服务器地址,因此世界上有 13 个根名称服务器,编号为 .其中 10 个安装在美国,1 个安装在荷兰、瑞典和日本。

正如我们前面提到的,理论上“所有域名查询都必须首先查询根域名”,所以一般所有名称服务器都会注册一个根名称服务器的 IP 地址的缓存,用于在必要时向它们发送请求。

(2) 顶级域名服务器

根据根域名服务器管理顶级域名的逻辑,顶级域名服务器显然是用来“管理该顶级域名下注册的所有二级域名”和“记录那些二级域名的 IP 地址”。

(3) 权威域名服务器

按照上面的逻辑,权威域名服务器应该管理所有在二级域名下注册的三级/四级域名,但实际上并非如此,如果二级域名或三级/四级域名对应一个域名服务器,域名服务器的数量会非常多,我们需要使用“分区”的方式来解决这个问题。那么,权限名称服务器是负责管理 “区域” 的名称服务器。

❓ 什么是区域?选区是如何划分的?

区域和域实际上是不同的,区域可以通过多种方式进行划分。以百度为例,我们假设有三个三级域名: , , , 我们可以像这样进行分区,然后放到 中,再放到 中。并且权限名称服务器和权限名称服务器是“站在同一起跑线上”的,具体分区由百度根据域名数量、访问量等来确定。

画一个图表来直观地理解它:

(4) 本地域名服务器

除了以上三种类型的 DNS 服务器外,还有另一种类型的 DNS 服务器,它不在 DNS 层次结构中,但很重要,即“本地名称服务器”(也称为“权威名称服务器”)。本地名称服务器是计算机解析到计算机时在计算机上设置的“默认”名称服务器,即计算机上设置的首选和备用 DNS 服务器。常见的本地 DNS 服务,例如中国电信、中国联通、 和阿里巴巴。

域名反解析命令_反向域名解析协议_域名反向解析协议有哪些

每个 服务提供商或大学,甚至大学内的部门,都可以拥有本地名称服务器。“当主机发出 DNS 查询请求时,查询请求数据包将发送到主机的本地名称服务器。”“本地域名服务器管理本地域名的解析和映射,可以查询更高级别的域名服务器”。

那么,本地域名服务器如何将查询请求转发到更高级别的域名服务器呢?

4. DNS 查找方法

有两种方法可以进行特定的 DNS 查询:

递归意味着,如果请求的接收者不知道所请求的内容,那么“接收者将充当请求者”,发出请求,直到获得所需的内容,然后将内容返回给原始请求者。

通俗易懂的,在递归查询中,如果 A 请求 B,那么 B 作为请求的接收者,必须给 A 他想要的答案;迭代查询意味着,如果接收方 B 没有请求方 A 需要的确切内容,接收方 B 将告诉请求方 A 如何获取它,但不会自己发出请求。

通常,“名称服务器之间的查询是迭代查询的,以避免对根名称服务器造成过度压力”。您可以通过以下两个图表很好地理解它

1) 递归查询:

反向域名解析协议_域名反解析命令_域名反向解析协议有哪些

2) 迭代查询:

域名反解析命令_反向域名解析协议_域名反向解析协议有哪些

5. 域名缓存

以上解释了名称服务器之间的 DNS 查询请求流程,但实际上,每次都想上网的网民数不胜数,因此每次都访问本地名称服务器获取 IP 地址显然是不切实际的。解决方案是使用缓存来存储域名和 IP 地址的映射。

有两种方法可以在计算机上本地缓存 DNS 记录:浏览器缓存和操作系统缓存。

1)“浏览器缓存”:浏览器在获取网站域名后会缓存网站域名的实际 IP 地址,以减少网络请求的丢失。每个浏览器都有一个固定的 DNS 缓存时间,例如 1 分钟,在此期间不会重新请求 DNS

2) “操作系统缓存”:操作系统缓存实际上是用户自己配置的 hosts 文件。例如,下面的 hosts 文件存储在 C:\\\\\etc\hosts 中

反向域名解析协议_域名反解析命令_域名反向解析协议有哪些

系统默认开启 DNS 缓存服务,服务名称为 ,可以缓存一些常用的域名。

域名反解析命令_反向域名解析协议_域名反向解析协议有哪些

使用命令 / 查看计算机上缓存的域名。

⭐ 在浏览器中访问时,会先查询浏览器缓存,如果错过了,会继续查询操作系统缓存,最后查询本地名称服务器,然后本地名称服务器会递归查找域名记录,最后返回结果。“主机和本地域名服务器之间的查询是递归查询”,意思是主机请求本地域名服务器,那么本地域名服务器作为请求的接收者,必须给主机它想要的答案。

6. 完成域名解析流程

好了,将我们上面提到的域名服务器之间的 DNS 查询请求流程和域名缓存结合起来,就是一个完整的域名解析 DNS 协议了。这里我们以前向解析为例(域名被解析成一个 IP 地址)。

1) 首先,搜索 “'s DNS Cache”,它维护着一个与域名和 IP 地址对应的表格。

2) 如果没有命中,继续搜索“操作系统的 DNS 缓存”;

3)如果仍然没有命中,操作系统会将域名发送到“本地名称服务器”,本地名称服务器会查询自己的 DNS 缓存,如果搜索成功会返回结果(注意:主机和本地名称服务器之间的查询方式是“递归查询”);

4) 如果本地域名服务器的 DNS 缓存没有命中,本地域名服务器会查询更高级别的域名服务器,并按照以下方式进行“迭代查询”(注意:本地域名服务器和其他域名服务器之间的查询方式是迭代查询,以防止对根域名服务器造成过大的压力)。

4) 本地域名服务器将 IP 地址返回给操作系统并缓存 IP 地址本身

5) 操作系统将 IP 地址返回给浏览器并缓存 IP 地址本身

6)此时浏览器获取域名对应的 IP 地址,并缓存 IP 地址

直观理解下图:

域名反向解析协议有哪些_反向域名解析协议_域名反解析命令

扫码下方关注公众号“飞天小牛”(专注于分享计算机基础、Java基础和访谈指南相关的原创技术文章,帮助读者快速掌握高频关键知识和目标),与小牛一起成长进步

并且我强烈推荐我维护的 Gitee 仓库“CS-Wiki”(Gitee 推荐项目,目前 0.9k star.面对全栈,我们致力于构建完整的知识体系:数据结构、计算机网络、操作系统、算法、数据库、设计模式、Java 技术栈、机器学习、深度学习、强化学习等),相比公众号,仓库拥有更完整的知识体系,欢迎来到 star,仓库地址。您也可以直接扫描下方代码以访问

二维码
扫一扫在手机端查看

本文链接:https://by928.com/6346.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线