一文读懂 DNS 解析

导读

文章为“一文读懂域名与网站系列”第二篇,上篇文章主要介绍了域名的注册、建站和管理,通过本文你可以了解以下几个问题:

  1. 域名的结构、常用解析记录的类型

  2. DNS 解析的过程

  3. DNS 解析拓展知识

众所周知,互联网中的地址其实是 IP 地址,有 IPV4 和 IPV6 两种类型,但是难以记忆,因此发明了有特殊含义的域名来让用户使用。用户输入的是域名,但是网络通信使用的却是 IP 地址,将域名解析为 IP 地址就是通过 DNS 解析实现的。

01 基础知识

域名的构成

下图为域名的结构。其实每个域名都是有根域的,如 www.volcengine.com 其实应该是 www.volcengine.com.,域名末尾的点就是根域名,很多情况下根域名是可以省略掉的。在上述例子中,com 为顶级域名,volcengine.com 是二级域名或主域名,www.volcengine.com 是子域名或分域名。值得注意的是,顶级域名不一定只由一个域名构成,也可以由两个域名构成。虽然.com、.cn 都是顶级域名,但是.com.cn 也是顶级域名。

解析记录的类型

DNS 解析是将域名解析为 IP 地址的过程,那域名和 IP 地址的映射关系存在哪里呢?答案是 DNS 权威服务器。用户通过在 DNS 管理平台添加域名的解析记录,管理平台将该记录同步到权威 DNS 服务器,实现域名与最终 IP 地址的绑定。

值得注意的是,用户为域名添加的解析记录值除了 IP 地址外还可以是其他类型。DNS 记录有很多种,下图是 TrafficRoute 云解析 DNS 支持的部分记录类型,了解更多记录类型可以参看 https://www.volcengine.com/docs/6758/145121

02 DNS 解析的过程

这是一个很经典的 DNS 解析流程图。

DNS 解析流程

DNS 解析的过程可以分为本地查询(1、2)与线上查询(3-11)。

本地查询

本地查询可以分为 host 文件查询与本地缓存查询。当用户在浏览器中访问域名时,会先进行本地查询,若本地查询命中,则直接返回;未命中,则需要访问线上的 DNS 服务器进行解析。

线上查询

线上 DNS 解析主要包含:Local DNS 服务器、根域 DNS 服务器、顶级域 DNS 服务器、权威域 DNS 服务器。Local DNS 服务器不在客户端本地,一般为运营商提供的线上 DNS 服务器;权威 DNS 是特定域名记录在域名注册商处所设置的 DNS 服务器,用于特定域名本身的管理。

线上查询主要分为递归查询和迭代查询:递归查询是浏览器把任务交给 Local DNS ,然后等待 Local DNS 返回结果;迭代查询是 Local DNS 分别向各级 DNS 服务器发送查询请求,直到获取 DNS 解析结果为止。

总的来说,客户端向 Local DNS 服务器进行查询,如果命中 Local DNS 服务器的缓存,直接返回 IP;没有命中,Local DNS 服务器会向各级域名服务器进行查询,直到最终解析出 IP 为止。

实例分析

dig gtm-test.wenteng.site

以 gtm-test.wenteng.site 这个域名为例,我们分析一下这个域名解析为 IP 的过程。首先 dig 一下这个域名会得到以下结果。

从上图我们可以看到,gtm-test.wenteng.site 的 DNS 解析过程中其实还包含一次 CNAME 域名的解析(gtm-test.wenteng.site.gtm.volcdns.com)。这是因为该域名接入了云调度 GTM,你可以理解为我是在 GTM 平台配置了 test.wenteng.site.gtm.volcdns.com 与 IP(76.76.21.61 等)的映射,之后又在云解析 DNS 平台为二级域名 wenteng.site 添加了一条主机记录为 gtm-test,记录值为 test.wenteng.site.gtm.volcdns.com 的解析记录。

  • 当中国内地用户在浏览器输入访问 gtm-test.wenteng.site 时,本地缓存未命中,会去查询 Local DNS 服务器;

  • 若 Local DNS 服务器中没有该域名的缓存记录,则会依次去查询根域 DNS 服务器、顶级域 DNS 服务器、权威 DNS 服务器;

  • 根域 DNS 服务器会告知.com 顶级域对应的顶级域解析服务器地址;

  • 之后顶级域服务器会告知 wenteng.site 二级域名对应的权威 DNS 服务器地址;

  • 最终从权威域名服务器中查询到 gtm-test.wenteng.site 这个域名对应的记录值;

  • 查询到的记录类型为 CNAME 类型,非 IP,之后会对这个结果进行又一次的 5-10 过程解析,最终返回 A 类型的 IP 76.76.21.61、76.76.21.22。

实际情况中,因为 Local DNS 服务器有缓存,每一次的查询过程不是一定都要走根域名这个过程的,不然根域 DNS 服务器的流量就太大了。

03 DNS 解析的拓展知识

普通解析的升级

智能解析

传统 DNS 解析,不判断访问者来源,而智能 DNS 解析,会判断访问者的来源,为不同的访问者智能返回不同的 IP 地址,可使访问者在访问网站时可获取用户指定的就近 IP 地址,能够减少解析时延,并提升网站访问速度的功效。

如果您的业务分布在多个地区的多个 IDC 机房且各机房有独立的 IP 地址,您希望用户根据其所在地区和运营商,接入就近机房,这种场景可以使用智能解析。

上图为云解析 DNS 平台 wenteng.site 的解析记录截图,很明显可以看到每个记录都有线路属性。线路是一个二级结构,地区+运营商,DNS 就是根据用户的线路配置和实际请求的来源位置来实现智能解析的。同样是访问 intelligent.wenteng.site 这个域名

  • 中国内地 ISP 为电信的用户实际访问到的服务 IP 为 3.3.3.3(默认线路);

  • 中国内地 ISP 为移动的用户实际访问到的服务 IP 为 4.4.4.4(中国移动);

  • 中国内地联通的用户实际访问到的服务 IP 为 1.1.1.1;

  • 国外用户实际访问到的服务 IP 为 2.2.2.2。

如果你不需要开启智能解析,则直接将所有线路设为默认即可。值得注意的是,当开启智能解析时,默认线路是必须的,不然地区+运营商匹配不到的情况会导致空解析。此外,如果 3.3.3.3 是国外的 IP,中国内地电信用户访问到的服务就是国外的服务,这个可能不符合预期。因此要实现真正的就近接入,解析记录代表的服务器和线路最好是匹配的,不然有可能适得其反。

私网 DNS

PrivateZone,是基于专有网络 VPC(Virtual Private Cloud)环境的私有 DNS 服务。该服务允许您在自定义的一个或多个 VPC 中将私有域名映射到 IP 地址。通过 PrivateZone,您可以方便地使用私有域名记录来管理 VPC 中的 TOS ECS 等资源,而这些私有域名在 VPC 之外将无法访问。

HTTPDNS

DNS 存在一些缺点:如 DNS 更新不及时、DNS 劫持问题、流量调度不均衡等。正因为传统 DNS 存在上述问题,因此 HTTPDNS 应运而生。客户端使用 HTTP 协议或 HTTPS 协议发送请求到 HTTPDNS 服务端,从而绕过运营商的 Local DNS,防止域名劫持、实现精准调度。

DNS 负载均衡

DNS 负载均衡的本质是多次解析同一个域名可以返回不同的 IP 地址。最简单的实现 DNS 负载均衡的方式就是在 DNS 解析配置平台为一个域名配置多个 IP 并开启负载均衡,实现多次请求的流量打到多个 IP 的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Invicti v23.5 for Windows 发布 - 企业应用安全测试

Invicti v23.5 for Windows - 企业应用安全测试 Invicti Standard 11 May 2023 v23.5.0.40516 请访问原文链接:https://sysin.org/blog/invicti/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Invicti 是一种自动…

ESP32在linux下烧录,提示权限有问题,解决方法

执行idf.py -p /dev/ttyACM0 flash下载时,提示这个错误 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: /dev/ttyACM0 解决方法: 1检查串行端口 /dev/ttyUSB0 是否已被其他程序占用…

系统分析师之项目管理(十七)

一、范围管理 范围管理:确定项目的边界,即哪些工作是项目应该做的,哪些工作不应该包括在项目中。 二、时间管理 时间管理:也叫进度管理,就是用科学的方法,确定目标进度,编制进度计划和资源供应计…

SpringBoot整合Swagger

Swagger的作用&#xff1a;生成前后的接口文档&#xff1a; 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 一、SpringBoot集成Swagger 1.依赖&#xff1a; <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><depe…

【A、B、C、D、E类IP地址划分依据,你都会吗?】

IP 地址的格式&#xff1a;IP 地址 网络地址 主机地址 如果 IP 进行了子网划分&#xff1a; 则IP地址网络地址子网地址主机地址 网络地址是互联网上的节点在网络中具有的逻辑地址。MAC 地址&#xff0c;处于数据链 路层&#xff0c;IP 地址处于网络层&#xff0c;端口号处…

人工智能基础部分15-自然语言处理中的数据处理上采样、下采样、负采样是什么?

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能基础部分15-自然语言处理中的数据处理上采样、下采样、负采样是什么&#xff1f;在自然语言处理中&#xff0c;上采样、下采样、负采样都是用于处理数据不平衡问题的技术&#xff0c;目的是为了优化模型的训…

C# 对PdfiumViewer工具栏进行自定义,实现放大缩小,首页, 尾页,上一页等功能。

文章目录 前言PdfiumViewer工具栏扩展1 创建winform工程&#xff0c;UI界面2 打印预览3 放大功能4 缩小功能5 按比例缩放6 全屏7 首页和尾页8 上一页和下一页9 页码输入框10 显示当前预览的页码 小结 前言 关于PdfiumViewer的介绍 C# 使用PdfiumViewer实现对PDF文档打印预览&a…

路径规划算法:基于麻雀优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于麻雀优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于麻雀优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法麻雀…

Qt使用星空图作为窗口背景,点击键盘的WASD控制小飞机在上面移动。

事件函数的使用依托于Qt的事件机制&#xff0c;一个来自于外部事件的传递机制模型如下所示 信号槽虽然好用&#xff0c;但是无法包含所有的情况&#xff0c;事件函数可以起到对信号槽无法覆盖的一些时机进行补充&#xff0c;事件函数的使用无需连接。 常用的事件函数如下所示。…

【Mysql实战】使用存储过程和计算同比环比

背景 同环比&#xff0c;是基本的数据分析方法。在各类调研表中屡见不鲜&#xff0c;如果人工向前追溯统计数据&#xff0c;可想而知工作量是非常大的。 标题复制10行&#xff0c;并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…

vite跨域问题,你可能需要看这篇文章

最近在学习项目的时候&#xff0c;使用了vite工具进行构建&#xff0c;然后出现了跨域的问题&#xff0c;中间的曲折不过多叙述&#xff0c;直接进入正题。 前端成功启动后的界面&#xff1a; 然后在后端进行的Controller上使用了如下的配置 然后浏览器就会出现跨域的问题 为什…

【论文复现】基于区块链的分布式光伏就地消纳交易模式研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

UE4及Airsim安装时遇到的问题及解决办法

UE4及Airsim安装时遇到的问题及解决办法 目录 UE4及Airsim安装时遇到的问题及解决办法前言UE4下载慢解决方法 Airsim编译过程中提示&#xff1a;无法打开包括文件: “Eigen/Dense”: No such file or directory [D:\software\Visual_studio2022\2022Community\AirSim\Air解决办…

别不信:这些细节关乎你的物联网设备的命运!

《高并发系统实战派》-- 值得拥有 一、设备接入层网络协议的意义 随着物联网的发展&#xff0c;越来越多的设备需要接入云平台进行远程监控和管理。设备接入层网络协议起到了承担设备接入网络的功能&#xff0c;为物联网平台提供了数据交互的基础。设备接入层网络协议对于物联…

【云原生概念和技术】1.2 云原生技术概括(上)

如果想了解或者学习云原生的友友们&#xff0c;欢迎订阅哦&#xff5e;&#x1f917;&#xff0c;目前一周三更&#xff0c;努力码字中&#x1f9d1;‍&#x1f4bb;…目前第一章是一些介绍和概念性的知识&#xff0c;可以先在脑海里有一个知识的轮廓&#xff0c;从第二章开始就…

AUTOSAR入门

简介 AUTOSAR&#xff08;AUTomotive Open System ARchitecture&#xff09;是一种汽车软件架构标准&#xff0c;由德国大陆、博世、宝马等汽车及零部件制造商共同发起&#xff0c;拥有广泛的行业参与。其目标是为了解决汽车电子和软件系统日益复杂的问题&#xff0c;提高可重…

打工人使用ChatGPT的一天!

众所周知&#xff0c;ChatGPT 自去年OpenAI 推出以来&#xff0c;这款 AI 聊天机器人可以说迅速成为了 AI 界的「当红炸子鸡」 作为一名资深的打工人&#x1f477;&#x1f3fb;‍♂️&#xff0c;我们应该怎样利用ChatGPT提高工作效率呢&#xff1f;今天给大家介绍下打工人使…

关于Kerberos认证的一些攻击手法学习总结

Kerberos认证流程 前言 本文主要分享最近学习的关于域内Kerberos认证的一些攻击手法&#xff0c;以自我的理解为主&#xff0c;从原理理解切入到基本工具利用来阐述&#xff0c;个人的理解分析较为啰嗦&#xff0c;嫌太兀长的可以跳着看就好&#xff0c;还请各位谅解。如有错误…

第三十二章 React路由组件的简单使用

1、NavLink的使用 一个特殊版本的 Link&#xff0c;当它与当前 URL 匹配时&#xff0c;为其渲染元素添加样式属性 <NavLink className"list-group-item" to"/home">Home</NavLink> <NavLink className"list-group-item" to&quo…

JVM运行时数据区

Java和C的区别&#xff0c;体现在自动内存分配和垃圾收集技术。 JVM在执行Java程序时&#xff0c;会将它管理的内存分为若干个不同的数据区域。 这些区域有各自的作用范围以及生命周期&#xff1a; 线程私有的区域&#xff0c;随着用户线程的启动和结束而建立和销毁。线程共…