⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 编程技术宇宙 「轩辕之风O」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

俄乌战争还在持续,网络中的战争也同样在上演着。

从最近几天的微博热搜就能看出,舆论阵地是何等的重要,一张图、一个视频、一段文字就能把人带跑偏,可见保持独立思考和判断的能力多么难能可贵。

网络阵地如此之重要,大家有没有想过一个问题:美国那么爱制裁,互联网是美国人发明的,如果美国制裁俄罗斯互联网,把根域名服务器封了,俄罗斯是否就从互联网消失了?

美国会不会干出这事儿我不知道,咱们就从技术上来分析一下,通过封禁根服务器,能不能实现将一个国家从互联网消失。

要回答这个问题,需要了解一些互联网工作的基本常识。

我们平时上网,其本质就是用你手里的客户端软件(比如微博、抖音、微信、浏览器等等)去访问它们背后的服务器(微博服务器、抖音服务器、微信服务器、其他网站的服务器等等),请求数据然后呈现给你。

那如何访问呢?

这些服务器都有属于它们的IP地址,这是一个在互联网中使用的身份标识号码,凭借这个数字,我们手机和电脑发出的网络数据包就能被网络中的“快递系统”不断转发,最终投递到目标服务器。

但这些号码数字对我们人类来说没那么好记忆,所以,人们发明了域名这个东西。

www.baidu.com,这就是百度的域名。

这个东西可比数字好记多了!

但互联网的协议是用IP地址进行身份识别的,现在搞了这么个域名,怎么用起来呢?

计算机科学家们又搞了一个翻译系统出来:域名解析系统DNS

在访问真正的服务器之前,先通过这个解析系统,把这个域名“翻译”成对应的IP地址,拿到这个IP地址后,再去进行后面的网络访问。

当然,这个过程都被现在的软件自动化的进行了,比如你在浏览器里输入www.baidu.com之后按下回车,浏览器自动完成了这个解析的过程,这对我们普通的用户来说是透明的(看不见的)。

那么问题来了,这个负责域名解析的东西是什么样的?

它是一台服务器吗?它位于哪个地方呢?

首先,它不是一台服务器,万一崩了,那全世界都上不了网了。

其次,它也不是一个简单的多点集群,全世界的网站这么多,每个节点要存储所有的域名——IP映射关系,那也是不切实际的。

事实上,真正的域名解析系统它是一个分层级的庞大系统。

  • 本地DNS服务器
  • 权威域名服务器
  • 顶级域名服务器
  • 根域名服务器

我们每个电脑和手机里面都设置了本地DNS服务器(简称LDNS),需要解析域名的时候,就向LDNS发出请求。

大家可以在自己的电脑上执行nslookupipconfig命令,查看自己电脑上配置的DNS服务器地址是什么:

我们以www.example.com这个域名为例,来看一下DNS的解析过程。

  • 你的电脑问LDNS:www.example.com的IP是什么?
  • LDNS:查无此域名,问一下根服务器看看:www.example.com的IP是什么?
  • 根服务器:我可是十三大长老,哪管这些。你去问负责.com域名解析的顶级域名服务器吧,它肯定知道。
  • LDNS问.com顶级域名服务器:大佬,www.example.com的IP是什么?
  • .com顶级域名服务器:这我也不知道,你问问ns.example.com看看,它负责解析所有example.com下面的域名。
  • LDNS问ns.example.com:大佬,www.example.com的IP是什么?
  • ns.example.com:这我知道,是xxx.xxx.xx.xxx
  • LDNS:谢谢大佬
  • LDNS回复你的电脑:查到了,是xxx.xxx.xx.xxx,可累死我了···

整个过程大概是下面这图所示,不过需要说明的是,并不是每一次DNS请求都会经历这样的过程,有些时候中间节点有缓存,路径就会变得不一样了。

由此可见,根域名解析服务器在整个过程中扮演的角色至关重要。

那么,问题又来了,全世界有多少根DNS?

答案是13个,其中10个在美国,英国和瑞典各1个,日本1个。

这13个根的名字和IP在这里可以公开查阅:

https://www.internic.net/domain/named.root

他们的名字从A.root-servers.netM.root-servers.net

其中,A开头那个是主根,其他12个(B、C、D、E、F、G、H、I、J、K、L、M)是辅根。

但是需要注意的是,这里说的13个,并非真的只有13台物理机器,全球的互联网如果都只靠这十三台计算机维系,那风险还是很大的。

在逻辑上,根确实只有13个,但每个根都有镜像啊!

所以,根服务器实际上总共有1518个(截止2022-02-27)之多,在下面这个网站,你可以看到全球所有的根服务器分布情况:

https://root-servers.org/

从A到M,每一个根服务器背后都有许多镜像节点,分布在全球不同的地方。

下面是我们中国所拥有的根镜像服务器:

单是北京,就拥有8个节点。

再次注意,根服务器的IP只有13个,但是却有一千多个物理服务器节点。

那这是怎么办到的呢?这里用到了一个叫“任播”的网络技术。简单理解就是:可以让世界上不同的多台计算机,拥有同一个IP地址

注意,这里的IP地址是公网地址,如果是私有地址那没啥讨论的。

小伙伴儿们可能一脸问号了,具体在网络路由的时候,具体选择哪一台计算机呢?

我国境内发出的对根DNS的请求,基本上都由国内的镜像完成了,并没有路由到国外的根服务器上去。

注意这一点,非常重要!

这么多台根服务器,它们是如何协同工作的呢?

简单来说:所有的辅根从主根同步数据,而所有的镜像从对应的根服务器来同步数据。

按照这个逻辑,A根就是超级大boss,只要它改了,其他一千多个节点都得跟着改。

那么,如果某一天美国把A根中关于.cn的相关信息全部删掉,那全世界的根服务器都会跟着删掉,那中国将从互联网消失吗?

这个时候,建设自主可控的根镜像服务器的重要性就体现出来了。

服务器在我这儿,我不同步删除的内容,或者同步完加上删除的内容,就能破解这个问题!

因为前面交代了,国内对根DNS的请求,基本都是国内镜像完成的,并没有路由出去。

当然,其他国家的根镜像我们控制不了,他们可能无法访问.cn的域名,但只要他们想要访问,就会加回去,并拒绝同步美国删除的内容,如此一来,最后只有美国人自己访问不了.cn的域名。

同样的道理也适用于俄罗斯,在root-servers网站上,也可以看到俄罗斯同样建设了许多的根镜像服务器,比如首都莫斯科:

他们同样可以拒绝同步删除俄罗斯的国家域名.ru的解析信息。

所以,想通过封禁根域名解析服务让一个国家从互联网消失,没那么容易。

但如果是一个没有建设根镜像服务器的国家呢?

文章目录