这个问题看似简单,但有足够多的极端情况,我不相信自己有能力计算它。可能用作单独目的地的有效 IPv4 地址的确切数量是多少?换句话说,2^32 减去保留块、多播地址、私有网络等。
更新:MK 的回答非常好,但是...假设最大程度地有效使用 CIDR,那么上限如何?
答案1
二十年前,在 CIDR 变得普遍之前,这个问题回答起来会比较容易。
我假设你所说的“有效”是指互联网上常见的路由器配置将代表有效端点主机的东西。完全有可能运行与互联网毫无关系的 IPv4 网络,在这种情况下,许多关于公共互联网上地址空间分配的假设将不再成立。
地址空间的某些部分很简单。我们有 2^32可能的地址,从中我们可以减去旧的 E 类(第一个八位字节 240-255)、RFC 1918 空间(10/8、172.16/12、192.168/16)、为各种目的保留的范围(100.64/10、127/8、169.254/16、...)等等。还有一些您在公共互联网上极不可能遇到的网络块,例如 AMPRNET(网络块 44/8),但它们本身并不是保留的。
然而,这实际上并没有给我们答案。目前,IPv4 分配是通过 CIDR 进行的,这意味着两个邻近的网络块可能具有完全不同的网络掩码。完全有可能存在像 10.0.127.240/28 和 10.0.128.0/17 这样的子网坐在一起并且属于相同的上游分配,例如 10.0/9。(是的,这是 RFC 1918 空间,但那只是为了避免我意外地命名某人的真实的网络。)
理想情况下,16 个相邻的 /28 块需要总计 1 /24 的地址空间,因此您可能认为它允许的主机数量与单个 /24 相同。但事实并非如此;每个 /28 都有自己的网络和广播地址,而 /24 只有一组这样的地址。因此,从某种意义上说,您“浪费”了额外的 30 个 IP 地址(16 个网络地址和 16 个广播地址,而不是每个地址一个)。/28 块组允许寻址总计 16 × 14 = 224 个主机,而单个 /24 允许寻址 254 个主机。(为简单起见,我将子网外围路由器视为子网上的主机,但在现实生活中,这是每个子网的另一个必需分配。)子网分配越小,这种影响就越明显。是否要切出 /29、/28、/24 甚至 /20 是上游 ISP 做出的商业选择,基于客户的明确需求,也可能取决于客户支付地址空间的能力和意愿。十多年前,我曾为一家我曾工作过的公司发送了一份 IPv4 分配申请,即使在那时,获得任何大于 /28 的地址都是不是琐碎的。
归根结底,无法准确计算互联网上可寻址主机的最大数量,因为即使我们枚举并考虑所有保留的 IP 地址范围,我们仍然需要知道子网分配大小,以便解释网络和广播地址的不同损失量。在 CIDR 之前,这是可以知道的;A 类是 /8,B 类是 /16,C 类是 /24。有了 CIDR,就不能再做出这样的假设了。