公共 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.1
、127.0.0.2
、127.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 地址的总数是多少?的主要内容,如果未能解决你的问题,请参考以下文章