网络知识

什么是子网掩码

子网掩码概念

子网掩码诞生于子网也是为子网服务的,为什么要有子网?一个大型网络,大到公网,小到公司内部网络,都太大了。我们要划分成若干块来进行管理和分配,就是把大网切成小块。例如我们就把公网IP分成几万几十万个小块给不同的国家、公司、组织用,这时候我一个电信运营商要申请公网,那么就要给我一个块,这一块可能是10.22.0.1~10.24.255.255,这个区段就属于一个公网子网。假如某大公司内部网络很庞大,直接管理非常复杂,就把大的公司网分成若干子网,不同子网给不同部门使用。网关接到两个IP通信需求,通过子网掩码计算出都在同一个子网,就可以子网内通信。否则网关就要根据计算出来的子网号,去寻找对应的子网网关。但是问题来了。

  • 怎么来判断这个网络的网络号,也就是属于哪个子网(哪个部门)?
  • 怎么判断每个部门可以最大用多少台电脑?
  • 怎么判断这个部门的IP区间。这些都可以由网关进行管理,但是网关依据什么去管呢?

这时候就是子网掩码的任务了,子网掩码是一个和IP地址格式类似的代码。IP地址是由4段0~255组成的十进制数码组成,32位二进制数码组成,这些数字都可以是任意的。但是子网掩码就不一样了,它前N位必须是1,后面必须是0。这样的格式换算下来就是255.255.255.0或者255.255.224.0格式了。所以见到例如255.255.224.192必然是错的,因为不符合先1后0的格式。

要想知道这个IP的网络号(属于哪个子网),直接用子网掩码和IP地址的二进制按位与计算,就可以得知。假如IP:109.153.208.195和255.255.255.0计算,就是109.153.208.0子网。但是掩码变为255.255.224.0的话,那么就属于109.153.192.0子网了。但是,用不同的子网掩码去计算是不可以的,这样有可能错误的计算为同一个子网,并且现实不允许这个存在。

怎么判断这个子网最多能容纳多少电脑,通过前面看出,所有IP和掩码与计算,掩码只要是0的,出来的结果都一样。这不就懂了,结果一样的IP,就是在一个子网的IP,决定它数量的不就是掩码后面有多少个0。4个0的255.255.255.240就是8台,8个0的255.255.255.0就是255台,13个0的255.255.224.0就是8192台


例子详解

现在我们有这么个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地址是由或0或1的数字组成的长长的纸带,把ip地址这张纸带用子网掩码一剪,左边是网络号纸带,右边是主机号纸带我是一台主机,如果你给我一个IP地址,我就先用子网掩码把这个IP地址剪开,看一下网络号纸带是不是和我一样如果一样就在同一个子网里,就可以直接发消息,如果不一样就不在一个子网里,需要网关帮忙转发消息。