简述 IPv4 的组成和划分。
IP地址
IP地址是用于标识网络中主机或路由器的一个接口的标识符,有v4和v6两个版本,本文暂时只讨论IPv4。IPv4 长度为32位 (4-byte),总数为 2³²≈43亿。由高位的网络号和低位的主机号组成。
为了便于阅读 (human readable), 将ip地址按每8位 (1-byte) 的长度,使用.
字符进行分隔,即为点分十进制,例如a.b.c.d
。
IP地址的本质是一个二进制的无符号整数(v4为32位,v6为128位),点分十进制只是方便阅读和交流而已,相当于“网名”。理论上IPv4也可以使用十六进制的方式进行表示。
在同一个网段内,即网络号相同的情况下,主机号为全0和全1这两种情况分别表示“当前网段”和“广播地址”,并不会用于分配(即对于主机或路由器来说是不可用的)。
分类网络
分类网络 (Classful network) 是一种已过时的分类方式,将ip地址分为 A/B/C/D/E 五种类型。
A类IP地址的网络号为8位,以0
作为网段标识,即最高位固定为0
,余下31位可用。由于前8位是网络号,且首位固定为0,因此A类地址的网络号范围是 0000 0000
- 0111 1111
, 即 (0-127)₁₀,其中网络号为 127 的地址用作本地软件的环回测试地址。A类地址数量占IPv4总量的50%(2³¹/2³²)。
B类IP的网络号为16位,以10
作为网段标识,即最高位固定为10
,余下30位可用,数量占IPv4总量的25%(2³⁰/2³²)。
C类IP的网络号为24位,以110
作为网段标识,即最高位固定为110
,余下29位可用,数量占IPv4总量的12.5%(2²⁹/2³²)。
D类以1110
作为网段标识,该类地址用于广播。
E类以1111
作为网段标识,用法保留。
CIDR 编址
Classless Inter-Domain Routing (CIDR, 无分类域间路由, 发音同 “sider”), 其编址方式同样是把ip分为网络号和主机号两部分。与分类网络编址的区别在于CIDR地址的网络号长度是可变的,而不是固定的8/16/24位,提高了网段分配的灵活性。
SIDR的网络号长度通过 SIDR notion 显示,即/20
的方式,例如某个SIDR地址为a.b.c.d/20
,则其网络号长度为20.
SIDR可视为分类地址的超集,后者可视为前者的网络号长度依次为8/16/24的特例。
一些特殊地址:
网络号长度n=32
: 主机路由(或特定主机路由)
用于路由器的转发表。由于该ip地址的32位全是网络地址,所以对应的子网掩码为32个1。根据最长前缀匹配,路由器在转发时会固定将分组发往该目的地ip。该记录位于转发表的最前。
网络号长度n=0
: 默认路由,写作 0.0.0.0/0
。
由于没有网络号,因此子网掩码也是32个0,任何目的地ip地址与32个0进行AND运算后的结果必然为32个0,与路由器转发表的 0.0.0.0/0
匹配,从而实现默认路由的功能(位于转发表最后)。
网络号长度n=31:
主机号的digit只有1位,用于点对点链路的两端使用(甚至不用分配IP地址)。
子网掩码
子网掩码是一个高位全1,低位全0、长度为32位的标识。它的作用相当于 SIDR notion, 毕竟/20
的方式是人类的阅读方式。
主机或路由器通过目的地ip与子网掩码进行AND运算,得到目的地ip地址的网络号,进而决定分组的发送方向。
私有网络
为了缓解互联网增长导致的IP地址资源的压力,IANA在1996年将以下三个ip地址块划为私有网络地址:
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)