子网掩码的理解

本文最后更新于:2024年8月27日 上午

首先子网掩码这名字取得很好,它是用来划分子网的网段和遮掩部分IP地址。换个说法就是:它是用来划分IP地址中哪一部分是网络号,哪一部分是机器号

那么,问题来了 :

怎么划分子网网段?

为什么要遮掩IP地址?怎么个遮掩法?

现在我们有这么个IP地址:192.168.1.129

我们并不知道它的网络号,也不知道它属于哪部分子网网段。我们现在就需要一个东西来划分出子网网段,这个东西就叫:子网掩码

再,我们给出具体子网掩码:255.255.255.0

什么要这么给?因为子网掩码的长度要和IP地址相同32位,每8位预先被划分为一段。255的二进制就是1111 1111。

那么我们把子网掩码设置为255.255.255.193行不行?

这需要看它的二进制,子网掩码还需要满足一个条件才可以使用:它的二进制中1和0必须是连续的。

255.255.255.193的二进制:

1111 1111.1111 1111.1111 1111.1100 0001

可以看出它1并不连续,所以255.255.255.193不能作为子网掩码使用。

255.255.255.0就很符合条件。

那子网掩码怎么用?

答:用与运算来遮掩IP地址。1&1=1、1&0=0、0&0=0、0&1=0

IP地址:192.168.1.129

二进制:

1100 0000.1010 1000.0000 0001.1000 0001

子网掩码:255.255.255.0

二进制:

1111 1111.1111 1111.1111 1111.0000 0000

计算:

1
2
3
4
1100 0000.1010 1000.0000 0001.1000 0001
1111 1111.1111 1111.1111 1111.0000 0000
———————————————————————————————————————
1100 0000.1010 1000.0000 0001.0000 0000

计算后的这段二进制代码相比于原来的IP地址,后面8位被用0遮掩了。

为什么要遮掩?因为我们不必关心后面8位是1还是0了。子网网段已经被划分出来了。

1100 0000.1010 1000.0000 0001.0000 0000的十进制:192.168.1.0

也就是说,从192.168.1.0到192.168.1.255都是同一个子网网段,里面的0-255号可以分配给不同的机器,并且它们之间可以直接相互访问。

0—255号都是机器的号码,IP地址显示的就是其中129号。

192.168.1.0就是所谓的网络号,也可以写作192.168.1或者192.168.1.0\24(24指的是IP地址中有24位未被遮掩)

IP地址的意思就很明白了,网段(网络号)加上机器号码。同一个IP地址根据不同子网掩码,会划分出不同的网络号和机器号。

—————————————————————————————————————

但是,现在就出现了个问题,我子网掩码的最后8位全是0,要是最后8位不全为0怎么办?又是什么意思呢?

现在我们就要看上面子网掩码为255.255.255.0的时候机器号码是从0到255的,那如果我想在0到255里再划分一部分呢?

给出新IP地址:192.168.1.188 再给出新的子网掩码:255.255.255.224

现在IP的网络号就不是192.168.1.0了,不再是网段192.168.1.0到192.168.1.255了

1
2
3
4
1100 0000.1010 1000.0000 0001.1011 1100  
1111 1111.1111 1111.1111 1111.1110 0000
———————————————————————————————————————
1100 0000.1010 1000.0000 0001.1010 0000

不再是24位未被遮掩了,而是27位未被遮掩。被遮掩的后5位,我们不必再关心它是1还是0了。

这就意味着:后5位不论怎么变换,都是在同一个网段里。

后5位的变化是在

1100 0000.1010 1000.0000 0001.1010 0000

1100 0000.1010 1000.0000 0001.1011 1111

之间的。

它的十进制:192.168.1.160到192.168.1.191是由新的子网掩码划分出来的子网网段。

我们称192.168.1.160\27是它的网络号,它的机器号是在160到191之间任意分配出去。之前的IP地址:192.168.1.188属于其中。

总结:子网掩码就是用来遮掩IP地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段,不能单独看待。

📢📢📢:文章来源于知乎用户纪言,修改了几处表述不恰当的地方。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!