IPv4

IPv4的表示方法

IPv4规定IP地址长度为32位(二进制),可以用4个字节就能存储。

一个字节可以存储8个二进制位,也就是11111111[^解释],它再内存中就占一个字节(byte),4个字节(byte)就是4个8位二进制的数,我们假设IP地址是从0开始分配的,一直分配到最大的那个数字.

# 二进制能表示的第一个地址
00000000 00000000 00000000 00000000
# 二进制能表示的最后一个地址
11111111 11111111 11111111 11111111

然后再用.来分隔每个字节

# 二进制能表示的第一个地址
00000000.00000000.00000000.00000000
# 二进制能表示的最后一个地址
11111111.11111111.11111111.11111111

但是二进制太难记了,再将二进制转换成十进制

# 二进制能表示的第一个地址
0.0.0.0
# 二进制能表示的最后一个地址
255.255.255.255

IPv4可以分配给多少台设备

假设不考虑广播地址等其他情况,假设每个地址都是一台设备,那么

  1. 如果固定前三位255,最后一位从0分配到255可以分配给256台设备

    255.255.255.0 - 255.255.255.255 可以表示256台设备

  2. 固定前2位255,最后两位可以从0.0分配到255.255可以分配给65536台设备

    255.255.0.0 - 255.255.255.255 可以表示2562=65,536台设备

  3. 固定前一位255,后面三位可以从0.0.0分配到255.255.255可以分配给16777216台设备

    255.0.0.0 - 255.255.255.255 可以表示2563=‭16,777,216‬台设备(一千六百万)

  4. 直接从0.0.0.0分配到255.255.255.255可以分配给4,294,967,296‬台设备

    0.0.0.0 - 255.255.255.255可以2564=‭4,294,967,296‬台设备(四十三亿)

全球就由77亿之多,43亿根本不够分啊!

IPv4地址分类

1、A类:地址范围是1.0.0.0 到 127.255.255.255,主要分配给大量主机而局域网网络数量较少的大型网络;一共包含127×2553个IP地址,也就是‭2,105,834,625‬个IP地址。 2、B类:地址范围是128.0.0.0 到191.255.255.255,一般用于国际性大公司和政府机构;一共包含63×2553,也就是‭1,044,626,625‬个IP地址。 3、C类:地址范围是192.0.0.0 到223.255.255.255,用于一般小公司校园网研究机构等;一共包含31×2553,也就是‭‭514,022,625‬个IP地址。 4、D类:地址范围是224.0.0.0 到 239.255.255.255,用于特殊用途,又称做广播地址;一共包含15‬×2553,也就是‭248,720,625‬个IP地址。 5、E类:地址范围是240.0.0.0 到255.255.255.255,暂时保留。一共包含15×2553,也就是‭‭248,720,625‬‬个IP地址。

一共是4,161,925,125IP地址,减去E类保留的地址一共是3,913,204,500个IP地址可用。

那中国租用了多少IP地址呢?

首先我们要了解IPv4由国际互联网络信息中心分配,由ICAAN运作,机构主体在美国。我国接入国际网络需要租用IP网段,中国租到了网段后由工信部管理(无线电频率、卫星轨道、手机号码网段、MAC地址、在中国注册的域名都属于工信部负责管理),再把网段分配给网络服务运营商:中国电信、中国联通、中国移动、中国教育和科研计算机网、中国科技网、中国国际经济贸易互联网。

中国租用了多少地址没有找到资料但是从https://github.com/misakaio/chnroutes2找到https://raw.githubusercontent.com/ym/chnroutes2/master/chnroutes.txt这个文件,内容还算更新及时,从中找到了3184条中国大陆路由信息,信息中不包括中国台湾、中国香港、中国澳门的路由信息。但是可以算个大概。

路由信息由IP网段和子网掩码的位数组成,用2(32-子网掩码位数)就可以算出这条路由记录下可以由多少个IP了。

1.1.8.0/24 # 2^(32-24)=256
1.24.0.0/13 # 2^(32-13)=‭524,288‬
1.45.0.0/16 # 2^(32-16)=‭65,536‬
……

只要拿到这3184条数据的子网掩码位数进行运算相加就能得出结果。

298,987,008

私有IP地址

A: 10.0.0.0~10.255.255.255 即10.0.0.0/8 B:172.16.0.0~172.31.255.255即172.16.0.0/12 C:192.168.0.0~192.168.255.255 即192.168.0.0/16

还能无动于衷吗?

从上面看IPv4的个数明显不够,实际上在2011年IPv4就已经分配完毕,因为IPv4地址分类的原因,全球一共分配了3,618,114,107个IP地址。中国分配了335,784,704个地址。占全部的9.28%,2019年中国网民达8.5亿,尽管因为私有IP,解决了大部分的设备,但3.3亿个IP在中国的确是不够用,所以工信部在2020年3月23日发布了题为《工业和信息化部关于开展2020年IPv6端到端贯通能力提升专项行动的通知》工信部通信函〔2020〕57号的通信函。

IPv6

0000:0000:0000:0000:0000:0000:0000:0000 FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF FFFF^8

FFFF => ‭1111111111111111 ‬共16位*8段 = 128位

(65535+1)8 = 2128 = 3.402823669209385e+38 = 340282366920938500000000000000000000000