在分类编址中划分子网和构建超网并没有完全的解决地址耗尽的问题,反而使地址分配和路由选择变得更加困难。随着现在因特网不断地扩大,我们需要一种更大的地址空间的ip地址来解决地址耗尽的问题,虽然ipv6技术可以解决这些问题,但是目前使用了另一种临时解决方案,它使原来的地址空间不变,但是改变了地址的分配方法,以便向每一个机构提供一种更好的方法,以此来解决地址耗尽的问题。
这种临时解决方案便是无分类编址,也就是说在分配地址时,不再对地址分类,每个子网中的地址数可以是变化的,这种子网掩码称为可变长子网掩码(VLSM),在图1中就是可变长子网掩码的表示方法。
无分类编址中,ip地址的表示格式:x.y.z.t/n
x.y.z.t表示ip地址的每一个字节,n表示了ip地址的网络位数是多少,通过这种ip地址格式,我们可以知道该地址的网络号是多少。
而上面这种地址格式是属于一种CIDR格式,在学习网络技术时经常使用。这种无类编址的方式使得Internet服务提供商可以灵活的将大的地址块分成恰当的小地址块,不会造成大量ip地址浪费。
另外,CIDR(无类别域间路由,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
通过无分类编址的掩码,结合之前所学的分类编址的子网掩码可知,分类编址是无分类编址的一个特例,在分类编址的掩码中是包括了无分类编址的掩码的。
关于前缀就是网络位(net-id),可以认为n代表的就是前缀长度,即网络位长度,后缀和后缀长度就对应着主机位和主机位长度。另外,我们可以根据n来算出后缀长度,假如前缀长度n = 8,那么 32 - 8 = 24就是后缀长度。
结合无类编址,我们来看这几道题。
例题1:如果一个地址块中的一个地址是167.199.170.82/27,试问这个地址块中的第一个地址是多少?
解题思路:
针对给出的掩码地址167.199.170.82/27我们至少可以得到一些信息
,其中27是网络位的长度,那么主机位的长度就是32 -27 = 5,如图1所示:
题目要求是取地址块中第一个地址,那么网络位不变,主机位也必须全部为0了,对于我们所关心的部分的组合方式有以下几种,如图2所示:
对于主机位如果值为0,即00000,最大能表示0。
对于主机位如果值为1,即11111,最大能表示31。
如果组合方式是000,主机位的值最小为0,最后一个字节为00000000,如果主机位置最大为1,最后一个字节为00011111,那么就是最后一个字节的表示范围就是0到31。
如果组合方式是001,主机位的值最小为0,最后一个字节为00100000,如果主机位置最大为1,最后一个字节为00111111,那么就是最后一个字节的表示范围就是32到63。
如果组合方式是010,主机位的值最小为0,最后一个字节为01000000,如果主机位置最大为1,最后一个字节为01011111,那么就是最后一个字节的表示范围就是64到95。
167.199.170.82地址的第四个字节82是64 - 95范围内,也就是说167.199.170.82所在的地址块中的第一个地址就是167.199.170.64,但是167.199.170.64这个地址是一个网络地址,而167.199.170.95是一个广播地址,因此167.199.170.64地址块的第一个地址应该是167.199.170.65才对。
例题2:如果地址块中的一个地址是140.120.84.24/20,请找出这个地址块中的地址数?
思路:
从这个地址中我们可以知道网络位是占20位,主机位占12位,如图3所示: