在TCP/IP协议发展初期,人们认为整个网络中最多允许232台网络设备已经完全能够满足网络建设的需要。为此,人们规定以32bit数作为TCP/IP协议中网络设备的地址。这就是IPv4地址标准,此地址被简称为IP地址。在这个标准中,每个网络设备都必须被分配唯一的一个IP地址,即利用一个32bit的二进制数字作为这台网络设备的标志。
由于32bit的二进制数读写都极为不方便,人们习惯于把32bit数据按照8个bit为一组分隔,把32bit二进制数分隔为4个字节,然后把每个字节的二进制数变成十进制数的形式。这样人们对IP地址的读写都很方便。
因为每个字节表示十进制数的范围是0~255,所以合法的IP地址应该由四个在0~255间的整数组成,数据之间用英文圆点分隔。例如:202.112.94.39就是一个合法的IP地址,而202.112.268.22不符合IP地址规范,因为第三个数268超过了255,不可能是由8位二进制数转化过来的。地址202.112.94,39也不合法,因为94和39之间的分隔符不是英文圆点。
为了使任何带有路由选择能力的协议高效地提供路由,识别网络中的两台网络设备的逻辑距离,人们一般把IP地址看成两部分:网络标记和主机标记,认为IP地址中网络标记相同的计算机属于同一个网络,在逻辑上具有比较亲近的关系。
一个32bit的IP地址是被如何分为两部分的呢?以16个bit作为网络部分,16个bit作为主机部分是最简单的办法。然而,世界上的网络千差万别,有的网络很大,包括很多台计算机;有的网络很小,仅包括几台计算机。以这种单一的方式划分IP地址必然偏颇。为此,TCP/IP体系对IP地址进行了分类,以便于适应不同规模的网络。如图6-3所示。
图6- 3 IP地址分类规范
(1)A类地址
A类地址适用于特别巨大的网络,TCP/IP体系规定32bit地址中最左边一位为0的地址通称为A类地址,A类地址最左边的8bit是网络标记,右侧的24bit是主机标记。也就是说,A类地址首字节的十进制范围是0~127,每个A类网络标记可组建一个A类网络,其中可包含224台主机。在IPv4中,一共可组建128个A类网络。
(2)B类地址
人们把IP地址的32bit中最左边两位为10的地址通称为B类地址,B类地址用左边的16bit作为网络标记,右侧的16bit是主机标记。也就是说,B类地址首字节的十进制范围是128~191,每个B类网络标记可组建一个B类网络,其中可包含216台主机。
在IPv4中,共有64×256个网络标记,一共可组建64×256个B类网络。
(3)C类地址
把IP地址的32bit中最左边三位为110的地址通称为C类地址,C类地址用左边的24bit表示网络部分,右侧的8个比特表示主机部分。也就是说,C类地址首字节的十进制范围是192~223,每个C类网络标记可组建一个C类网络,其中可包含28台(即256台)主机。
在IPv4中,一共可组建32×256×256个C类网络。
通过对IP地址网络部分和主机部分的不同分隔方法,使人们能够通过IP地址覆盖不同范围的网络。
在A类和B类地址中,由于每个网络中容纳的主机数目比较多,有时为了对同一网络中的主机分区域管理,还要把一个网络划分为若干个子网。
在TCP/IP协议中,划分子网主要通过子网掩码实现。对于网络中的两台计算机,系统如何识别他们是否处于同一子网呢?为此,对每一个IP地址都要首先划分出网络标记和主机标记,对网络标记相同的多台主机,可以认为这些主机处于同一个网络中。子网掩码的作用就是标出IP地址中的网络标记部分。子网掩码也是一个32bit的二进制数,此数的特点是左边的若干位都是1,右边的若干位都是0。从左向右看该数据,一旦出现0,则该位置右侧的数据一定全部是0。IP地址中与子网掩码中值为1的位对应的部分就是网络标记。例如,某网络的子网掩码为255.255.255.0,那么在IP地址202.112.94.81中,202.112.94就是网络标记,81就是主机标记。
从IP地址的特点和子网掩码的含义看,如果不划分子网,A类网络的子网掩码默认为:255.0.0.0,即子网掩码左侧有8个1,则IP地址的高8位(二进制)是网络标识,其余24位是主机标识;同理,不划分子网的B类地址的子网掩码为:255.255.0.0,即子网掩码左侧有16个1,则IP地址的高16位(二进制)是网络标识,其余16位是主机标识。如果某B类网络中,子网掩码为:255.255.255.0(二进制形式中有24个1),则意味着虽然IP地址是B类地址,但以IP地址左侧的24位作为子网的网络标记,即只有IP地址中左侧24位二进制数相同的计算机才处于同一个子网中。即子网掩码把一个B类网络被划分成了256个子网。
在每个子网中,必须选择一个设备作为网关,并为网关指定一个子网段内的IP地址,此地址就是网关地址。网关是子网之间进行数据交换的关键接口。