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

63

是的,我想知道公共IPv4地址空间中可能的IP总数。

我不确定在哪里可以获得所有IP地址范围的整洁列表,所以有人能指点我一个资源让我自己计算或者为我计算出总的IP数量吗?

此外,我的意思是公共IP,不包括保留或私有IP地址范围。只计算能够通过互联网访问的IP。

5个回答

114

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

这篇文章中有太多地址了。


29
IPv4地址解决了寻址问题,但没有人解决“地址”问题。 - Lodewijk
7
根据RFC 6598,这已更新为592,708,864个保留地址,因此共有3,702,258,432个公共地址。请注意,不进行任何解释和添加额外内容。 - wi1
1
你说总共有4,294,967,296个“IP地址”...实际上,有4,294,967,296个“可能的组合”。2^32是正确的乘法规则,答案正确,只是使用了俚语描述。“IP地址”指的是可能存在的地址,而不仅仅是理论上可能的数学组合。除非我错了?有些地址不是被禁止了吗?(见下文)@Marko - oemb1905
4
思考一下:其中1600万个地址被分配给环回接口,也就是说我们有1600万种方式可以寻址本地主机。从127.0.0.1开始,一直到127.255.255.254。我一直在尝试搜索为什么会这样,但是到目前为止我还没有找到一个令人信服的用例来解释这种浪费! - daparic
@ifelsemonkey 我的 Debian 服务器上有 127.0.0.1127.0.0.2127.0.0.3,有时也会使用 127.0.0.4,这些都是在监听相同端口的不同 Web 服务器。我认为它还会用 127.0.1.1 来做一些事情。 - ctrl-alt-delor
显示剩余3条评论

34

对于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地址。

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

 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

维基百科有完整的细节,这个链接则包含IPv6的详细信息。


2
因为添加了关于IPv6的有趣注释而点赞,因为没有回答关于保留IP数量的问题而取消了点赞。 - Bradley Flood
点赞添加关于IPv6的有趣注释。有用的答案,谢谢! - Davide Cannizzo

18

对于马尔科回答中的一个小错误进行更正:由于以下事实,某些普通计算方法无法直接生成确切的数字: 有效的IP地址也不应以二进制0或1序列结尾,这些序列与子网掩码中的零序列具有相同的长度。因此最终答案实际取决于子网总数(马尔科的答案- 2 * 子网总数)。


3
匿名者说:实际上Marko的回答对于提出的问题是正确的。你正在回答一个并没有被问到的问题。原始问题并没有提及有效的IP地址。以0结尾的地址是用作网络地址的有效地址。以1结尾的地址是有效的主机地址。以255结尾的地址是有效的广播地址但不是有效的主机地址。你会惊讶地发现,虽然大多数TCP/IP实现会在您试图将广播或网络地址添加到IP主机时抛出错误,但有一个供应商允许您这样做。我从来没有弄清楚为什么。 - Andriy K
1
以255结尾的地址并不总是有效的广播地址,同样地,主机地址也可以以255结尾。这完全取决于您的网络掩码。 - Gizmo
@AndriyK “另外,我所说的公共IP并不包括保留的...只是那些可以通过互联网访问的IP。” 所以这个答案是正确的。 - ctrl-alt-delor
这完全是错误的。公共网络甚至不需要具有网络或广播地址的要求。我已经成功地在公共IPv4网络的.0上运行服务。 - ximaera

3

公网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地址范围

该存储库中的Dockerfile将排除不可用的IP地址,遵循维基百科文章的指南:https://en.wikipedia.org/wiki/Reserved_IP_addresses

MaxMind Geo IP

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


2
请在您自己的项目链接上放置明确的免责声明;免责声明:这是我创建的项目或类似内容。 - Martijn Pieters
1
你知道在191.0.0.0/8之上有相当多的有效公共IP地址。比如195.0.0.1。 - Nordlys Jeger

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接