On this page
什么是子网掩码
子网掩码,即subnet mask,是一个用来指明一个IP地址中哪些是网络地址,哪些是主机地址的位掩码,一个典型的子网掩码如下:255.255.255.0
使用子网掩码计算IP的主机
计算方法基于二进制。以最常见的子网掩码255.255.255.0为例,这个子网掩码支持254台主机,这是因为如果将这个子网掩码转换为二进制,结果是
11111111.11111111.11111111.0000000000
其中二进制数1的部分代表这是已被占用的位,即网络位,0的部分代表这是未被占用的位,即主机位,因此主机位从00000000到11111111就是十进制从0到255,除去预留的0和255用于表示网络本身和广播,这个网段有254个可分配的主机位。
再举一个例子,255.255.255.192换成二进制就是
11111111.11111111.11111111.11000000
一共有6个位可以用来分配主机位,从000000到111111就是十进制从0到63,一共64位,除去000000用来标识子网本身和111111用作广播,因此一共有62位可以用来分配主机位
掩码位(CIDR)
掩码位是跟在IP地址后面用来标识子网掩码的数字,一个例子如下:192.168.0.1/24。
掩码位实际上就是子网掩码中1的数量,24就是
11111111.11111111.11111111.00000000
一共24个1,换成十进制就是255.255.255.0,因此也可以得出,24就是表示这个子网掩码有24个网络位和8个主机位。
同理,/25就是
11111111.11111111.11111111.10000000
也就是255.255.255.128,再根据子网掩码的计算方法就可以计算出这个网络有多少可用的主机位。
第二种方法
另外一种方法更简单,已知网络位有24为,主机位有8位,由于在二进制下每个主机位有0和1两种状态,因此主机位共有2的8次方个,也就是256个,除去用于表示子网的0位和用于广播的255位,该网络共有254个可分配的主机位。
使用子网掩码计算IP的网络地址
计算网络地址主要运营的是IP地址的二进制和子网掩码的二进制的每一位二进制数进行AND运算,这里以这个IP为例:180.97.107.90/17
AND运算的方法如下:
AND | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
也就是只说有1 AND 1 = 1,其他都是0。
那么根据这个IP:180.97.107.90/17,我们可以得知,首先它的掩码位是17,因此,它的子网掩码是
11111111.11111111.10000000.00000000
再将IP转换为二进制,结果是:
10110100.01100001.01101011.01011010
进行AND运算:
Binary(IP) | Binary(mask) | AND result | Decimal(Network) |
---|---|---|---|
10110100 | 11111111 | 10110100 | 180 |
01100001 | 11111111 | 01100001 | 97 |
01101011 | 10000000 | 00000000 | 0 |
01011010 | 00000000 | 00000000 | 0 |
所以,IP 180.97.107.90/17的网络地址为180.97.0.0。