这里有两件事变得混乱:
从有类寻址到无类域间路由 (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 之前您曾经拥有的选项,并且如果您愿意,您可以自由使用它们。