1、子网掩码
在讲解子网划分之前首先我们需要了解什么是子网掩码(Subnet Mask)。
与IP地址类似,子网掩码由3bit(四个字节)组成,以点分十进制表示。然而他本身不是一个IP地址,子网掩码的使用规则是,子网掩码 由前面的连续的1和后面连续的0组成。
例如:
255.255.255.0 = 11111111.11111111.11111111.00000000。
通常,将前面连续的1的数量称为一个子网掩码的长度,例如上面的这个例子就是一个24位的子网掩码(x.x.x.x/24)。
2、有类网络与无类网络
(1)有类网络
有类网络就是在IP地址中部分节点被固定的网络。常见的有类网路划分有三类
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
设备只需要读取IP地址前面几个bit就知道如何区分该IP地址的网络部分和节点地址部分,这样网络被称为有类网络(例如RIP V 1就是使用的有类路由)。
(2)无类路由
设想一下,假如一个公司有500台电脑需要接入网络,但他使用的是一个B类网络很显然这样的话地址就不够用了,而如果使用B类网络的话又会浪费很多的IP地址资源。
- 一个C类网络可容纳的节点数为=256,去掉两个特殊地址(网络号和广播地址)剩下254个可用IP
- 一个B类网络可容纳的节点数为=65536,去掉两个特殊地址(网络号和广播地址)剩65534个可用IP
于是便诞生了子网划分,经过划分的子网称为无类网络。
OK,我们继续回到刚刚的500台主机接入C类不够而接入B类浪费的问题,可以采用子网划分的问题。
首先,我们需要了解以下内容。
我们已经知道了,节点地址的容量取决与节点部分的bit数量,总之,网络部分和子网以及节点地址部分的bit数量加起来必须等于32bit。
也就是说,节点地址部分,1bit可以表示两个节点地址,即对吧?
那么,2bit呢?3bit呢?以此类推,我们可得出:
换算表
...... | ...... |
根据换算表的规律,一个网络中节点地址的bit数量,决定了该网络相应的所能够容纳的节点数量。我们的案例需要500台设备的网络接入显然就是个节点IP地址,也就是9bit的节点地址长度。
现在该轮到子网掩码登场了。
例如,我们使用的是172.16.0.0这个B类网络来为客户提供服务,那么我们就需要将他进行划分,将其介个成正好满足客户需求的网络。
前面讲过我们需要9bit的节点地址位,那么网络位就是32-9=23,也就是说,需要将网络定义为/23(这个/23是为了在书写时更好的理解与区分)的。前面讲过子网掩码是由二进制0和1构成,那么我们采用二进制表示就是:
11111111.11111111.11111110.00000000=255.255.254.0(这个254就是用第三个八位组的256减去”二的0所占位数次方。
因此分配给客户的网络地址范围为172.16.0.0/23.
问题来了,该B类网络经过这样的子网划分后究竟划分了出来那些个子网呢?
首先,前面两个八位组,也就是前面16bit必须一致,这样才属于B类网络,而从第17—23位相同的则属于同一B类网络的同一子网,不同则属于同一B类网络的不同子网。
网络部分相同,才能被认为时在同一子网中,也就是说,我们所划分出的子网,例题中前面16bit必须等于172.16 这样才算是在172.16.0.0 这个B类网络中。
我们来看这个:
172.16.0.1=10101100.00010000.00000000.00000001
255.254.0.0=11111111.11111111.11111110.00000000
和
172.16.1.1=10101100.00010000.00000001.00000001
255.255.254.0=11111111.11111111.11111110.00000000
如上所述,为了满足客户的要求,完成子网划分后,子网IP地址采用二进制表示;如果其网络部分一致,则被认为划分的子网在同一网络;如果其网络部分不一致,则被认为划分的子网不在同一网络。很明显,上面两个IP地址的网络部分是相同的,因此我们认为他们在同一个子网中。
再往下看:
172.16.0.1=10101100.00010000.00000000.00000001
255.255.254.0=11111111.11111111.11111110.00000000
和
172.16.2.1=10101100.00010000.00000010.00000001
255.255.254.0=11111111.11111111.11111110.00000000
这两个IP地址的网络部分的最后一位是不同的,所以他们认为不在同一子网中。