一文读懂 DNS 解析

news2024/12/23 13:33:35

导读

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

  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 的目的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

想让行车记录仪协助道路病害自动化检测?可以!

针对【RGB3DS道路表观病害信息智慧检测系统】,我们着重介绍过其与道路检测车做集成预装或者处理道路检测车数据的极大便利,其中之一便是可高效输出带有道路检测车桩号标记的病害报表,这是因为道路检测车数据本身具有规范性。 那么如果使用道…

Linux(类Unix)系统可执行程序ELF文件格式详解

我们知道一个Linux程序饱和程序代码和初始数据,那么这些程序二进制代码和初始数据在可执行程序文件中是怎么进行存储呢?这便是ELF文件格式要解决的问题。 一个Linux执行程序的内存结构粗略可划分为 代码段、数据段、BSS、堆、栈,如下图所示&…

Golang Gin 使用路由分类处理请求

在前面已经学习了gin框架如何处理请求,解析请求,返回数据。 在实际的项目当中,项目往往是以模块化来进行划分和开发的,所谓的模块化就是按照功能来划分,比如会有产品模块,会有用户模块,会将用户…

如何用ChatGPT协助搭建品牌视觉体系(VI)?

该场景对应的关键词库(18个): VI体系、品牌、目标市场、品牌DNA、人群特征、设计理念、标志设计、配色方案、字体选择、图形元素、价值观、形象、客户经理、需求、品牌定位、目标受众、主色调、辅助色 提问模板(2个)&…

并发编程09:ThreadLocal

文章目录 9.1 ThreadLocal简介9.1.1 面试题9.1.2 是什么?9.1.3 能干吗?9.1.4 API介绍9.1.5 永远的helloworld讲起9.1.6 总结 9.2 ThreadLocal源码分析9.2.1 源码解读9.2.2 Thread、ThreadLocal、ThreadLocalMap关系9.2.3 总结 9.3 ThreadLocal内存泄漏问…

基于html+css的图展示53

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

网络:TCP协议三次握手与四次挥手

一、理解TCP报文 TCP报文格式_TCP报文包含哪些内容: TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。 TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如&…

leecode100_第7题接雨水_双指针

1 题目 2 分析 简述:两个指针分别指向两端,通过判断柱子的升降趋势来判断是否可以接水。 思路如下: 变量l_max,r_max分别记录当前时刻,左右遍历过的柱子的最高的高度,因为它奠定了水能积多高。分情况判断&#xff1a…

2437. 有效时间的数目

2437.有效时间的数目 给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 “hh:mm” 。最早 可能的时间是 “00:00” ,最晚 可能的时间是 “23:59” 。 在字符串 time 中,被字符 ? 替换掉的数位是 未知的 &am…

【Python三方库】使用tle2czml库将tle数据转为czml数据

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、安装tle2czml二、tle2czmlc创建czml三、tle转成czml1.字符串2.文件(网络文件) 四、czml参数修改 一、安装tle2czm…

【PWN · ret2syscall】[Wiki] ret2syscall

初次接触到ret2syscall,而ret2syscall的题目目前没有在各大平台的题目类型筛选中找到,所以还是刷一刷Wiki的经典题目吧!过程中遇到很多问题,包括偏移量的计算、ret2syscall原理的理解等等。尝试以萌新的视角,来分享、解…

网页版的 Redis 可视化工具来了,已开源

介绍 轻量级Redis缓存图形化管理工具,包含redis的5种数据类型的CRUD操作 软件架构 后端 springboot 2.2.2.RELEASE JDK 1.8 jedis 3.2.0 commons-lang3 3.5 hutool-core 5.1.1 fastjson 1.2.62 h2database 1.4.200 前端 vue-admin 1.0.5 axios 0.15.3 …

【Linux】exec函数族

目录 1、exec函数族的介绍2、exec相关函数 1、exec函数族的介绍 2、exec相关函数 #include <unistd.h> int execl(const char *pathname, const char *arg0, ... /* (char *)0 */ ); /* - path 需要指定的执行的文件的路径或者名称&#xff0c;相对路径or绝对路径- arg …

港联证券“中特估值”重塑可转债市场

中国特色估值体系&#xff08;简称“中特估值”&#xff09;正在重构以银行为核心的可转债市场。 尽管周二市场有所回落&#xff0c;但如火如荼的中特估值行情对可转债市场的影响巨大。受益于中信银行等强势上涨的表现&#xff0c;银行转债集体活跃。其中&#xff0c;齐鲁转债、…

美国访问学者J1签证申请攻略

J1签证主要签发给那些想来美国短期交流学习、学术访问、接受培训等&#xff0c;感受美国文化的人员。J1交流访问者签证包含多种类别&#xff0c;更特别的是&#xff0c;J1签证还允许持有签证人半工半读。这个非移民签证提供更多机会给外国人士来美国交流学习、传播文化并且获得…

RabbitMQ的SpringAMQP的各种模式的案例

目录 Basic Queue 简单队列模型 任务模型&#xff08;Work queues&#xff0c;也被称为&#xff08;Task queues&#xff09;&#xff09; 发布/订阅的广播&#xff08;Fanout&#xff09;模式 发布/订阅的定向&#xff08;Direct&#xff09;模式 发布订阅的通配&#xff08;…

HEVC学习之率失真优化

一、理论部分 率失真理论&#xff1a; 在给定失真的前提下如何最大限度第去除冗余。 在视频编码中的率失真理论为在给定码率RT的前提下最大限度的减少视频信息的失真&#xff0c;用数学描述为第一个式子所示&#xff0c;其中m*为取得最小码率时的编码方式&#xff0c;S为编码方…

使用MASA全家桶从零开始搭建IoT平台(三)管理设备的连接状态

文章目录 前言分析方案1:遗嘱消息演示遗嘱消息的使用实施流程 方案2:使用WebHook开启WebHook演示Webhook编写代码 前言 获取一个设备的在线和离线状态&#xff0c;是一个很关键的功能。我们对设备下发的控制指令&#xff0c;设备处于在线状态才能及时给我们反馈。这里的在线和…

SOLIDWORKS钣金折弯参数设置技巧

折弯系数早期是没有计算方法的&#xff0c;工厂都是根据实际经验确定下来的经验公式。 记录下来一个经验数据表或简单的经验公式。后来才出现的中性层概念&#xff0c;即既不伸长也不压缩的那一层为中性层。可以用来计算展开长度。SOLIDWORKS钣金折弯参数也是整合了所有的计算…

【C++】类和对象(中)---构造函数和析构函数

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…