一、前言

世界上共有 13 个根域名服务器,其中主根域名服务器是在米国。

那米国有没有可能通过根域名服务器掐断我国的互联网呢?

在说结论之前,我们先来了解:

  • DNS到底是怎么工作的?

  • 为什么根域名服务器只有 13 台?

  • 根域名服务器都在国外,中国安全吗?

二、DNS到底是怎么工作的?

在上网冲浪时,我们在浏览器输入的都是网站的域名,而不是 Web 服务器的 IP 地址。

原因很简单,域名和 IP 地址的关系就像我们手机通讯录那样,用对方的名字来对应它的手机号码。这样每次拨打电话的时候,直接在通讯录里查名字就可以找到对方的手机号码,而不需要去记忆对方的手机号码。

IP 地址和手机号码都是一长串的数字,如果要去记忆它们,还是挺费劲的。

所以,为了网民上网冲浪舒服点,就搞了个 DNS 服务器,也就是域名解析服务器,它可以通过我们输入的域名来找到 Web 服务器的 IP 地址,然后浏览器再向 Web 服务器发送请求。

域名都是用句点来分隔的,比如 www.server.com,这里的句点代表了不同层次之间的界限越靠右的位置表示其层级越高

根域是在最顶层,它的下一层就是 com 顶级域,再下面是 server.com,所以域名的层级关系类似一个树状结构:

  • 根 DNS 服务器

  • 顶级域 DNS 服务器(com)

  • 权威 DNS 服务器(server.com)

我们电脑实际上并不直接访问根域名服务器,而是访问我们「本地的 DNS 服务器」,由它来访问根域名服务器,而且在解析域名的时候,是一个递归的过程。

域名解析是怎样的呢?

现在举一个具体的例子,比如客户端请求 www.server.com 这个域名,解析域名的过程如下:

  1. 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。

  2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。

  3. 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”

  4. 本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com  的 IP 地址吗?”

  5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。

  6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。

  7. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。

  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

至此,我们完成了 DNS 的解析过程,整个过程我画成了一个图:

域名解析的过程蛮有意思的,整个过程就和我们日常生活中找人问路的过程类似,只指路不带路

那是不是每次解析域名都要经过那么多的步骤呢?

当然不是了,还有缓存这个东西的嘛。

浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问「本地 DNS 服务器」。

为什么「本地 DNS 服务器」会知道根域名服务器的 IP 地址?

世界上根域名服务器只有 13 台,这 13 台根域名服务器以英文字母 A 到 M 依序命名,
网域名称格式为“字母.root-servers.org”,而且它们的 IP 地址基本不会变化。

所以,「本地 DNS 服务器」会内置一个根域名服务器的配置文件,通过读取这个配置文件就能找到根域名服务器的 IP 地址。

下面这个图就是 13 台根域名服务器的配置文件的部分内容:

可能有的同学会说,这个是静态的配置文件,如果某一个根域名服务器的 IP 地址改变了,要怎么知道的呢?

其实,「本地 DNS 服务器」首次启动时,并不会先读这份静态的配置文件,而是会先去查根域名服务器的 IP 列表,这个查询过程使用的传输协议是 UDP。

另外,可以看到上图中所有记录的 TTL 值是 3600000 秒,相当于 1000 小时。也就是说,每 1000 小时会去查询一次根域名服务器的列表。

三、为什么根域名服务器只有 13 台?

严格来讲,是世界上共有 13 个「IPv4协议」的根域名服务器,而 IPv6的根节点不止 13 个。

注意,这 13 个并不是表示背后只有 13 台真正的物理服务器,这 13 个对应的是 13 个 IP 地址,对应了 A-M 13 个编号。通过任播(Anycast)技术,编号相同的根服务器使用同一个 IP(类似一个集群)。

任播最初由RFC1546提出,主要用在 DNS 根服务器上,具体的解释如下:

        任播是指在IP网络上通过一个IP地址标识一组提供特定服务的主机,服务访问方并不关心提供服务具体是哪一台主机提供的,访问该地址的报文可以被IP网络路由到“最近”的一个(最好也只是一个,别送到多个)服务器上。这里“最近”可以是指路由器跳数、服务器负载、服务器吞吐量、客户和服务器之间的往返时间( RTT,round trip time )、链路的可用带宽等特征值。

为什么只有 13 个呢?

前面我提到,查询根域名服务器的 IP 列表使用的传输协议是 UDP。

当 UDP 包大小超过 MTU 时,就会在 IP 层进行分片,但是只有第一片有 UDP 头部字段(意味着包含有端口号),由于其它分片没有 UDP 头部字段(意味着没有端口号号),能否通过防火墙则完全看防火墙的脸色,因为防火墙可能会检查端口号。

所以,最好的通信效果就是避免 UDP 包大小超过 MTU 大小,防止在 IP 层发生分片。

Internet 大多数网络接口MTU >= 512,所以RFC1035 规定了 DNS 报文要求被控制在 512 字节之内

一个查询根域名服务器信息的 DNS 报文要能装下所有的根域名服务节点基本信息,因为 512个字节有限,所以根域名服务节点当然要限制住了。

具体计算细节我不做介绍了,最终算到是 512 字节大小的 DNS 报文可以装下 14 个根域名服务器节点的信息,不过当时的人觉得留一手,不全用完,所以就规定在了 13 个根域名服务器。

四、根域名服务器都在国外,中国安全吗?

前面我们知道,根域名服务器共有 13 个。

其中 1 个为主根域名服务器,放置在米国,其余12个均为辅根域名服务器,其中9个放置在米国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。

可以看到,我们中国并没有一台根域名服务器,而且主根域名在米国,由 ICANN 管理。

如果米国终止 .cn 后缀的解析和申请,会不会导致我国网络瘫痪?

先说结论,这个大可不必担心。

虽说根域名服务器都在国外,但是我们中国已经有很多台「镜像的根域名服务器」了,也就是会向主根域名服务器同步数据到国内的根域名服务器,这意味着根域名服务器的常用记录,我们早就有了备份,相当于我们自己也有了根服务器。

即使米国从主根域名服务器删除了 .cn 记录,也不怕,因为我们已经维护了根域名服务器的镜像,我们自己可以控制镜像的内容,我们可以不同步关于 .cn 记录的删除。

还记得访问根域名服务器是谁吗?就是本地 DNS 服务器,而这个本地 DNS 服务器一般是由国内的网络运营商管理的,只要在我国内对根域名服务器发出的请求,其实都是由这些镜像完成的。对于中国用户来说,对根的请求,一般不会跑到米国去。

所以,国内的用户基本不受影响。不过,其他国家可能就无法访问 .cn 后缀的网站了。

PS:米国之前就做过这样的事情,将伊拉克顶级域名 .iq 的申请和解析工作终止掉,导致所有以 .iq 后缀的网站,让伊拉克从互联网消失。

根域名服务器都在国外,中国安全吗?安全相关推荐

  1. 为什么根域名服务器只有 13 台?

    今天聊个有意思的话题. 世界上共有 13 个根域名服务器,其中主根域名服务器是在美国. 那美国有没有可能通过根域名服务器掐断中国的互联网呢? 在说结论之前,我们先来了解: DNS到底是怎么工作的? 为 ...

  2. DNS协议及域名解析过程(每个域名服务器都负责管理下一级域名服务器,保证域名的唯一性)

    DNS协议 我们之前已经了解过ARP协议. 如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址). 我们都知道,TCP/ ...

  3. 域名系统中的本地域名服务器、根域名服务器、顶级域名服务器以及权限域名服务器。

    根域名服务器:是最高层次的域名服务器,也是最重要的域名服务器.所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址. 顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名 ...

  4. 中国为什么没有根域名服务器

    在读网络工程师的时候,老师曾对我说过关于根域名服务器.全世界的网络能够联系起来,能够访问不同地区的网络资源.就靠着这些DNS的域名解析.当时,我们都想中国一定要弄出一个自己的根域名服务器.对于现代化的 ...

  5. 浅说国际根域名服务器与中国电信的镜像服务器

    一.域名与其服务器 域名是互联网上人们熟悉.易记的计算机名字.域名具有唯一性,在全世界,没有重复的域名.从技术上讲,域名只是一个Internet中用于解决地址对应问题的一种方法,可以说只是一个技术名词 ...

  6. 什么是根域名服务器?

    全球共有13台根逻辑域名服务器.这13台逻辑根域名服务器中名字分别为"A"至"M",真实的根服务器在2014年1月25日的数据为386台,分布于全球各大洲. 根 ...

  7. 美国如果把根域名服务器封了,中国会从网络上消失?

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

  8. IP根域名服务器以及域名服务器对国家安全的真正意义。

    今天我们来聊聊IPv6的根域名服务器以及域名服务器对国家安全的真正意义. IPv6 去年,在中国发布<推进互联网协议第六版(IPv6)规模部署行动计划>之后,网络上又开始传播," ...

  9. 根域名服务器和对域名的查找

    名是互联网的基础设施,只要上网就会用到. 它还是一门利润丰厚的生意,所有域名每年都必须交注册费,这是很大的一笔钱. 这些钱交到了哪里?到底谁控制域名的价格?为什么有的域名注册费很贵,有的便宜?.... ...

最新文章

  1. Windows Server 2008 R2 SP1遗忘管理员密码后的解决方案
  2. abaqus中元素过度失真是什么意思_Abaqus三维多晶体脚本建模Voronoi多面体建模
  3. ASP.NET 2.0 正式版中无刷新页面(客户端回调)的开发
  4. Matplotlib实例教程 | 句子长度累积分布函数图
  5. CSS学习03之基本选择器
  6. opencv基础知识及其一些例子
  7. 电子科技大学研究生计算机与科学,2019年电子科技大学计算机科学与工程学院考研复试分数线...
  8. iOS app submission : missing 64-bit support
  9. mac连接ubuntu,tomcat乱码
  10. 【图像加密】基于matlab仿射变换数字图象置乱【含Matlab源码 1171期】
  11. 关于Adaper的相关用法
  12. Ubuntu16.04刷机+装驱动
  13. Maven系列第4篇:仓库详解
  14. 树莓派 android10,树莓派4使用AndroidTV 10系统
  15. 【转】ADW_Launcher
  16. android 桌面 弹出窗口,android – 弹出窗口在来电屏幕上像truecalle...
  17. mysql容灾方案_mysql 容灾 灾备 备份
  18. 2022中式烹调师(高级)考试题库及答案
  19. C++每日一课(八)
  20. python程序函数执行时间

热门文章

  1. JAVA读文件类之FileReader/InputStreamReader/BufferedReader
  2. 随机变量不相关却不一定独立
  3. vue 判断两对象是否一致_判断两个对象的值是否相等
  4. 国外服务器不能打开国内网站是什么问题?
  5. Eclipse中添加文档注释快捷键
  6. 复姓宇文,全国只有3万人,我们找你好久了,你是那一个吗?
  7. 一幅长文细学华为MRS大数据开发(四)——HBase
  8. 论信息系统项目的需求管理
  9. 线段树优化建图详解——区间连边之技巧,吊打紫题之利器
  10. 扫盲啦!!!回囙囜囝回囟因囡団囤囥囦囧囨囩囱囫回囮国困囱囲図囵囶囷囸囹