如何理解子网掩码?

如何理解子网掩码?

我正好学到这一部分了,全部答案看下来,就最高赞车小胖的答案好理解点,但我也想了半小时。

下面我写一下,作为一个想破头皮才get的理解思路,保证比上面的答案好理解。

仅限ip4

首先子网掩码这名字取得很好,它是用来划分子网的网段和遮掩部分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

计算:

计算后的这段二进制代码相比于原来的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了

不再是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地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段。