TOC

我们天天都接触的 IP 地址到底是什么东西?

IP 地址

IP 就是一个编号,用 32 位二进制数表示,范围是 [0, 4294967295]。

为了阅读方便,IP 地址可以用点分十进制表示,也就是说,每八位用一个十进制数字表示,然后用小数点连接,比如 127.0.0.1。

那么,IP 的范围就可以表示为:0.0.0.0 ~ 255.255.255.255

总数:$2^{32} = 4294967296$ (约 43 亿)

分配机制

IP 的管理和分配是互联网号码分配局(Internet Assigned Numbers Authority,IANA)负责。

早期,IANA 是由美国南加州大学信息科学研究所(USC/ISI)依据美国国防部授权负责,后来移交给非盈利组织 ICANN。

由于互联网是从美国发展起来的,所以美国拿了大量可分配 IP 地址。

为了保证 IP 资源相对公平高效的分配,目前互联网的实际 IP 分配工作是在 IANA 的协调下,由五个区域互联网注册机构(Regional Internet Registry,RIR)负责:

  • 美洲互联网号码注册管理机构(American Registry for Internet Numbers,ARIN
    管理北美、南极洲和部分加勒比地区事务
  • 欧洲 IP 网络资源协调中心(RIPE Network Coordination Centre,RIPE NCC
    管理欧洲、中东和中亚地区事务
  • 亚太网络信息中心(Asia-Pacific Network Information Centre,APNIC
    管理亚洲和太平洋地区事务
  • 拉丁美洲及加勒比地区互联网地址注册管理机构(Latin American and Caribbean Internet Address Registry,LACNIC
    管理拉丁美洲和部分加勒比地区事务
  • 非洲网络信息中心(African Network Information Centre,AfriNIC
    管理非洲事务

我国的网络地址就由 APNIC 分配。APNIC 总部之前在日本东京,后来由于成本问题,1998 年搬到了澳大利亚布里斯班。

非公网 IP(特殊用途地址)

最知名的 10/8, 172.16/12, 192.168/16 三个网段,我们在各种局域网中见到,完整的信息在负责网络地址分配的 IANA 那里可以拿到。

  1. IANA IPv4 Address Space Registry
  2. IANA IPv4 Special-Purpose Address Registry
网段 数量 说明
0.0.0.0/8 $2^{24} = 16777216$ 本地网络,其中 0.0.0.0 表示本机。
10.0.0.0/8 $2^{24} = 16777216$ 私有
100.64.0.0/10 $2^{16} \times 64 = 4194304$ 私有, (100.64 - 100.127),ISP NAT
127.0.0.0/8 $2^{24} = 16777216$ 环回地址
169.254.0.0/16 $2^{16} = 65536$ 链路本地地址(Link-local address)
172.16.0.0/12 $2^{16} \times 16 = 1048576$ 私有,(172.16 - 172.31)
192.0.0.0/24 256 IETF Protocol Assignments
192.0.2.0/24 256 TEST-NET-1
192.31.196.0/24 256
192.52.193.0/24 256
192.88.99.0/24 256 IPv6 to IPv4 relay
192.168.0.0/16 $2^{16} = 65536$ 私有
192.175.48.0/24 256
198.18.0.0/15 $2^{16} \times 2 = 131072$ 私有,(192.18 - 192.19)
198.51.100.0/24 256
203.0.113.0/24 256 MCAST-TEST-NET
240.0.0.0/4 $2^{24} \times 16 = 268435456$ (240 - 255),保留

不知道上面为什么没有列出组播网段 224/4 (224 - 239), 和 240/4 网段一样,共 268435456 个地址。

$2^{32} - (16777216 \times 3 + 4194304 + 65536 \times 2 + 1048576 + 256 \times 8 + 131072 + 268435456 \times 2) = 3702257664$

2 ** 32 - 16777216 * 3 - 4194304 - 65536 * 2 - 1048576 - 256 * 8 - 131072 - 268435456 * 2
3702257664

3702257664 * 100 / (2 ** 32)
392519680 * 100 / (2 ** 32)
392519680 * 100 / 3702257664

所以,可分配地址大约 37 亿,占总 IP 地址数的 86.2%。

根据 全中国一共有多少 IP 地址? 一文的计算(来自 APNIC 数据),中国(含港澳台)一共分配到 IP 地址大约 4 亿,占总 IP 数的 9.14,占可分配 IP 数的 10.6。

大陆 343881984
香港  12612096
澳门    336640
台湾  35688960
--------------
总计 392519680

网络分类

早期,可能包括我们的教科书,总是提到 A 类地址,B 类地址等概念。

标准的说法,叫做 Classful Addressing,分类地址,分级寻址,分类路由。

最早 IP 分配都是按照 IP 第一个字节分配,十分大方。但是最多只能分配 256 次。
眼看着网络发展壮大,接入的机构越来越多,这样下去 IP 地址根本就不够分。
所以想出了分级的概念,按照实际需求来分配 (RFC791, 1981)。

所有的 IP 按照前缀被分成 A, B, C, D, E 五类。

Class 前缀位 网络地址位数 剩余的位数 网络数 每个网络的主机数
A 类地址 0 8 24 128 16,777,214
B 类地址 10 16 16 16,384 65,534
C 类地址 110 24 8 2,097,152 254
D 类地址(群播) 1110 未定义 未定义 未定义 未定义
E 类地址(保留) 1111 未定义 未定义 未定义 未定义

比如:
A 类:100.0.0.0/8 0110
B 类:160.0.0.0/16 1010
C 类:208.0.0.0/24 1101

地址的分配按 8 位,16 位,24 位,三种级别,也就是说每次分配可以选择 256、65536、16777214,三种 IP 数量,IP 不够分配问题暂时得到缓解。

后来,IP 地址还是不够分配,又改成了更加合理的无类别域间路由(Classless Inter-Domain Routine)方案,支持 1, 2, 4, 8, 16, 32, 64, 128, 256, 512...更多细粒度的选择。

到现在为止,又支撑了一些年,不过眼看着 IP 最后还是会耗尽。

参考资料与拓展阅读