IP地址诞生之初就使用了分类的概念。这种体系结构称为分类编址(classful addressing)。到了20世纪90年代中期,一种称为无分类编址(classless addressing)的新体系出现,并且比原有体系更具优势。
下面介绍的是:分类编址
分类
在分类编址时,IP地址空间被分为五类:A、B、C、D和E。每一类占用整个地址空间中的一部分。
下图是每一类地址在地址空间的占用情况
如何辨认是哪种类型
以二进制记法表示时,该地址的前几位就可以立即告诉我们它的类别
而以点分十进制记法表示时,通过第一个字节的值就可以确定地址的类别
左图是二进制记法,右图是十进制记法
计算机以二进制的形式来存储IPv4地址。在这种情况下,很方便就可以写出一种算法。通过一个连续检查过程来找出该地址的类别,如图所示:
网络标识和主机标识
在分类编址中,对于A、B、C类地址来说,IP地址都可划分为网络标识(net-id)和主机标识(host-id)两个部分。
这两个部分的长度随地址类别的不同而变化。
下图给出了网络标识和主机标识所占的字节。应当注意的是,D类和E类地址不划分网络标识和主机标识
对于A类地址,前一个字节用于定义网络标识(Netid),后三个字节用于定义主机标识(Hostid)。
对于B类地址,前两个字节用于定义网络标识,后两个字节用于定义主机标识。
对于C类地址,前三个字节用于定义网络标识,后一个字节用于定义主机标识。
地址类和地址块
分类编制存在的一个问题是每一类地址都被划分为固定数目的地址块,而每一个地址块的大小也都是固定的。
A类
在A类地址中,只有一个字节用来定义网络标识,而且它的最左一位应当始终为0,只有后7位可变。【这是在二进制情况考虑】
由此可得A类地址中地址块的数目。A类地址共有2的七次方=128个地址块,可以指派给128个机构组织(实际数目还要少一些,因为其中有几个特殊的地址块是保留的)但是这类地址的每个地址块都包含有16777216个地址,这表明要使用所有这些地址的机构应该是个非常庞大的机构。在这类地址中有大量的地址被浪费了。
下图所示是A类地址的地址块:
A类地址范围:0.0.0.0到127.255.255.255
IP地址分为4段,共32位二进制,每段是8位二进制。由于A类第一位是0开头,那么第一段就还剩下7位,所以第一段的最大二进制数为:01111111,转换为十进制是127。
B类
在B类地址中,用了两个字节(2*8=16位)来定义网络标识,而且它的最左边的两位应当为10(固定),剩下的14位可变
由此可得知B类地址中地址块的树木。B类地址共有2的14次方=16384个地址块,可指派给16384个机构组织(实际数目还要少一些,因为其中有几个特殊的地址块是保留的)。但是,这类地址的每个地址块都包含有65536个地址。需要使用这么多地址的机构也不多见。在B类地址中也有很多地址被浪费了。
下图所示是B类地址的地址块:
C类
在C类地址中,用了三个字节来定义网络标识,而且它的最左边的三位应为110(固定),剩下的21位可变,由此可得知C类地址中地址块的数目。C类地址共划分为2的21次方=2097152个地址块,每个地址块有256个地址,可指派给2097152个机构组织(实际数目还要少一些,因为其中有几个特殊的地址块是保留的)。一个C类地址块只有256个地址,小到一个C类地址就能满足的机构也不多见。
下图所示是C类地址的地址块:
C类地址中的地址数对大多数机构来说是不够用的
D类
D类地址只有一个地址块。它用来进行多播。这类地址中的每一个地址都被用来定义因特网上的一组主机。当某个组被指派了一个D类地址时,该组中的每一个成员主机都会在正常地址(单播地址)的基础上增加一个多播地址。
E类地址
E类地址只有一个地址块。它被设计为保留地址。如图所示
两级编址
IPv4地址的作用就是为因特网中的一个分组指明其终点(在网络层)。在设计分类地址时,人们认为整个因特网可划分为很多网络,而每个网络连接多个主机。换言之,因特网被视为一个由网络组成的网络。通常是由希望连接到因特网的组织来创建各个网络。因特网权威机构则向该组织指派一个地址块(A类、B类或 C类的)
分类编址时,指派给一个组织的地址段是A、B或C类地址的一个地址块
分类编址时,同一个网络中的所有的地址都属于同一个地址块,且每个地址都包含两部分:网络标识和主机标识。
网络标识指明了网络,而主机标识则指明了连接到该网络上的一台特定的主机
下图描绘了分类编址中的一个IPv4地址:
如果某一类地址用了n位来表示网络,那么就有32-n位(32:4*8)定义了主机。不过这个n的值取决于地址块所属的类。n的值可以是8、16或24,它们分别对应A类、B类和C类地址
其实在其他通信系统中也可以看到两级编址的情况。
例如:美国国内的一个电话系统可以被看成是由两部分组成的:区号和本地号。区号指明了区域,而本地号则指明了该区域中的某个具体的电话用户。
(626)3581301
它的区号是626 对应网络标识
本地号3581301,对应主机标识
提取一个地址块中的信息
一个地址块就是一段地址。给定该地址中的任意一个地址,我们希望得到该地址的三个信息:地址数、首地址、末地址
首先我们要知道这个地址属于哪一类,在找出了地址的类别之后,我们就知道了n的值以及网络标识的长度。
就可以求出这三个信息了。如图所示:
- 该地址块的地址数N可以用N=2的32-n次方求出
- 要求出首地址,我们保持最左边的n位不变,并将靠右边的32-n位全部置为0
- 要求出末地址,我们保持最左边的n位不变,并将靠右边的32-n位全部置为1
例子:给出某地址块中的一个地址为73.22.17.25。求该地址块的地址数及其首地址和末地址
- 首先判断它是什么类地址,根据下图可知
73在0-127之间。所以它是A类地址。
又因为A类地址n=8
所以它的地址数是2的32-8次方=16777216
-
- 为了求出首地址,我们保持左边n位(n=8)不变,将右边的24位全部置为0 .
请注意,这里的x位是二进制的概念,IP地址分为4段,共32位二进制,每段是8位二进制。
即保持左边第一段不变,后面全部变为0.
因此,首地址是73.0.0.0/8 ,其中8就是n的值。
首地址被称为网络地址,它不会被指派给任何主机,而是用来定义这个网络
-
- 为了求出末地址,我们保持左边n位(n=8)不变,将右边的24位全部置为1.
这里也是二进制的概念,每8位为一段,即11111111转换为十进制为255
末地址是73.255.255.255
-
下图绘制了使用此类地址的一种可能的网络配置。
再来看个例子:
给出某地址块中的一个地址为180.8.17.9。求该地址的地址数及其首地址和末地址
- 根据下图可知。180在128-191之间,所以它属于B类地址。B类地址n=16
可得到地址数为N=2的32-16次方=2的16次方=65536
-
- 为了求出首地址,我们保持左边16位(2段)不变,将右边16位置为0.
首地址(网络地址)是180.8.0.0/16,其中16是n的值
-
- 为了求出末地址,我们保持左边16位(2段)不变,将右边16位置为1
末地址是180.8.255.255
-
下图绘制了使用此类地址的一种可能的网络配置。
再来看个例子:
给出某个地址块中的一个地址为200.11.8.45.求该地址块的地址数及其首地址和末地址
因为200是在192~223之间,所以这个地址是C类地址。C类地址的n等于24.
- 该地址的地址数是为N=2的32次方-24=2的8次方=256
- 为了求出首地址,保持左边24位不变,并将右边8位全部置为0.首地址为200.11.8.0/24
为了求出末地址,保持左边24位不变,并将右边的8位全部置为1.末地址为200.11.8.255/24
下图绘制了使用此类地址的一种可能的网络配置。