一、ip地址与子网掩码

1.ip地址

ip地址是一种在internet上给主机编址的方式,也是网际协议地址。ip地址是ip协议提供的同一地址格式。

ip地址用于表示连入internet上的每台主机,它是识别每台主机的唯一标识。

在IPv4中,ip地址由32个二进制位组成,通常用点分十进制形式标识。

2.子网掩码

它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

二、网络位与主机位的计算

ip地址与子网掩码使用,分为网络位与主机位。

例如:一台设备ip地址为192.168.1.1 ,子网掩码为:255.255.255.0

我们可能通常一眼就能看出这台设备是192.168.1.0网段的,可是,具体是如何得到的呢?

其实,它的计算方式是,将ip地址与子网掩码换算成为2进制,进行“与”运算,得到的就是这台设备的网络位,也就是我们所说的网段,剩下的就是主机位,如下图:

Java ip和子网掩码按位与 ip地址与子网掩码与运算_网络地址

再将得到的结果转化为十进制,即:192.168.1.0,也就是网络位。

也就是说,网络位与主机位可以在子网掩码的修改下,进行变化,我们在下面的“变长子网掩码”中会讲到。

三、ip地址的分类

1.ip地址分类如下:

Java ip和子网掩码按位与 ip地址与子网掩码与运算_网络_02

我们同样可以通过计算,获得ip地址的范围,其中,我们只需要记住,在ip地址换算为二进制时:

A类ip地址固定首高位为0

B类ip地址固定首高位为,次高位为10

C类ip地址固定首高位为,次高位和第三位为110即可。

我们以A类ip地址为例,当固定首高位为0时,A类ip地址最小为00000000,最大为01111111,换算为10进制,即0~127。

所以,A类ip地址范围为:0.0.0.0~127.255.255.255 。

同理,B类ip地址固定首高位为,次高位为10,那么B类ip地址最小为10000000,最大为10111111,换算为10进制,即128~191。

所以,B类ip地址范围为:128.0.0.0~191.255.255.255 。

2.每一类ip地址所对应的缺省子网掩码如下

Java ip和子网掩码按位与 ip地址与子网掩码与运算_Java ip和子网掩码按位与_03

四、特殊的ip地址

在每个网段中,主机位全置(转化为二进制)0,为该网段的网络地址;

在每个网段中,主机位全置(转化为二进制)1,为该网段的广播地址;

也就是说,每个网段都有两个特殊的ip地址不可用。

除此之外,还有一些特殊的网段,如下图:

Java ip和子网掩码按位与 ip地址与子网掩码与运算_子网掩码_04

五、变长子网掩码

1.定义

变长子网掩码(VLSM)是指一个网络可以用不同的掩码进行配置,将一个网络(网络地址)划分为多个子网,提供更多的灵活性,同时保证在每个子网能够有足够数量的主机。

2.好处

可变长子网掩码缓解了使用缺省子网掩码导致的地址浪费问题;同时也为企业网络提供了更为有效的偏址方案。

3.原理

上面我们讲过了,一个ip地址的网络位,是通过ip地址与子网掩码进行“与”运算得到的。我们以C类ip地址192.168.1.1为例,C类ip地址的缺省子网掩码为:255.255.255.0,转化为二进制为11111111.11111111.11111111.00000000,可用主机位为2^8-2=254个。我们可以通过向最后8位借位的方式,将整个192.168.1.0网段划分出更多的网段。但是为什么借位就能划分出更多的网段呢?我通过计算的方式,为大家讲解:

如果我们接1位会出现以下情况:

借1位后,子网掩码变成了11111111.11111111.11111111.10000000

(注:借位时只能从最高位开始借。)

此时,我们通过ip地址与子网掩码进行“与”运算的方式,计算192.168.1.1与192.168.1.129的网络位,如下图:

Java ip和子网掩码按位与 ip地址与子网掩码与运算_子网掩码_05

得出的结果转化为10进制 为:192.168.1.0与192.168.1.128,计算出来的结果不同,意味着这两个ip在修改子网掩码后,已经成为两个不同网段的ip地址了。

4.具体计算

我们知道了子网掩码借位可以增加网段,相应的主机位会相应减少,具体是多少呢?又如何计算呢?我总结如下:

每当子网掩码借n位,就会将原网段划分为2^n个网段,主机位为2^(8-n) -2  (减2为减去该网段的网络地址与主机位)。

例如:借1位,原网段就会被划分为2^1=2个网段,主机位为2^(8-1)-2=126个。

此时,我们就可以根据需要的网段,需要的设备进行网段划分了。