子网
在ARPANET的早期,IP地址被设计为“分类的IP地址”,就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号(net-id),它标识主机(或路由器)所连接到的网络。第二个字段是主机号(host-id),它标识该主机(或路由器)。如下图所示:
从现在看来,这样的设计并不合理,每一个A类地址网络可连接的最大主机数有16777214(2^24-2)
个,B类的地址网络可连接的最大主机数也有65534(2^16-2)
个,然而有些网络对接在网络上的主机有限制,根本达不到这样大的数值。有的单位申请到了一个B类地址网络,但所连接的主机数并不多,可是又不愿意申请一个足够使用的C类地址,理由是考虑到未来可能的发展。等等的这些情况造成了IP地址空间的利用率并不高。
为了解决分类的IP地址所带来的各种问题,从1985年起在IP地址中又增加了一个子网号字段,使两级IP地址变成了三级IP地址。这种做法叫做划分子网法
两级IP
$$
IP ::={<网络号><主机号>}
$$
三级IP
$$
IP ::={<网络号>,<子网号>,<主机号>}
$$
划分子网将从网络的主机号借若干位,当其他网络发送给本单位某个主机的IP数据报,将根据IP数据报的目标网络号找到连接在本单位网络上的路由器,然后路由器根据网络号和子网号找到目标子网,再把IP数据报交付给目标主机。
接下来就只有一个问题了:路由器是如何将数据报转发到子网的?例如路由器IP:145.13.0.0,目标IP:145.14.3.15,如何将它转发到子网145.14.3.0
由此引出了另外一个概念——子网掩码,如下图所示,将目标IP(145.14.3.15)与子网掩码(255.255.255.0)相与,可以很轻易的得出子网地址:145.14.3.0
无分类编址CIDR(构成超网)
CIDR最主要的特点有两个:
消除了传统的A类、B类、C类地址及划分子网的概念,因而可以更加有效的分配IPv4的地址空间。CIDR把32位的IP地址划分为两个部分,前面的部分是网络前缀(network-prefix),用来指明网络,后面的部分则用来指明主机
$$
IP ::={<网络前缀><主机号>}
$$
CIDR把网络前缀都相同的连续IP地址组成一个CIDR地址块,即在IP地址后加上斜线”/“,然后写上网络前缀所占位数。我们只要知道CIDR地址块中任何一个地址,就知道这个地址块的最小地址和最大地址,如:
- 128.14.35.7/24,最小地址:128.14.35.0;最大地址:128.14.35.255
- 128.14.35.7/20,35的二进制表示:
00100011
,取其前4(20-16)位,后四位补0,得00100000
:32,即最小地址:128.14.32.0;最大地址后四位补1,得00101111
:47,即最大地址:128.14.47.255 - 主机号全是0和1的地址一般并不使用。
下图是常用的CIDR地址块,可以看出每一个CIDR地址块的地址数一定是2的整数次幂,除了最后几行外,CIDR地址块包含了多个C类地址(是一个C类地址的2^n倍),这就是构成超网这一名词的来源。
参考及摘选书籍:
- [1]谢希仁.计算机网络[M].北京:电子工业出版社,2013.