中国一共有多少IP地址?(非常详细)

📅 2026/7/8 8:04:47
中国一共有多少IP地址?(非常详细)
为了照顾初学者咱们先来科普一下 IP 地址的概念。IP 地址是 Internet Protocol Address 的缩写译为“网际协议地址”。现阶段 IP 地址有两个版本分别是 IPv4 和 IPv6。目前大部分软件仍在使用 IPv4 地址但是 IPv6 地址也正在被人们接受尤其是在教育网中IPv6 已经大量使用。IPv4 地址由 32 位二进制数组成IPv4 地址一共约有 43 亿个这看似是一个很大的数字但对于全世界 70 多亿人而言IPv4 地址简直少得可怜。其实早在 2021 年 IPv4 地址就已经枯竭了尽管人们想出了各种方法来缓解 IPv4 资源枯竭的颓势但 IPv4 资源耗尽已经是一个不争的事实。IPv6 地址的诞生就是为了彻底解决 IPv4 资源耗尽的问题。IPv6 地址由 128 位二进制数组成数量庞大到可以为地球上的每一粒沙子都分配一个 IPv6 地址。在不久的将来IPv6 会取代 IPv4后者终有一天会埋没在历史的长河里。在因特网上进行通信时必须要知道对方的 IP 地址发送的数据包中也会附带通信双方的 IP 地址。数据包发送到路由器以后路由器会根据 IP 地址找到对方的地理位置完成一次数据的传递。中国有多少 IP 地址这里我们要讨论的是资源枯竭的 IPv4 地址简称 IP 地址而不是 IPv6 地址。全世界的 IP 地址由五大区域性机构管理咱们国家的 IP 地址由亚太地区的 APNIC亚太互联网络信息中心负责分配管理。图1世界五大互联网注册机构五大 IP 地址管理机构ARIN美洲互联网地址注册管理机构LACNIC拉丁美洲和加勒比地区互联网地址注册管理机构RIPE NCC欧洲 IP 资源网络协调中心AFRINIC非洲互联网信息中心APNIC亚太互联网信息中心。APNIC 官网上有一份公开的文档记录着 APNIC 管理分配的所有 IP 地址信息此文档每天都会更新通过下面这个 URL 可以找到它http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest打开文档后可以看到罗列着的大量 IP 地址信息比如...... apnic|AU|ipv4|1.0.0.0|256|20110811|assigned apnic|CN|ipv4|1.0.1.0|256|20110414|allocated apnic|CN|ipv4|1.0.2.0|512|20110414|allocated apnic|AU|ipv4|1.0.4.0|1024|20110412|allocated apnic|CN|ipv4|1.0.8.0|2048|20110412|allocated ......每一行用|分隔了 7 列信息它们的含义分别是注册机构比如 apnic、arin 等。国家代码ISO-3166 定义的两位国家或地区代码比如中国大陆为 CN中国台湾为 TW中国香港为 HK中国澳门为 MO。类型有 asn自治系统编号、ipv4 和 ipv6 三种这里我们只关注 ipv4 地址。起始位第一个 asn 编号或者 ip 地址。长度从起始位开始申请分配的编号或地址数量。分配日期国家或地区向 APNIC 申请的日期。状态有 allocated 和 assigned 两种都是已分配的意思allocated 表示已将 IP 地址范围分配给某个互联网注册中心由该注册中心进行分配管理assigned 表示将 IP 地址范围分配给特定的 ISP 组织比如中国电信、联通、移动等或者用户。统计中国一共有多少个 IP 地址就需要从文档将类型为 ipv4、国家代码为 CN、TW、HK 和 MO 的 IP 地址分配信息筛选出来然后将它们的长度叠加到一起。筛选指定的 IP 地址信息可以借助 Linux 环境中的 cat 命令实现。以中国大陆为例将文档完整地下载下来然后执行如下命令cat delegated-apnic-latest | grep CN|ipv4 cn_ipv4.txt执行后会生成一个名为 cn_ipv4.txt 的文件内部全部都是国家代码为 CN、类型为 ipv4 的 IP 地址信息总共有 8626 条图2中国大陆 IP 地址信息也就是说截止到 2022 年 6 月 13 日中国大陆一共分配了 8626 个 IP 网段。在此基础上统计这些网段中包含的 IP 地址的数量可以编写一个 python 脚本来实现import sys total 0 with open(sys.argv[1]) as fp: while True: line fp.readline() if line: fields line.split(|) num int(fields[4]) total num else: break print(total: %d % total)执行此 Python 脚本程序将 cn_ipv4.txt 作为参数传入执行结果为$ python3 cn-ipv4-num.py cn_ipv4.txt total: 343382272总共得到的 IP 地址数量是 343382272约占整个 IP 地址数量43 亿的 7.98%。采用同样的方法可以分别计算出中国台湾、香港、澳门这三个地区的 IP 地址数量分别是中国台湾35693312中国香港12570880中国澳门336640由此我们可以计算出中国一共有391983104个 IP 地址约占整个 IP 地址数量的 9.1%。总结可能有读者会问我国有 14 亿人口而且每个人可能还有手机、电脑、平板等多台网络设备区区不到 4 亿的 IP 地址怎么够分呢的确即便是给 1 个人分配 1 个 IP 地址4 亿 IP 地址也是远远不够的。为了缓解 IPv4 资源匮乏的窘境人们想出了一种方法大体上讲就是将 IP 地址分为公网 IP 和私网 IP不同局域网里的机器可以使用相同的私网 IP 地址如果局域网中的机器想访问互联网公网就必须先将私网 IP 地址转换为公网 IP 地址这种技术称为 NAT 技术。