什么是IP子网掩码?

子网掩码(Subnet Mask)是 IPv4 网络中一个非常关键的概念,它的主要作用是 区分 IP 地址中的“网络部分”和“主机部分”。

一、基本作用:划分 IP 地址结构

每个 IPv4 地址(如 192.168.1.10)本身只是一个 32 位的数字,单独看无法知道哪部分是网络、哪部分是主机。

子网掩码就是用来告诉设备:“前多少位是网络号,剩下的才是主机号”。

举例:
IP 地址:192.168.1.10
子网掩码:255.255.255.0(即 /24)
将两者转为二进制进行 按位与(AND)运算,就能得到网络地址:

IP 地址:   11000000.10101000.00000001.00001010  → 192.168.1.10
掩码:     11111111.11111111.11111111.00000000  → 255.255.255.0
---------------------------------------------------------------
网络地址: 11000000.10101000.00000001.00000000  → 192.168.1.0

所以,子网掩码帮助设备判断:这个 IP 属于哪个网络?

二、核心用途

  1. 判断目标 IP 是否在同一子网
    当一台电脑要发数据包时,它会用子网掩码计算:
  • 自己的网络地址
  • 目标 IP 的网络地址

如果两者相同 → 在同一局域网,直接通过 MAC 地址通信(二层)。
如果不相同 → 需要发给默认网关(路由器),由路由器转发(三层)。

例如:你的电脑 IP 是 192.168.1.10/24,想访问 192.168.1.50 → 同一子网,直接通信。
但访问 192.168.2.10 → 不同子网,必须经过路由器。

  1. 支持子网划分(Subnetting)
    通过调整子网掩码(如从 /24 改为 /25),可以把一个大网络划分为多个小网络,提高地址利用率、增强安全性和管理性。
  2. 定义广播地址
    结合子网掩码,可以算出一个子网的广播地址(用于向该子网内所有主机发送消息)。
    例如 192.168.1.0/24 的广播地址是 192.168.1.255。
  3. 确定可用主机范围
    子网掩码决定了每个子网能容纳多少台主机。
    比如:
    /24 → 8 位主机位 → 最多 2⁸ − 2 = 254 台主机
    /25 → 7 位主机位 → 最多 2⁷ − 2 = 126 台主机
    (减 2 是因为网络地址和广播地址不能分配给主机)

三、举例

你有一个 192.168.1.0/24 网络,但需要划分为 两个子网(如办公区和访客区)。

原始网络 192.168.1.0/24
IP 地址:192.168.1.0
子网掩码:/24 → 即 255.255.255.0

二进制表示:
IP 地址(仅看最后一段):00000000(即 .0)
子网掩码:前 24 位为网络位,后 8 位为主机位

网络位 | 主机位
11111111.11111111.11111111 | 00000000

在这个 /24 网络中:
网络部分:前 24 位(192.168.1)
主机部分:最后 8 位(可以分配 2⁸ − 2 = 254 个可用 IP)

你想把这个大网络 划分为更小的子网(比如办公区和访客区),就需要 增加网络位的数量,从而减少每个子网的主机数量。
但 IPv4 地址总长是固定的 32 位,所以你只能从 原来的主机位中“借”一些位,把它们变成 新的网络位。

原来有 8 位主机位(/24)
借 1 位 → 网络位变成 24 + 1 = 25 位
新子网掩码:/25 → 255.255.255.128
因为 128 的二进制是 10000000,表示第 25 位是网络位
剩下的主机位:8 − 1 = 7 位
现在结构变成:

前 25 位:网络标识(包括子网号)
后 7 位:主机标识

效果
子网数量:2¹ = 2 个子网

为什么子网数量是 2¹ = 2?
因为 借来的这 1 位可以取两个不同的值:
0
1
每个子网的主机数:2⁷ − 2 = 126 个可用 IP

每种取值对应一个独立的子网:

子网位子网网络地址范围
0192.168.1.0/25.0 ~ .127
1192.168.1.0/128.128 ~ .255

你可以把第一个子网给办公区,第二个给访客区。

如果你从主机位中 借了 n 位 用于划分子网:
可创建的子网数 = 2ⁿ
每个子网的可用主机数 = 2^(原主机位数 − n) − 2