为什么我们需要IPv6?

网络工程 ipv4 ip ipv6 IP地址
2021-07-11 13:28:03

这将是一种新手问题,但我不太确定为什么我们真的需要 IPv6。AFAIK,故事如下:

在过去,当计算机并不充足时,32 位 IP 地址对每个人来说都足够了。在这些时候,子网掩码是隐式的。然后计算机的数量增加了,32 位开始变得不够用。

所以子网掩码开始变得明确。从本质上讲,IP 地址的大小已经增加。

我的问题是,继续使用子网掩码寻址有什么缺点?例如当它们也变得不足时,我们不能继续使用“子网-子网掩码”等吗?

我知道它比原始 IPv4 消耗更多空间(并且可能与使用 IPv6 没有太大区别)但是显式子网掩码不是一个足够的解决方案吗?如果不是,为什么它们是一个不充分的解决方案?

4个回答

这里有两件事变得混乱:

  • 有类寻址与 CIDR
  • 伪装/NA​​T

从有类寻址到无类域间路由 (CIDR) 是一项改进,它使向 ISP 和组织的地址分配更加高效,从而也延长了 IPv4 的生命周期。在课堂演讲中,组织将获得以下其中一项:

  • A 类网络(CIDR 术语中的 /8,网络掩码为 255.0.0.0)
  • B 类网络(CIDR 术语中的 /16,网络掩码为 255.255.0.0)
  • C 类网络(CIDR 术语中的 /24,网络掩码为 255.255.255.0)

所有这些类都是从固定范围内分配的。A 类包含第一个数字在 1 到 126 之间的所有地址,B 类从 128 到 191,C 类从 192 到 223。组织之间的路由将所有这些硬编码到协议中。

在组织需要例如 4000 个地址的分类时代,有两种选择:给它们 16 个 C 类块(16 x 256 = 4096 个地址)或给它们一个 B 类块(65536 个地址)。由于大小是硬编码的,因此 16 个单独的 C 类块都必须单独路由。许多人得到了一个 B 类块,其中包含的地址比他们实际需要的多得多。即使只需要几十万个,许多大型组织也会获得 A 类区块(16,777,216 个地址)。这浪费了很多地址。

CIDR 消除了这些限制。A、B 和 C 类不再存在(自 ±1993 年以来)并且组织之间的路由可以发生在任何前缀长度上(尽管通常不接受小于 /24 的东西,以防止大量小块增加路由表的大小)。因此,从那时起就可以路由不同大小的块,并从地址空间的任何先前类 ABC 部分分配它们。需要 4000 个地址的组织可以获得 /20,即 4096 个地址。

子网划分意味着将分配的地址块划分为更小的块。然后可以在物理网络等上配置更小的块。它不会神奇地创建更多地址。这仅意味着您可以根据您想如何使用它来分配您的分配。

创建更多地址的是伪装,也就是众所周知的 NAT(网络地址转换)。通过 NAT,具有单个公共地址的一台设备为整个网络提供连接,在其后面具有私有(内部)地址。本地网络上的每个设备都认为它已连接到 Internet,即使实际上并非如此。NAT 路由器会查看出站流量,并用自己的公共地址替换本地设备的私有地址,伪装成数据包的来源(这就是为什么它也被称为伪装)。它记住它进行了哪些转换,以便对于返回的任何回复,它可以放回本地设备的原始私有地址。这通常被认为是一种黑客行为,但它奏效了,它允许许多设备在使用较少的公共地址的情况下将流量发送到互联网。

可以有多个 NAT 设备相互连接。例如,这是由没有足够公共 IPv4 地址的 ISP 完成的。ISP 有一些巨大的 NAT 路由器,这些路由器有一些公共 IPv4 地址。然后使用特殊范围的 IPv4 地址(100.64.0.0/10尽管有时他们也使用普通的私有地址)作为他们的外部地址来连接客户。然后,客户再次拥有 NAT 路由器,该路由器使用他们在外部获得的单个地址并执行 NAT 以连接使用普通私有地址的整个内部网络。

但是,使用 NAT 路由器有一些缺点:

  • 传入连接:NAT 路由器后面的设备只能进行出站连接,因为它们没有自己的“真实”地址来接受传入连接
  • 端口转发:通过端口转发,这通常不会成为一个问题,其中路由的 NAT 将其公共地址上的一些 UDP 和/或 TCP 端口专用于内部设备。然后,NAT 路由器可以将这些端口上的传入流量转发到该内部设备。这需要用户在 NAT 路由器上配置这些转发
  • 运营商级 NAT:是 ISP 执行 NAT 的地方。你将无法配置任何端口转发,因此接受任何传入连接变得不可能(比特洪流,拥有自己的 VPN/网络/邮件/等服务器)
  • 命运分享:外界只看到一个设备:那个NAT路由器。因此,NAT 路由器后面的所有设备都有其命运。如果 NAT 路由器后面的一个设备行为不端,则 NAT 路由器的地址最终会出现在黑名单中,从而也会阻止所有其他内部设备
  • 冗余:NAT 路由器必须记住哪些内部设备正在通过它进行通信,以便它可以将回复发送到正确的设备。因此,一组用户的所有流量都必须通过单个 NAT 路由器。普通路由器不需要记住任何东西,因此很容易构建冗余路由。使用 NAT 则不然。
  • 单点故障:当 NAT 路由器出现故障时,它会忘记所有现有的通信,因此所有通过它的现有连接都将中断
  • 大型中央 NAT 路由器价格昂贵

如您所见,CIDR 和 NAT 已将 IPv4 的生命周期延长了很多年。但是 CIDR 不能创建更多地址,只能更有效地分配现有地址。NAT 确实有效,但仅适用于出站流量,与公共地址相比,具有更高的性能和稳定性风险,以及更少的功能。

这就是发明 IPv6 的原因:每个设备都有很多地址和公共地址。因此,您的设备(或其前面的防火墙)可以自行决定要接受哪些入站连接。如果您想运行自己的邮件服务器,这是可能的,并且如果您不希望任何来自外部的人连接到您:那也是可能的 :) IPv6 为您提供了在引入 NAT 之前您曾经拥有的选项,并且如果您愿意,您可以自由使用它们。

Internet 协议 (IP) 旨在提供端到端连接。

IPv4 地址的 32 位仅允许大约 43 亿个唯一地址。然后你必须为多播之类的东西减去一堆地址,有很多数学表明你永远不能使用子网的全部容量,所以有很多浪费的地址。

可用 IPv4 地址的人数大约是可用 IPv4 地址的两倍,其中许多人使用多个 IP 地址。这甚至不涉及 IP 地址的业务需求。

使用 NAT 来满足 IP 地址饥饿打破了 IP 端到端连接范式。暴露足够多的公共 IP 地址变得很困难。想一想,作为只有一个公共 IP 地址的家庭用户,如果您希望允许多个设备使用相同的传输协议和端口,例如两个 Web 服务器,按照惯例使用 TCP 端口 80,您会怎么做?从公共 Internet 访问。您可以将公共 IP 地址上的 TCP 端口 80 端口转发到一个私有 IP 地址,但是另一台 Web 服务器呢?这种情况需要您跳过一些典型家庭用户无法处理的问题。现在,想想物联网(IoT) 您可能拥有数百或数千个设备(灯泡、恒温器、温度计、雨量计和自动喷水灭火系统、警报传感器、电器、车库门开启器、娱乐系统、宠物项圈,还有谁知道还有什么) ,其中一些或全部要使用相同的特定传输协议和端口。现在,想想拥有 IP 地址的企业需要为其客户、供应商和合作伙伴提供连接。

IP 是为端到端连接而设计的,因此无论有多少不同的主机使用相同的传输协议和端口,它们都由其 IP 地址唯一标识。NAT 打破了这一点,它以从未打算限制的方式限制了 IP。NAT 的创建只是为了延长 IPv4 的生命周期,直到可以采用下一个 IP 版本 (IPv6)。

IPv6 提供了足够的公共地址来恢复原始 IP 范式。IPv6 目前有 1/8 的 IPv6 地址在整个 IPv6 地址块中预留给全球可路由的 IPv6 地址。假设在 2100 年地球上有 170 亿人(并非不现实),当前的全球 IPv6 地址范围(IPv6 地址块的 1/8)为这 170 亿人中的每一个人提供了超过 2000 /48 个网络。每个 /48 网络有 65,536 个 /64 子网,每个子网有 18,446,744,073,709,551,616 个地址。

简而言之,没有更多可用的 IPv4 地址。所有(或几乎所有)可用的 IPv4 地址都已分配。IP 设备、笔记本电脑、手机、平板电脑、相机、安全设备等的爆炸式增长,已经耗尽了所有的地址空间。

首先,可变子网掩码技术确实变得不够用了。这就是为什么人们发明了网络地址转换技术,您可以在其中使用公共 IP 来屏蔽多个私有 IP。即使使用这种技术,我们也几乎没有可分配的 IP。NAT 还打破了 Internet 的一项创始原则:端到端原则。

因此,使用 IPv6 的主要原因是每个人都可以根据需要使用尽可能多的公共 IP,并且使用 NAT 的所有复杂性都将消失。

IPv6 还提供了其他我不会详细介绍的功能:IP 级别的强制安全性、启用无状态地址自动配置、不再只广播多播并通过简化报头提供更高效的路由器处理。同样在这个移动设备时代,它以移动 IPv6 的形式明确支持移动性。

关于您使用子网/子网掩码的建议:这听起来不可行,因为它的实现会破坏所有现有的应用程序,而且它不是很优雅。如果你必须改变事情,为什么不去做一些新的和深思熟虑的事情。