IP 地址中的子网掩码 以及如何计算子网数量

/ 技术分享 / 没有评论 / 840浏览

前言

前两天的时候,有个师妹问问题:“136.23.15.78/28” 后面这个/28是什么意思啊

当时一脸蒙蔽 +_+ ,大学学的网络基础全都还给老师了 。。。

所以决定写篇博客记录下自己重新学习网络划分中遇到的知识点和遇到的问题

子网掩码是什么?

既然是重新学习,所以首先要把一些基本的概念再复习一下,首先我们要清楚 IP 地址中子网掩码的概念和作用分别是什么?

子网掩码是一个应用于 TCP/IP 网络的32位二进制值,它可以屏蔽掉 IP 地址中的一部分,从而分离出 IP 地址中的网络部分与主机部分,基于子网掩码,管理员可以将网络进一步划分为若干子网。

看了上面的解释,是不是和我一样,还是一脸蒙蔽,不知道说的到底是什么意思。。。 没关系,继续往下看。慢慢的你就会明白这个子网掩码到底有什么用了

为什么需要使用子网掩码

在使用TCP/IP协议的两台计算机之间进行通信时,我们通过将本机的子网掩码与接受方主机的ip地址进行'与'运算,即可得到目标主机所在的网络号,又由于每台主机在配置TCP/IP协议时都设置了一个本机ip地址与子网掩码,所以可以知道本机所在的网络号。

通过比较这两个网络号,就可以知道接受方主机是否在本网络上。如果网络号相同,表明接受方在本网络上,那么可以通过相关的协议把数据包直接发送到目标主机;如果网络号不同,表明目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其他网络,直至到达目的地。在这个过程中你可以看到,子网掩码是不可或缺的!

通过子网掩码得到网络/主机地址

既然子网掩码这么重要,那么它是如何分离出ip地址中的网络地址和主机地址的呢?

过程如下:

1.将ip地址与子网掩码转换成二进制;

2.将二进制形式的ip地址与子网掩码做'与'运算,将答案化为十进制便得到网络地址;

3.将二进制形式的子网掩码取'反';

4.将取'反'后的子网掩码与ip地址做'与'运算,将答案化为十进制便得到主机地址。


下面我们用一个例子给大家演示:

假设有一个I P 地址:192.168.0.1

它的子网掩码为:255.255.255.0

这个地方我们同样可以写成 192.168.0.1/24 这里24表示的就是** 子网掩码 **里面的前面连续的“1”的个数为24个

首先我们将 I P 地址 化为二进制为: 11000000 . 10101000 . 00000000 . 00000001

子网掩码: 11111111 . 11111111 . 11111111 . 00000000

将两者做'与'运算得:11000000.10101000.00000000.00000000

将其化为十进制得:192.168.0.0

这个 192.168.0.0 便是上面 IP 地址(192.168.0.1)的网络地址,同理,可以获取到主机地址