前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么《流浪地球2》中根服务器如此重要?从根服务器与域名解析聊到内网穿透

为什么《流浪地球2》中根服务器如此重要?从根服务器与域名解析聊到内网穿透

作者头像
用户3147702
发布2023-02-15 11:13:43
3.2K0
发布2023-02-15 11:13:43
举报

1. 引言

春节档电影《流浪地球2》成为了全网热议的话题,作为一个程序员,对电影中描写的重启根服务器的情节非常感兴趣。电影中,在全球重启互联网时,工作人员冒着生命危险,上演了一出紧张刺激的与时间赛跑的精彩桥段,他们宁愿付出自己的生命,也要去启动位于中国北京、日本东京和美国杜勒斯的三台根服务器。

那么,什么是根服务器,启动互联网前真的必须先启动根服务器吗?又为什么要同时启动三台根服务器呢?本文,我们就来聊一聊。

2. 根服务器与域名解析

所谓的“根服务器”,全称是根域名服务器,说起域名服务器,我们首先想到的肯定是 DNS 服务器,此前我们介绍了浏览器的工作流程时有过介绍:

网络是怎样连接的(一) -- 浏览器是如何工作的

DNS 服务器缓存了域名与 IP 地址的对应关系,当客户端发起针对某个域名的网络请求时,会首先在客户端自己的域名缓存服务中查询域名对应的 IP 地址,如果没有查询到对应的记录项,就会将请求发到远程的 DNS 服务器上,DNS 服务器就会在自己的域名缓存中查询域名对应的 IP 地址,如果这台 DNS 服务器中无法查询到该域名,就会到上级 DNS 服务器上继续查询,如此往复,直到到达位于根部的根服务器,如图所示:

由此可见,根服务器对于互联网域名服务来说是非常重要的,就目前 IPv4 的域名解析来说,全球共有 13 台根服务器,是以 1 主 12 从的架构来设计的,这一台主根服务器位于,剩余 12 台辅根服务器中,有 9 台在美国,2 台在欧洲,1 台在日本。

很多人由此对电影情节做出了批评,首先,对互联网构成来说,域名并不是必须的,特别是在工业网络、小型局域网络等特殊用途内,往往并不使用域名,而是直接通过 ip 进行连接,即便使用域名,往往也是在通信的各个节点上手动维护域名与 IP 地址的关系,因此无需使用互联网中的 DNS 服务器或者根服务器。另一方面,全球有 1000 台备份有根服务器全部数据的根像服务器,可以在特殊情况下替代根服务器来使用。第三,针对互联网架构,只需启动一台根服务器就可以实现互联网的搭建,为什么电影情节中要以工作人员的生命为代价去冒死启动三台呢?

3. 电影中的根服务器

针对电影中的上述问题,在知乎平台上,《流浪地球2》的科学顾问对此进行了解答:

https://www.zhihu.com/question/580057574

在科幻电影《流浪地球2》中,背景是 IPv4 资源池已经耗尽,全球已普及 IPv6 网络,而根服务器部署的“雪人计划”得以应用,这项2015年在国际互联网名称与数字地址分配机构第53届会议上正式发布的计划中,预计在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6根服务器架设,其中中国有一台主根服务器与3台辅根服务器。

而在电影的背景设定中,位于中国北京、美国杜勒斯和日本东京的三台 IPv6 主根服务器不仅担任域名解析服务器,还担任了骨干路由器的功能,这样一来,启动互联网前,就必须至少要有一台这样的服务器启动,互联网才能够得以工作。

那么,电影中为什么要强调必须启动三台根服务器才可以呢?因为在互联网重新启动的瞬间,会有大量已经断网的计算机试图接入网络,从而造成“开机风暴”,导致根服务器由于访问量过于巨大,而发生瞬间宕机的情况,因此,在电影中的紧急情况下,经过网络专家的评估,最少启动三台兼具骨干路由器功能的根服务器就可以保证全球互联网的顺利重启。

4. IP 地址耗尽与 NAT 网络

2019年11月26日下午,欧洲 IP 资源协调中心宣布 IPv4 可用池已经全部分配完成,IPv4 地址已经耗尽。

我们都知道,任何一台设备只要想要接入互联网,必须要有一个唯一的地址作为身份的识别,它就像是一个身份证号,用来标识每一台单独的计算机。这个网络中的“身份证号”是一个 4 字节的数字,因此,它最多能够分配 4294967295 个地址。看起来,这个接近 43 亿的数字是一个非常庞大的数字,但如果我们用全世界接入互联网的设备数量来对比的话,这个数字也就显得没有多大了。

那么,既然现在 IPv4 的地址已经全部分配完了,这也就意味着除非有已经接入互联网公网的计算机放弃接入,而将分配给他的 IP 地址让出来,否则新的设备就将无法接入互联网公网,IPv6 正是来解决这一问题的,简单的来说,IPv6 将原本的 32 位身份证号,扩充到了 128 位,因此,它能够分配的地址拥有了 3.4*10^38 个,这显然就是一个天文数字了,但事实上,由于 IPv6 地址对人来说难以记忆,对设备来说,有着一系列切换的成本,因此迟迟没有得到普及,如今在绝大多数场景下, 我们仍然在使用 IPv4 地址,那么,现实生活中,我们是如何解决 IPv4 地址不足的问题的呢?这就要说到 NAT 协议了。

NAT 是 Network Address Translation 的缩写,翻译为中文就是“网络地址转换”。当一个具备 NAT 功能的路由器接入到互联网公网后,它会被分配一个公网 IP 地址,假设这个路由器是某小区网络供应商的路由器,那么,接下来小区中会有大量用户申请连接到互联网,于是,小区中每个家庭的路由器都连接到这个小区网络供应商的路由器,从而组成了一个小区局域网,这时,这个具有 NAT 功能的供应商路由器就会依次给接入小区网络的每个路由器设备分配一个 IP 地址,此后,每个家庭的路由器又会和家庭中的网络设备一起构成一个局域网,这个路由器又会给家庭中每个接入的设备分配一个 IP 地址。

你会发现,在局域网中,每个设备的 IP 地址都是 192.168 开头的,这是为什么呢?此前我们在介绍 IP 协议的时候,介绍过 5 类 IP 地址的分类:

网际协议 -- IP

其中,用于私有地址的专用网络地址就是 192.168.0.0 到 192.168.255.255。

当局域网中的某台设备要访问位于互联网公网上的某个 IP 时,在发送的传输层协议头部中, 会填写发送端与接收端的 IP 和端口,假设局域网中的设备被分配了 192.168.1.210 这个 IP,那么它就会填写在传输层协议头部的发送端 IP 字段中。当具有 NAT 功能的路由器接收到这个数据包,在转发给下一级路由器之前,会将数据包中传输层协议头部的发送端 IP 字段提取出来,然后分配一个本地端口(假设为 5050),并且维护一个 192.168.1.210 和路由器本地端口 5050 的映射关系的缓存,然后将路由器所在的 IP 与 5050 端口填写到发送端 IP 端口字段。

当接收端处理后,会通过发送端的数据包中的发送端 IP 与端口将新的数据包发送给此前的发送端,这台局域网中的路由器收到这个新的数据包后,会解析传输层协议头,发现目的端口为 5050,通过查询缓存,就可以得知需要发往内网 IP 为 192.168.1.210 的设备上,于是一次完整的通信就可以完成了。

上图描述了上述通信流程, 但区别是,路由器除了缓存有发送端 IP 外,还额外缓存了发送端端口,这就是基于 NAT 协议的改进版本:NAPT 协议,也就是 Network Address Port Transfer,网络地址端口转换。

在上述流程中,整个小区的无数设备都只需要一个外网 IP,而每个家庭又通过家庭的路由器将家庭中的所有设备组合成了一个子网。随着子网的不断建立,一个互联网公网 IP 就可以让数量可观的设备接入到互联网,从而在很大程度上解决了 IPv4 IP 地址不足的问题。

5. 内网穿透的原理

有了 NAT 协议,互联网上一层层的子网实现了与某个连接到互联网公网的设备通信的功能。但这随之带来了一个问题,那就是子网只能向外发送数据,而不能作为一个服务提供者,实现外部访问。因为当局域网外部想要发起请求时,外部虽然可能有着局域网出口路由器的设备 IP,但这台路由器的缓存上还没有你想要访问的子网 IP 和端口的信息,此时,即便你向这台位于互联网公网上的路由器发送数据,它也无法顺利转发到局域网中你想要的设备上。

那么,这个问题有办法解决吗?答案当然是有的,很多人都知道有一项技术可以解决这个问题,那就是内网穿透技术,那么这项技术的原理又是什么样的呢?

使用过花生壳等内网穿透软件的人都知道,我们首先需要在内网的设备上安装软件客户端并且启动。启动后的客户端就会主动连接位于互联网公网上的内网穿透服务器,并且定时发送数据。于是,由于内网设备向外发送了数据包,根据上一小节中的通信过程,在位于互联网公网上的路由器会将数据包的发送端 IP 和端口填写成路由器所在的 IP 以及维护有端口对应关系的路由器端口,并发送给内网穿透服务器。这样一来,内网穿透服务器就可以获取到位于互联网公网的发送端路由器及其端口,通过更新互联网域名服务供应商所提供的域名与 IP 端口的映射关系,就可以让我们能够通过域名,成功访问到位于小区内网的家庭设备了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 引言
  • 2. 根服务器与域名解析
  • 3. 电影中的根服务器
  • 4. IP 地址耗尽与 NAT 网络
  • 5. 内网穿透的原理
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档