今天聊个有意思的话题。

世界上共有 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 后缀的网站,让伊拉克从互联网消失。

为什么根域名服务器只有 13 台?相关推荐

  1. 13台根域名服务器的维护费用,根域名服务器只有13台吗

    之前为了做一个分享,查了很多DNS相关的信息, 发现绝大多数关于根域名服务器的数量的说法都是错的. 第一个说法是根域名服务器只有13台,首先就不止13台,现在实际上有一千多台.另一个说法是根域名只能有 ...

  2. 听说 DNS 根服务器只有13台,科学吗?

    接上一篇文章<DNS中有哪些值得学习的优秀设计> 最后遗留的两个问题. DNS基于UDP协议 • 从抓包可以看出,DNS在传输层上使用了UDP协议,那它只用UDP吗? • DNS的IPV4 ...

  3. 根域服务器物理服务器,为何根域名服务器只有13个?

    原标题:为何根域名服务器只有13个? 来自公众号:车小胖谈网络 两个月之前更新文章曾经说过,过一段时间会更新最终版.这篇文章是献给一直关注公众号的忠实读者一份福利,请尽快阅读! 熟悉DNS域名解析的同 ...

  4. 为什么 DNS 根服务器只有 13 台?给中国一台真的很难吗?

    点击关注公众号,回复"1024"获取2TB学习资源! 域名系统是最重要的互联网服务之一,没有它,我们将无法访问在线内容,甚至无法发送电子邮件.每当我们尝试连接到其他网站或在线服务时 ...

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

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

  6. 轻知 | 为什么全球只有13组根域名服务器?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由9527发表 根域名服务器是域名解析系统(DNS)中最为顶级的域名服务器,它们负责管理顶级域的权威域名服务器地址.作为互联网基础设施的 ...

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

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

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

    自从美国宣布"清洁网络"行动后,很多懂点网络的人,第一反应是,美国人会下手根域名服务器吗? 这种忧虑可不是一年两年了. 2014年6月24日的<人民日报>上引用专家发言 ...

  9. 全球为何只有13台DNS根服务器

    平时我们进行域名解析所用到的DNS服务器,是面对客户的一线服务器. DNS服务器是(Domain Name System或者Domain Name Service)域名系统或者域名服务,域名系统为In ...

最新文章

  1. java基础编程题(1)
  2. Ardino基础教程 1_让Arduino说出HelloWorld
  3. DbgView软件 查看VC++ MFC 程序的打印信息
  4. Git 使用的问题总结
  5. 实现拓扑图_20源码实现【自动寻路】 —【拓扑图】—网游城市互传最优路径算....
  6. 用php创建一相册文件_php文件创建
  7. 延期毕业,只因实验用的鱼被野猫偷吃了………
  8. 信息学奥赛一本通(1132:石头剪子布)
  9. API接口通讯参数规范(2)
  10. 知到网课教师口语艺术考试题库(含答案)
  11. ps的基础知识与教程
  12. iphone模拟器安装app
  13. Unity 知识点复习
  14. 魅族note8完美打开usb调试模式的教程
  15. PDF如何编辑,怎样替换PDF页面
  16. XCOPY与COPY
  17. 2012年10月底的家乡
  18. php任意文件删除漏洞,phpyun二次任意文件删除漏洞
  19. doom3 源代码评测 1
  20. Liunx配置yum源与本地配置yum源

热门文章

  1. esap的第四版破解
  2. Dubbo第一个程序
  3. PaddleOCR训练自己的数据集
  4. 打印机服务器 win7系统,Win7系统针式打印机设置的方法
  5. python爬虫--连接MongoDB 存数据
  6. selinux权限调试
  7. InDesign 教程:如何在帧之间流动文本?
  8. 联想 23 亿美元收购 IBM x86 服务器业务
  9. android cookbook
  10. 前端工程化实战 - 自动化构建工具