在分类编址中划分子网和构造超网并没有从实际上解决地址耗尽的问题,还使得地址分配和路由选择变得更加困难。
随着因特网的不断扩大,很明显我们需要一个更大的地址空间来作为一种长期解决方法。
但是,更多的地址空间就需要把IP的地址长度增加,也就意味着IP分组的格式需要改变,称为IPv6.
但是人们还设计了一种临时的解决方案,它使用原有的地址空间不变,但是改变了地址的分配方式,以便向每个机构组织提供一种更公正共享的方法。
这种临时解决方案仍然使用IPv4地址,但是称为无分类编址。换言之,在分配地址时,类别的特权被取消了,以此来补偿地址耗尽问题。

使用无分类编址还有另一个原因。在20世纪90年代,因特网服务提供者(ISP)开始流行。ISP是这样的一种组织,它可以给个人、小公司以及中等规模的组织提供到因特网的接入,这些中等规模的组织不想创建自己的因特网网站,也不想忙于为自己的雇员提供因特网服务(如电子邮件服务),而ISP则能够提供这样的一些服务。一个ISP可分配得到一个较大的地址段,然后再把这些地址进一步地划分为若干个组(每个组具有1、2、4、8或16个地址等等),并把其中的一组分配给一个家庭或公司用户。这些用户通过博号调制解调器、DSL或电缆调制解调器连接到ISP。不过每个用户都需要多个IPv4地址。
1996年,因特网管理机构宣布了一种新的体系结构,称为无分类编址(classless addressing)。无分类编址时使用的是可变长度的地址块,这些地址块不属于任何类。每个地址块可以有1个地址、2个地址、4个地址、128个地址等等

可变长度地址块

在分类编址时整个地址空间被划分为五类。虽然每个机构组织可以被授权使用A类、B类或C类中的任一种地址块,但是这些地址块的长度是预先定义的,也就是说这些机构只能从三种尺寸的地址块中选择一个。D类的唯一地址块和E类的唯一地址块保留用作特殊用途。
在无分类编址时整个地址空间被划分为许多不同大小的地址块。从理论上讲,这些地址块可以有 2^0,2^1, 2^2···· 2^32个地址。唯一的限制是一个地址块中的地址数必须是2的乘方
下图描绘了如何将整个地址空间划分为不重叠的地址块。
file

两级编址

在分类编址时,通过将一个地址划分为网络标识和主机标识两部分来提供两级编址。网络标识指明了网络,而主机标识则指明了网络中的一台主机。这个思想同样也可应用于无分类编址中。
当一个组织被授权使用一个地址块,这个地址块实际上也可划分为两部分;前缀(prefix)和后缀(suffix)。前缀的作用与网络标识一样,而后缀的作用与主机标识一致。
某个地址块中的所有地址都具有相同的前缀,且每个地址的后缀各不相同。
下图描绘了无分类地址中的前缀和后缀。
file

在无分类编址中,前缀指明了网络,而后缀指明了主机。

在无分类编址中,网络标识的长度n取决于该地址的类别,它的值只能是8、16或24三者之一。在无分类编址中,前缀的长度n取决于地址块的尺寸,它可以是0,1,2,3,···,32。在无分类编址时n的值称为前缀长度(prefix length),而32-n的值称为后缀长度(suffix length)

斜线记法

当我们给定了某个地址块中的一个地址,并希望从中提取有关该地址块的信息时,网络标识的长度(分类编址),或者说前缀的长度(无分类编址),担当着非常重要的作用。
不过此时的分类编码和无分类编码要区别对待

  • 分类编址时,网络标识的长度是地址所固有的。给定一个地址,我们就知道这个地址的类别,于是就可以求出网络标识的长度(8、16或24)
  • 无分类编址时,如果我们仅仅给出地址块中的一个地址是无法求出其前缀长度的。这个给定的地址可以属于任意前缀长度的地址块。

无分类编址时,如果我们要找出该地址所属的地址块,就必须在每个地址中包含其前缀长度。在这种情况下,前缀长度n被附加在地址后面,并用斜线分隔开。
例如:字节.字节.字节.字节/n
斜线记法的正式名称是无分类域间路由选择( CIDR)

网络掩码

在无分类编址中,网络掩码的思想与分类编码是一样的。一个网络掩码就是一个32位的数,这个数的左边n位全部置1,而其余位全部置0

提取地址块的信息

以斜线记法(CIDR)表示的地址中包含了我们需要知道的有关该地址块的所有信息:首地址(网络地址)、地址数及其末地址。
这三个信息可以用如下方法求得:

该地址的地址数:
N=2的32-n次方
其中n是前缀长度,N是地址块的地址数

地址块的首地址可通过用网络掩码对这个地址进行与运算求出:
首地址=(任意地址)AND(网络掩码)
另外,我们还可以保留该地址块中任意地址的左边n位不变,并把其余的32-n位置为0,即可得到首地址

末地址:
末地址=(任意地址)OR 【NOT(网络掩码)】
另外我们还可以保留该地址块中任意地址的左边n位不变,并把其余的32-n位置为1,即可得到末地址

地址块的分配

无分类编址的下一个问题就是地址块的分配问题。这些地址块是如何分配的?
分配地址块的最终责任被交给了一个全球管理机构,称为因特网名字与号码指派公司(ICANN)不过ICANN通常不会直接向因特网的个人用户分配地址。它将大块的地址指派给某一个ISP(或被视为ISP的大型机构)
为了使CIDR能够正常运转,在分配地址块时需要遵守三个原则:

  1. 申请的地址数N必须是2的乘方。这样做是为了使前缀长度的值n是一个整数,因此地址数可以是1个、2个、4个、8个、16个等等
  2. 对于一个地址块来说,根据地址数就可以求出其前缀长度的值。
  3. 必须是地址空间中连续的未分配地址才能被分配给申请的地址块。但是如何选择该地址块的起始地址是有限制的。起始地址必须能够被地址块的地址数整除。

子网划分

通过子网划分就可以建立一个三级结构。授权使用某段地址的一个组织(或ISP)可以将该地址段进一步划分为若干个子段,并为每个子网络(或子网)指派一个子地址段

最后修改:2022 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏