欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

子网掩码的作用和用法

程序员文章站 2024-03-17 13:08:16
...

 

从前有一个地主,有256间房子,地主家的门牌号码是“192.168.1”,那么他家第一间房子的门牌号码是192.168.1.0,第二间是192.168.1.1,…第256间的编号是192.168.1.255。

地主老了,需要把256间房子分给4个儿子,平均分配,每个儿子可以分64间。

请来一位先生主持公道,先生这么来操作:
192.168.1.0-192.168.1.63 分给大儿子
192.168.1.64-192.168.1.127 分给二儿子
192.168.1.128 -192.168.1.191 分给三儿子
192.168.1.192-192.168.1.255 分给四儿子

那如何来描述四个儿子的子网网段呢?
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

/26是什么鬼?
255.255.255.192的二进制是多少? “11111111-11111111-11111111-11”大家数数一共多少个1?不用数了,是26个1,为了简化子网掩码的表示,用/26代替255.255.255.192。

按位与运算
我们来看大儿子的网段192.168.1.0/26是如何得到的?

以大儿子的房间为例:
192.168.1.0-192.168.1.63

二进制表示:
192.168.1.0

11000000.10101000.00000001.00000000

192.168.1.63

11000000.10101000.00000001.00111111

首尾地址完全相同的是多少?
11000000.10101000.00000001.00

数数一共多少位?26位!那么用这个“192.168.1.0/26”就可以表示大儿子所有房间。

对照房间的门牌号码“192.168.1.199”,很显然属于四儿子的。


一个主机192.168.1.199/26 能否和直连主机192.168.1.200/24 通信?可以的因为都是四儿子的房间。

一个主机192.168.1.199/26 能否和直连主机
192.168.1.1/24 通信? 不可以因为一个是大儿子的房间,一个是四儿子的房间,无法直连通信!

=============================================================================

作者:纪言
链接:https://www.zhihu.com/question/56895036/answer/447915532
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

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

计算:

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了

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

=========================================================================================

1、子网掩码的作用

在设置电脑IP时,会碰到两个重要的参数,一个是IP地址,一个是子网掩码。IP地址是互联网上每个子网或每个主机在网络上的唯一身份标签,那子网掩码是干什么用的呢?

随着互联网的发展,越来越多的网络产生,有的网络多则几百台主机,少则区区几台,这样就浪费了大量的IP地址,所以要划分子网。为了有序地区分和管理不同的子网,就需要使用子网掩码。

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

2、子网掩码的用法

子网掩码是一个32位地址,对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。

子网掩码通常有十进制和二级制两种表现形式,255.255.0.0用二进制表示则为1111111.11111111.00000000.00000000,其中,前面2个字节的16位“1”表示网络号,后面2个字节的16位“0”表示主机号。

当配合IP地址172.20.0.4使用时,则表示该IP地址是B类地址,172.20是网络标识,0.4是主机标识。也即子网掩码AND IP地址的部分是网络标识,子网掩码取反后AND IP地址的部分即为主机标识。

子网掩码有两个特殊地址,当子网掩码的主机地址全为0时,表示该网络地址,当子网掩码的主机地址全为1时,表示该网络的广播地址。

 

例1 不同子网下的主机能否直接通信

假设两个IP地址分别是172.20.0.18和172.20.1.16,子网掩码都是255.255.255.0。

我们可以知道两者的网络标识分别是172.20.0和172.20.1,无法直接通信,也就无法PING通。要想能相互通信,需要将子网掩码改成255.255.0.0。

 

例2 如何确定子网掩码

1)将主机数目转化为二进制来表示,总位数是N;

2)将掩码地址全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。

如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:

1)700=1010111100,该二进制为十位数,N = 10

2)将子网掩码255.255.255.255从后向前的10位全部置0,即为: 11111111.11111111.11111100.00000000,也即255.255.252.0。

255.255.252.0就是168.195.0.0的700台主机的子网掩码了。

 

例3 如何理解172.20.1.0/26

上文中的26代表主机ID的掩码地址长度,从前往后有26位,即子网掩码的地址是255.255.255.192。

 

 

 

参考:

链接:https://blog.csdn.net/kongguguren/article/details/79427465

链接:https://www.zhihu.com/question/56895036/answer/150953183