IPv4 存在哪些问题以及我们为什么要迁移到 IPv6
在过去的 10 年左右,IPv6一直都是在 2010 年普及的。但至今尚未普及。因此,人们对 IPv6 是什么、如何使用它以及它为何不可避免还知之甚少。
IPv4 有何问题?
自1981 年RFC 791发布以来,我们一直在使用IPv4。当时,计算机体积庞大、价格昂贵且稀有。IPv4 提供了40 亿个 IP地址,与计算机数量相比,这似乎是一个巨大的数字。
不幸的是,IP 地址的使用并不合理。寻址存在差距。例如,一家公司可能有254 ( 2^8-2 ) 个地址空间,但只使用了其中的 25 个。
剩余的 229 个地址保留用于未来扩展。由于网络路由流量的方式,这些地址不能被其他人使用。因此,1981 年看似很大的数字在 2022 年实际上是很小的数字。
互联网工程任务组 ( IETF ) 在 20 世纪 90 年代初认识到了这个问题,并提出了两种解决方案:无类互联网域路由器( CIDR ) 和私有 IP地址。
在发明CIDR之前,您可以获得三种网络大小之一:24 位(16,777,214 个地址)、20 位(1,048,574 个地址)和16 位(65,534 个地址)。发明 CIDR 后,就可以将网络拆分为子网。
例如,如果您需要5 个 IP地址,您的 ISP 会为您提供一个大小为 3 位的网络,这样您就可以获得6 个 IP地址。这样您的 ISP 就可以更有效地使用地址。
私有 IP 地址允许您创建一个网络,其中网络上的每台机器都可以轻松连接到互联网上的另一台机器,但互联网上的机器很难连接回您的机器。
您的网络是私有的,而且是隐藏的。您的网络可能非常大,有 16,777,214 个地址,您可以将私有网络划分为更小的网络,以便轻松管理自己的地址。
您现在可能正在使用私有地址。检查您自己的 IP 地址:如果它在10.0.0.0 – 10.255.255.255或172.16.0.0 – 172.31.255.255或192.168.0.0 – 192.168.255.255范围内,则您使用的就是私有 IP 地址。这两个解决方案有助于防止灾难,但它们只是权宜之计,现在到了清算的时候了。
IPv4的另一个问题是 IPv4 报头的长度可变。当路由由软件完成时,这是可以接受的。但现在路由器是用硬件构建的,而用硬件处理长度可变的报头则很困难。
允许数据包发往世界各地的大型路由器在应对负载方面遇到了问题。显然,需要一种具有固定长度报头的新方案。
然而, IPv4的另一个问题是,在分配地址时,互联网是美国的发明。世界其他地区的 IP 地址是分散的。需要一种方案来允许地址按地理位置进行一定程度的聚合,以便使路由表变得更小。
IPv4 的另一个问题(这可能听起来令人惊讶)是它很难配置,也很难更改。您可能不了解这一点,因为路由器会为您处理所有这些细节。但您的 ISP 的问题让他们抓狂不已。
所有这些问题都将在下一版本的互联网中得到考虑。
IPv6 功能
1995 年 12 月,IETF公布了下一代 IP。新版本被称为IPv6,因为数字 5 被错误地分配给了其他东西。
其中包括 IPv6 的一些功能。
- 128 位地址(3.402823669×10³⁸ 个地址)
- 逻辑聚合地址的方案
- 固定长度标头
- 用于自动配置和重新配置网络的协议。
让我们逐一看一下这些功能:
IPv6 地址
大家对IPv6的第一印象就是地址数量非常庞大。为什么会有这么多呢?答案是,设计者担心地址组织效率低下,因此有太多可用地址,我们无法高效地分配它们以实现其他目标。
因此,如果您想构建自己的 IPv6 网络,您的 ISP 很可能会为您提供一个64 位的网络(1.844674407×10¹⁹ 地址),并让您根据自己的心意对该空间进行子网划分。
IPv6 地址聚合
由于有如此多的地址可供使用,因此可以稀疏地分配地址空间,以便高效地路由数据包。因此,您的 ISP 获得80 位的网络空间。在这 80 位中,16 位用于 ISP 的子网,64 位用于客户的网络。因此,ISP 可以拥有 65,534 个网络。
但是,该地址分配并不是一成不变的,如果 ISP 想要更小的网络,它可以这样做(尽管 ISP 可能只是要求另外 80 位的空间)。
高 48 位被进一步划分,以便彼此“接近”的 ISP 具有相似的网络地址范围,从而允许网络在路由表中聚合。
IPv6 固定长度报头
IPv4报头的长度可变。IPv6报头的长度始终为 40 字节。在IPv4中,额外的选项会导致报头大小增加。在 IPv6 中,如果需要附加信息,则附加信息存储在扩展报头中,扩展报头位于 IPv6 报头之后,通常不由路由器处理,而是由目的地的软件处理。
IPv6 标头中的一个字段是流。流是一个伪随机创建的20位数,它使路由器更容易路由数据包。如果数据包有流,则路由器可以使用该流号作为表的索引,这很快,而不是表查找,这很慢。此功能使 IPv6非常易于路由。
IPv6 自动配置
在IPv6中,当一台机器首次启动时,它会检查本地网络,看看是否有其他机器正在使用其地址。如果该地址未被使用,则该机器接下来会在本地网络上寻找 IPv6 路由器。
如果找到路由器,它会向路由器请求一个 IPv6 地址。现在,机器已设置好并准备好在互联网上通信 - 它有自己的 IP 地址和一个默认路由器。
如果路由器出现故障,网络上的机器将检测到问题并重复寻找 IPv6 路由器的过程,以找到备用路由器。这在 IPv4 中实际上很难做到。
同样,如果路由器想要更改其网络上的寻址方案,它也可以这样做。机器会不时查询路由器并自动更改其地址。路由器将同时支持旧地址和新地址,直到所有机器都切换到新配置。
IPv6 自动配置并不是一个完整的解决方案。为了有效地使用互联网,机器还需要其他一些东西:名称服务器、时间服务器,也许还有文件服务器。
因此,dhcp6的作用与 dhcp 相同,只是因为机器在可路由状态下启动,所以一个 dhcp 守护进程可以为大量网络提供服务。
IPv6 会取代 IPv4 吗?
那么,如果 IPv6 比 IPv4 好很多,为什么没有得到更广泛的采用(截至2023 年 3 月,谷歌估计其 IPv6 流量约占其总流量的39-43%)?
基本问题是先有鸡还是先有蛋?运行服务器的人希望服务器尽可能广泛可用,这意味着它必须有一个IPv4地址。
它也可以有一个 IPv6 地址,但很少有人会使用它,而且你必须稍微改变你的软件来适应 IPv6。此外,许多家庭网络路由器不支持 IPv6。
许多 ISP 不支持 IPv6。我向我的 ISP 询问了这个问题,他们告诉我,只要客户提出要求,他们就会提供。所以我问有多少客户提出过要求。一个,包括我在内。
相比之下,所有主流操作系统,Windows、OS X 和 Linux 都“开箱即用”地支持 IPv6,而且已经支持多年。操作系统甚至有软件允许 IPv6 数据包在 IPv4 中“隧道化”,直到 IPv6 数据包可以从周围的 IPv4 数据包中移除并继续发送。
结论
IPv4长期以来为我们提供了良好的服务。IPv4 存在一些局限性,这些局限性将在不久的将来带来难以克服的问题。
IPv6将通过改变分配地址的策略、改进以简化数据包的路由以及使机器在首次加入网络时更容易配置来解决这些问题。
然而,IPv6 的接受和使用一直进展缓慢,因为更改既困难又昂贵。好消息是所有操作系统都支持 IPv6,因此当您准备进行更改时,您的计算机几乎不需要费力即可转换为新方案。