⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 编程技术宇宙 「轩辕之风O」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

前段时间,刚购买了某某云的云服务器。因为我平时会弄个小程序,搭个网站博客之类的,所以在购买云服务器的时候,顺带申请了一个公网IP

看着申请到的IP地址,我突然想到了一个问题:不是早就说IP地址已经耗尽了吗,为什么我随便就能申请到,阿里云到底屯了多少IP地址,咱们中国总共又有多少IP地址呢?

今天要聊的话题是关于IP地址的。

IP地址

大家知道,我们现在的互联网主要还是采用的IPv4的地址,虽然我上大学那会儿就在吼IPv6了,但这么多年过去了,IPv4的地位依旧没有动摇。

IPv4的IP地址,是采用4个字节的整数来表示,学过编程的都知道,4个字节能够表示的范围是0-4294967295(无符号数)。

也就是说,全世界最多只有42.9亿个IPv4的地址。

当然,为了书写和记忆方便,我们一般不会用整数来表示,而是采用点分十进制的形式。

从0.0.0.0到255.255.255.255,分四个字节,每个字节范围是0-255。

然而,IP地址中不是所有都能拿来直接用,这42.9亿中有不少特殊用途的IP地址。

提到特殊IP地址,估计很多人都知道这三个范围的私有IP:

  • 10.0.0.0--10.255.255.255
  • 172.16.0.0--172.31.255.255
  • 192.168.0.0--192.168.255.255

实际上,除了这三个范围的IP地址,还有许多特殊用途的IP地址。网络上很多文章列举的七七八八,都不完善,完整的特殊IP地址列表,还得要去管理IP地址的IANA官网查看。

IANA

IANA,全称Internet Assigned Numbers Authority,互联网号码分配机构,管理着全球互联网中使用的IP地址、域名和许多其它参数的机构。

在它的官网中,有一个文档,包含了迄今为止,所有特殊用途的IP地址:

地址:https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml

很多人都知道127.0.0.1代表着本地回环地址,但其实回环地址不只是一个,从127.0.0.0-127.255.255.255整个16777216个地址都是回环地址,所有发往这些地址的数据包都会被loop back。

IP地址本就珍贵,这么多都作为回环地址,是不是有点浪费啊?

中国的IPv4地址数量

全球的IP地址由五大区域性机构进行管理,咱们国家的IP地址由亚太地区的APNIC分配管理。

在APNIC的官网上,也有一个公开的文档,记录了APNIC管理分配的所有IP地址信息,每日更新,可以访问下面这个地址拿到:

http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

该文件每行的格式如下:

注册机构|国家/地区代码|类型|起始地址|IP数量|分配日期|状态

咱们大陆地区的代码是CN,所以,可以通过简单的命令将大陆地区的IPv4地址分配情况筛选出来:

cat delegated-apnic-latest | grep "CN|ipv4" > cn_ipv4.txt

可以看到,截至2021-12-1日,中国大陆地区一共分配了8614个网段:

写个简单的脚本程序,将所有网段的IP地址数量相加:

import sys
total = 0
print('target file: %s' % sys.argv[1])
with open(sys.argv[1]) as fp:
while True:
line = fp.readline()
if line:
fields = line.split('|')
ip = fields[3]
num = int(fields[4])
print('ip: %s, num: %d' % (ip, num))
total += num
else:
break
print('total: %d' % total)

得到总共的IP地址数量:343881984,约占整个IP地址空间的8%

用同样的方法,分别统计台湾、香港、澳门三个地区的数据:

  • 台湾:35688960
  • 香港:12612096
  • 澳门:336640

那整个加起来的数据就是:392519680,三亿九千多万,约占整个IP地址空间的9.14%

那这个数据到底对不对呢?

我查阅了国内专门负责IP地址分配管理的机构:CNNIC(中国互联网络信息中心)在今年9月份发布的一份《第48次中国互联网络发展状况统计报告》,其中关于IP地址这里,有一个数据:

这份文件给出今年6月份的数据,全国的IPv4地址大概在3.93亿,与前面的统计基本上吻合,可能由于数据时间和其他方面的因素,存在小部分的出入,但总体而言,国内的IPv4地址数量大概在这个规模是肯定的。

阿里云的IPv4地址数量

弄清了国内的IP地址数量,那么问题来了,阿里云到底有多少IPv4地址呢?

在淘宝下的一个IP地址库中找到了一个数据:

地址:https://ip.taobao.com/accurancy

当然,从表格中大陆地区的IP地址数量可以看到,这个表格的数据是有些过时了,但数量级应该差不了太多。

从这份数据来看,阿里巴巴拥有差不多 370W+ 的IP地址。

而这,仅仅是活跃的IP地址数,不代表阿里所屯的IP地址总数。

那阿里究竟屯了多少IP,在公开的信息中,我只找到了一份2019年发布的数据:

2019上半年,阿里云的活跃IP数量在330万,比上面的淘宝IP统计少了40万,也就是说2年之后活跃IP增长了40万。

而两年前阿里云屯的IP总数已经超过1500W+,两年之后,这个数据只会更多,就国内几家云服务厂商而言,真可谓一骑绝尘。

从上面图中还可以看出,亚马逊不愧是全球最强大的云计算厂商,足足屯了7500W+ 的IP地址,就这还是2年前的数据。

至此,文章开头的问题算是弄清楚了。当然了,购买云服务器得来的IP地址也是有租用期限的,比如我去年购买的云服务器到期之后,里面的公网IP地址也就回收了,说不定现在已经分配给别人了。

虽然IP地址紧张,但各云服务器厂商都屯了不少,公网IP在池子里不断流转,所以我们才能花个百来十块就搞来一个。

文章目录
  1. 1. IP地址
  2. 2. IANA
  3. 3. 中国的IPv4地址数量
  4. 4. 阿里云的IPv4地址数量