公共 IPv4 地址的总数是多少?

Posted

技术标签:

【中文标题】公共 IPv4 地址的总数是多少?【英文标题】:What is the total amount of public IPv4 addresses? 【发布时间】:2011-01-27 02:06:10 【问题描述】:

是的,我需要知道公共 IPv4 空间中可能的 IP 总数。

我什至不确定从哪里获得所有 IP 地址范围的简洁列表,所以有人可以指点我一个资源来自己计算或为我计算 IP 总数吗?

另外,我所说的公共 IP 是指不包括保留或私有范围的 IP 地址。只有可以通过互联网访问的 IP 地址。

【问题讨论】:

【参考方案1】:

根据Reserved IP addresses,有 588,514,304 个保留地址,由于总共有 4,294,967,296 (2^32) 个 IPv4 地址,因此有 3,706,452,992 个公共地址。

而且这篇文章中的地址太多了。

【讨论】:

IPv4 地址解决了寻址问题,但没有人解决 /addresses/ 问题。 由于 RFC 6598,这已更新为 592、708、864 个保留地址,从而产生 3,702,258,432 个公共地址 您说有 4,294,967,296 个“IP 地址......总共”......相反,有 4,294,967,296 个“可能的组合”。每个乘法规则 2^32 是正确的,答案正确,只是使用了俚语描述。 “IP 地址”是指可能的和现有的地址,而不仅仅是理论上可能的数学组合。除非我错了?有些不是被禁止的吗? (见下文)@Marko 这里有一点需要思考:这些地址中有 1600 万个分配给了环回。也就是说,我们有 1600 万种方式来寻址 localhost。从 127.0.0.1、127.0.0.2 到 127.255.255.254。我一直在谷歌上搜索试图找出原因,但到目前为止,我还没有读到关于这种惊人浪费的令人信服的用例! @ifelsemonkey 我有127.0.0.1127.0.0.2127.0.0.3,有时127.0.0.4 在我的debian 机器上使用,各种Web 服务器都在侦听相同的端口。我认为它也使用127.0.1.1 做某事。【参考方案2】:

https://www.ripe.net/internet-coordination/press-centre/understanding-ip-addressing

对于 IPv4,此池大小为 32 位 (2³²),包含 4,294,967,296 个 IPv4 地址。

在 IPv6 的情况下

IPv6 地址空间大小为 128 位 (2¹²⁸),包含 340,282,366,920,938,463,463,374,607,431,768,211,456 个 IPv6 地址。

包括保留 IP

 Reserved address blocks
 Range  Description Reference

 0.0.0.0/8  Current network (only valid as source address)  RFC 6890
 10.0.0.0/8 Private network RFC 1918
 100.64.0.0/10  Shared Address Space    RFC 6598
 127.0.0.0/8    Loopback    RFC 6890
 169.254.0.0/16 Link-local  RFC 3927
 172.16.0.0/12  Private network RFC 1918
 192.0.0.0/24   IETF Protocol Assignments   RFC 6890
 192.0.2.0/24   TEST-NET-1, documentation and examples  RFC 5737
 192.88.99.0/24 IPv6 to IPv4 relay (includes 2002::/16) RFC 3068
 192.168.0.0/16 Private network RFC 1918
 198.18.0.0/15  Network benchmark tests RFC 2544
 198.51.100.0/24    TEST-NET-2, documentation and examples  RFC 5737
 203.0.113.0/24 TEST-NET-3, documentation and examples  RFC 5737
 224.0.0.0/4    IP multicast (former Class D network)   RFC 5771
 240.0.0.0/4    Reserved (former Class E network)   RFC 1700
 255.255.255.255    Broadcast   RFC 919

wiki 有完整的详细信息 this 有 IPv6 的详细信息。

【讨论】:

赞成在 IPv6 上添加有趣的注释,删除反对关于保留 IP 数量的 OP 问题。 赞成在 IPv6 上添加有趣的注释。有用的答案,谢谢!【参考方案3】:

只是对 Marko 答案的一个小修正:由于下一个事实,无法直接从一些一般计算中得出确切的数字: 有效的 IP 地址也不应以与子网掩码中的零序列长度相同的二进制 0 或 1 序列结尾。所以最终的答案真的取决于子网的总数(Marko 的答案 - 2 * 子网总数)。

【讨论】:

来自匿名:实际上,Marko 的回答对于所提出的问题是正确的。你正在回答一个没有被问到的问题。最初的问题没有提到有效的 IP 地址。以 0 结尾的地址是网络地址的有效地址。以 1 结尾的地址是有效的主机地址。以 255 结尾的地址是有效的广播地址,但不是有效的主机地址。您会惊讶地发现,如果您尝试向 IP 主机添加广播或网络地址,大多数 TCP/IP 实现会抛出错误,但有一个供应商会让您这样做。我一直不明白为什么。 以 255 结尾的地址并不总是有效的广播地址,主机地址也可以以 255 结尾。这完全取决于您的网络掩码 @AndriyK “另外,我的意思是公共 IP 不算保留……只有那些可以通过互联网访问的 IP。 ” 所以这个答案是正确的。 这是完全错误的。公共网络甚至不需要网络或广播地址。我已经在公共 IPv4 网络的 .0 上成功运行服务。【参考方案4】:

公共 IP 地址

https://github.com/stephenlb/geo-ip 将生成一个有效 IP 公共地址列表,包括地区。

'1.0.0.0/8''191.0.0.0/8' 是有效的公共 IP 地址范围,不包括保留的私有 IP 地址,如下所示:

import iptools
## Private IP Addresses
private_ips = iptools.IpRangeList(
    '0.0.0.0/8',      '10.0.0.0/8',     '100.64.0.0/10', '127.0.0.0/8',
    '169.254.0.0/16', '172.16.0.0/12',  '192.0.0.0/24',  '192.0.2.0/24',
    '192.88.99.0/24', '192.168.0.0/16', '198.18.0.0/15', '198.51.100.0/24',
    '203.0.113.0/24', '224.0.0.0/4',    '240.0.0.0/4',   '255.255.255.255/32'
)

IP 生成器

生成 IP 地址和相关地理信息的 JSON 转储。 请注意,有效的公共 IP 地址范围是 从'1.0.0.0/8''191.0.0.0/8' 不包括保留 本自述文件下方显示的专用 IP 地址范围。

docker build -t geo-ip .
docker run -e IPRANGE='54.0.0.0/30' geo-ip               ## a few IPs
docker run -e IPRANGE='54.0.0.0/26' geo-ip               ## a few more IPs
docker run -e IPRANGE='54.0.0.0/16' geo-ip               ## a lot more IPs
docker run -e IPRANGE='0.0.0.0/0'   geo-ip               ## ALL IPs ( slooooowwwwww )
docker run -e IPRANGE='0.0.0.0/0'   geo-ip > geo-ip.json ## ALL IPs saved to JSON File
docker run geo-ip 

扫描所有有效公共地址的速度更快的选项:

for i in $(seq 1 191); do \
    docker run -e IPRANGE="$i.0.0.0/8" geo-ip; \
    sleep 1; \ 
done

这会将少于 4,228,250,625 个 JSON 行打印到 STDOUT。 以下是其中一行的示例:

"city": "Palo Alto", "ip": "0.0.0.0", "longitude": -122.1274,
 "continent": "North America", "continent_code": "NA",
 "state": "California", "country": "United States", "latitude": 37.418,
 "iso_code": "US", "state_code": "CA", "aso": "PubNub",
 "asn": "11404", "zip_code": "94107"

私有和保留 IP 范围

上面 repo 中的 dockerfile 将排除不可用的 IP 地址 按照***文章的指南: https://en.wikipedia.org/wiki/Reserved_IP_addresses

MaxMind 地理 IP

dockerfile 导入https://www.maxmind.com/en/home提供的免费公共数据库

【讨论】:

请在您自己的项目链接上放置明确的免责声明; 免责声明:这是我创建的项目或类似的。 你知道191.0.0.0/8以上的有效公网IP地址相当多。例如 195.0.0.1。【参考方案5】:

36.81 亿是目前 2020 年的总数。

来源:https://blog.apnic.net/2020/01/21/addressing-2019/

【讨论】:

以上是关于公共 IPv4 地址的总数是多少?的主要内容,如果未能解决你的问题,请参考以下文章

你知道中国大陆一共有多少IPv4地址吗?

如何使用ip地址和IPv4Mask获取IP地址范围是多少

IPV4的地址是如何分类的?网络号的范围分别是多少?

ipv6的地址总长度是多少?

全世界一共有多少个IP地址?

如图一个网卡为啥有两个ip4地址?