子网掩码(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 属于哪个网络?
二、核心用途
- 判断目标 IP 是否在同一子网
当一台电脑要发数据包时,它会用子网掩码计算:
- 自己的网络地址
- 目标 IP 的网络地址
如果两者相同 → 在同一局域网,直接通过 MAC 地址通信(二层)。
如果不相同 → 需要发给默认网关(路由器),由路由器转发(三层)。
例如:你的电脑 IP 是 192.168.1.10/24,想访问 192.168.1.50 → 同一子网,直接通信。
但访问 192.168.2.10 → 不同子网,必须经过路由器。
- 支持子网划分(Subnetting)
通过调整子网掩码(如从 /24 改为 /25),可以把一个大网络划分为多个小网络,提高地址利用率、增强安全性和管理性。 - 定义广播地址
结合子网掩码,可以算出一个子网的广播地址(用于向该子网内所有主机发送消息)。
例如 192.168.1.0/24 的广播地址是 192.168.1.255。 - 确定可用主机范围
子网掩码决定了每个子网能容纳多少台主机。
比如:
/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
每种取值对应一个独立的子网:
| 子网位 | 子网网络地址 | 范围 |
|---|---|---|
| 0 | 192.168.1.0/25 | .0 ~ .127 |
| 1 | 192.168.1.0/128 | .128 ~ .255 |
你可以把第一个子网给办公区,第二个给访客区。
如果你从主机位中 借了 n 位 用于划分子网:
可创建的子网数 = 2ⁿ
每个子网的可用主机数 = 2^(原主机位数 − n) − 2