【就近接入,智能DNS-Geo DNS ,大揭秘!】

做过后端服务或者网络加速的小伙伴,可能或多或少都听说过,智能DNS或者Geo DNS,就是根据用户的位置,返回离用户最近的服务节点,就近接入,以达到服务提速的效果。
那么大家有没想过,这个背后的原理是什么?为什么能根据用户的位置返回离用户最近的服务节点,本文带大家一探究竟。

什么是智能DNS

传统DNS解析,不判断访问者来源,会随机选择其中一个IP地址返回给访问者。而智能DNS解析,会判断访问者的来源,为不同的访问者智能返回不同的IP地址,可使访问者在访问网站时获取就近的IP地址,能够减少解析时延,并提升网站访问速度。

我们参考阿里云智能DNS给出的图例,如下

智能DNS图例

如果第一次接触,不了解DNS原理,看这个图可能还是会一头雾水,如何根据用户位置返回就近节点ip,这个发生在哪一步?先别急,解释上面这张图之前,我们先解释下什么是DNS。

DNS

域名层级

域名层级

什么是DNS

DNS简单说就是把域名转为ip的过程。转换过程涉及到3个服务器,分别是根域名服务器,顶级域名服务器,一级域名服务器,根域名服务器 不负责解析具体域名,而是返回 顶级域名服务器(TLD: top-level-domain server),用于继续寻找。顶级域名服务器TLD 也不负责解析具体域名,而是继续返回 一级域名服务器。一级域名服务器负责将域名解析成ip。

DNS工作过程

  1. 根域名解析:返回顶级域名解析服务器
  2. 顶级域名解析(TLD top):返回一级域名解析服务器
  3. 一级域名解析:根据域名,返回二级域名解析结果,即最终ip

DNS演示:从域名到ip,完整过程

根据上述过程,做个演示,首先找个根域名服务,根域名服务器全球有13个,如下,这里随便选择一个即可,

全球根域名服务器

选择完根域名服务器便可开始上述的流程。通过根域名服务器,获得顶级域名服务,再通过顶级域名服务器,获得一级域名服务器,最终通过一级域名服务器解析出ip,如下,以www.wallstreetcn.com这个地址为例

解析过程

以上便是DNS的解析ip的过程,那么回到最开始的问题, 智能DNS发生在哪一步?

智能DNS在这里

智能DNS发生在哪一步,答案是 一级域名服务器解析ip这里。

假如我们使用阿里云的智能DNS对域名和ip进行绑定,顶级域名服务器返回的一级域名服务器是阿里云的DNS服务器,这个阿里云DNS服务器便是智能DNS,其会根据调用者的出口ip等信息判断位置,从而决定返回哪个ip。
此时我们再看下面这张图,会发现3-8的过程,便是上述 :根域名服务器 → 顶级域名服务器 → 一级域名服务器 的过程,

智能DNS在这里

实际验证下

实际验证下, 域名 ga-bp149opsz5ox0laguk2fz.aliyunga0019.com,后面有3个区域的节点(北京,上海,杭州)。

域名-绑定ip

而当我身处北京访问这个域名时,只会返回北京区域的节点ip。如下,这就是因为在 一级域名服务器 即下图中的vip3.alidns.com,可以根据我的位置,返回离我最近的区域节点ip,这便是是云解析DNS,也是我们最开始提到的智能DNS(Geo DNS)。

演示
至此,我们发现 原来所说的智能DNS,便是服务厂商们(比如国内阿里云,国外AWS等服务厂商公司)提供的一级域名解析服务器,根据用户位置,就近返回便是其所具备的功能。

延伸,DNS中的概念

此外在补充一些DNS中常见的概念,

递归DNS服务器,典型的CloudFlare 1.1.1.1

  • 我们平常说的 公共DNS服务器,一般都是指递归 DNS 服务器,当我们对其发起域名查询时,其把上面的3步 根域名查询,顶级域名查询,一级域名查询 都去做了,所以也叫它递归DNS 服务器。它由一些云服务厂商提供,属于公有服务,典型的如CloudFlare 1.1.1.1,把 DNS 查询自动化了,只要向它查询就可以了(如下图)。
    同时它内部有缓存,可以保存以前查询的结果,下次再有人查询,就直接返回缓存里面的结果。所以它能加快查询,减轻根域名等服务器的负担。
    向它查询,一步出结果。
    一下出结果

local DNS

  • Local DNS 是一个检查记录是否在本地缓存中的组件,它的查询是递归/迭代查询。 客户端和Local DNS 是递归查询,这是最常见的一种查询方式。 具体来说就是如果Local DNS 不能响应请求,它会代替客户端向其他根域名服务器继续发出查询请求,即替客户端继续查询,而不是让客户端自己进行下一步查询。

权威域名服务器(Authoritative Name Server)

  • 一级域名服务器的正式名称叫做权威域名服务器,"权威"的意思是域名的 IP 地址由它给定,不像递归服务器自己做不了主。我们购买域名后,设置 DNS 服务器就是在设置该域名的权威服务器。

参考

dns查询原理
https://www.ruanyifeng.com/blog/2022/08/dns-query.html
智能DNS解析
https://help.aliyun.com/zh/dns/intelligent-dns-resolution?spm=a2c6h.13066369.0.0.4b2f3d50nLfESw

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

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

相关文章

成绩分析 蓝桥杯 java

成绩分析 小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 输入格式 输入的第一行包含一个整数 n,表示考试人数。 接下来 n 行,每行包含一…

C++:日期类的实现 const修饰 取地址及const取地址操作符重载(类的6个默认成员函数完结篇)

一、日期类的实现 根据之前赋值运算符重载逻辑&#xff0c;我们现在来实现完整的日期类。 1.1 判断小于 上篇博客已经实现: bool operator<(const Date& d) {if (_year < d._year){return true;}else if (_year d._year){if (_month < d._month){return true…

总结C/C++中程序内存区域划分

C/C程序内存分配的几个区域&#xff1a; 1. 栈区&#xff08;stack&#xff09;&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中&#xff0c;效率很⾼…

KISS 原则和 YAGNI原则

设计模式专栏&#xff1a;http://t.csdnimg.cn/3a25S 目录 1.引言 2.代码并非行数越少越简单 3.代码复杂不一定违反 KISS 原则 4.如何写出满足 KISS 原则的代码 5.YAGNI原则和 KISS 原则的区别 1.引言 KISS原则的英文描述有3种版本:Keep It Simple and Supid、 keep It Sh…

OpenHarmony开发技术:【国际化】实例

国际化 如今越来的越多的应用都走向了海外&#xff0c;应用走向海外需要支持不同国家的语言&#xff0c;这就意味着应用资源文件需要支持不同语言环境下的显示。本节就介绍一下设备语言环境变更后&#xff0c;如何让应用支持多语言。 应用支持多语言 ArkUI开发框架对多语言的…

Autowired和Resource的关系?

相同点 对于下面的代码来说&#xff0c;如果是Spring容器的话&#xff0c;两个注解的功能基本是等价的&#xff0c;他们都可以将bean注入到对应的field中 Autowired private Bean beanA; Resource private Bean beanB; 不同点 byName和byType匹配顺序不同 Autowired在获取…

TypeScript—详解、小案例(配合源代码)

简介&#xff1a;TypeScript是微软开发的 JavaScript 的超集&#xff0c;TypeScript兼容JavaScript&#xff0c;可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进步的地方 包括&#xff1a;加入注释&#xff0c;让编译器理解所支持的对象和函数&#xff0c;编译器…

Web路径专题

文章目录 1.资源定位1.前置条件上下文路径设置 2.上下文路径介绍重点说明 3.资源定位方式资源路径 上下文路径 资源位置a.html定位C.java定位 4.浏览器和服务器解析的区别1.浏览器解析/&#xff08;地址变化&#xff09;2.服务器解析/&#xff08;地址不变&#xff09; 5.带/…

备份工具--kopia

kopia 备份测试 安装minio wget https://dl.min.io/server/minio/release/linux-amd64/minio 创建目录 mkdir -p /data/myapp/minio mkdir -p /data/minidata 配置启动 cat start_minio.sh nohup /data/myapp/minio/minio server --console-address :“9090” /data/minidata…

数据流重定向

数据流重定向 标准输入 0 标准输出 1 标准错误输出 2 输出 > 标准输出 1>标准错误输出 2>标准输出标准错误输出 2>&1 或 &> 输入 < 标准输入 0<eof输入 cat > catfile <<“eof” 双向重定向 tee [command] | tee -a [file] [comma…

Spring和Spring MVC和MyBatis面试题

面试题1&#xff1a;请简述Spring、Spring MVC和MyBatis在整合开发中的作用&#xff1f; 答案&#xff1a; Spring&#xff1a;是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。它提供了强大的依赖注入功能&#xff0c;…

git学习 1

打开自己想要存放git仓库的文件夹&#xff0c;右键打开git bush&#xff0c;用git init命令建立仓库 用 ls -a(表示全都要看&#xff0c;包括隐藏的)可以看到git仓库 也可以用 git clone 接github链接&#xff08;点code选项里面会给链接&#xff0c;结尾是git的那个&#xf…

程序员开发指南-- reference

01. 项目介绍 为开发人员分享快速参考备忘清单【速查表】 GitHub - jaywcjlove/reference: 为开发人员分享快速参考备忘清单(速查表) 02. 部署Quick Reference网站 docker pull wcjiang/reference docker run --name reference --rm -d -p 9667:3000 wcjiang/reference:lat…

阿里云ACK k8s集群迁移

1、创建k8s集群 阿里云ACK创建 2、创建所需的第三方插件 ACK ingress创建 3、导出原有ACK集群配置 包含deployment、service、ingress、PersistentVolumeClaim 执行命令 kubectl get deployment,service,secret,ingress,PersistentVolumeClaim -n <namespace_name> -o y…

OpenHarmony南向开发实例:【智能可燃气体检测系统】

样例简介 本项目是基于BearPi套件开发的智能可燃气体检测Demo&#xff0c;该系统内主要由小熊派单板套件和和MQ5可燃气体检测传感器组成。 智能可燃气体检测系统可以通过云和手机建立连接&#xff0c;可以在手机上控制感应的阈值&#xff0c;传感器感知到的可燃气体浓度超过阈…

【ISO体系认证】云服务信息安全管理体系,一起来看看吧!

云服务信息安全管理体系&#xff08;简称“CSISMS”&#xff09;&#xff0c;以ISO/IEC 27017:2015为认证依据。ISO/IEC 27017标准是建立在ISO/IEC 27001信息安全管理体系框架和ISO/IEC 27002作为最佳实践控制设置的坚实基础之上&#xff0c;通过ISO/IEC 27017标准认证&#xf…

C++ | Leetcode C++题解之第12题整数转罗马数字

题目&#xff1a; 题解&#xff1a; const string thousands[] {"", "M", "MM", "MMM"}; const string hundreds[] {"", "C", "CC", "CCC", "CD", "D", "DC&qu…

azkaban的写法

先创建一个.job文件和一个.sql文件 sql语法写到一个test名字的文件里&#xff0c;之后job写法如下&#xff1a; typecommand commandhive -f test6.sql 一定要严格写&#xff0c;不管是字母还是空格&#xff0c;单引号中就是sql文件的名字 然后将它们一块打包&#xff0c;启动…

ubuntu系统逻辑卷Logical Volume扩容根分区

Linux LVM详解 https://blog.csdn.net/qq_35745940/article/details/119054949 https://blog.csdn.net/weixin_41891696/article/details/118805670 https://blog.51cto.com/woyaoxuelinux/1870299 LVM&#xff08;Logical Volume Manager&#xff09;逻辑卷管理&#xff0c…

Go语言开发小技巧易错点100例(十四)

往期回顾&#xff1a; Go语言开发小技巧&易错点100例&#xff08;一&#xff09;Go语言开发小技巧&易错点100例&#xff08;二&#xff09;Go语言开发小技巧&易错点100例&#xff08;三&#xff09;Go语言开发小技巧&易错点100例&#xff08;四&#xff09;Go…