关于IP、子网掩码、主机位和网络位的计算方法

如何通过子网掩码和掩码位计算一个IP地址的网络地址和可分配的主机位
关于IP、子网掩码、主机位和网络位的计算方法

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。