子网掩码的作用和用法
从前有一个地主,有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
推荐阅读
-
子网掩码的作用和用法
-
子网掩码和通配符掩码的区别
-
[一起学Hive]之十一-Hive中Join的类型和用法 博客分类: hive hiveHive Join
-
Kotlin中的?. ?: !!. 区别和用法
-
LayoutInflater和inflate()方法的用法 博客分类: android androidLayoutInflater
-
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
-
Java中replace、replaceAll和replaceFirst函数的用法小结
-
Java中volatile关键字的作用与用法详解
-
Java中replace、replaceAll和replaceFirst函数的用法小结
-
Java中FilterInputStream和FilterOutputStream的用法详解