1.概述
(1)定义
子网掩码(Subnet Mask)是一个 32 位的二进制数,与 IPv4 地址等长。它用于将一个 IP 地址拆分为 网络部分(Network ID) 和 主机部分(Host ID)。子网掩码本身不单独存在,必须配合 IP 地址使用。
(2)表示形式
点分十进制:例如 255.255.255.0 其二进制为:11111111.11111111.11111111.00000000
CIDR 前缀长度:在 IP 后加斜杠和网络位数,例如 192.168.1.0/24,表示前 24 位是网络部分,掩码等价于 255.255.255.0。
(3)二进制特征
子网掩码的二进制 1 必须从高位连续排列,后面连续跟 0,不能出现 1 和 0 交替。例如:
11111111.11111111.11111000.00000000 (255.255.248.0)合法
11111111.11111111.00011111.00000000 非法(0 和 1 交错)
(4)为什么需要子网掩码?
IP 地址本身没有内在结构,仅凭 192.168.1.100 无法区分哪部分是网络、哪部分是主机。子网掩码提供了这个边界,是子网划分、路由转发和地址管理的基础。
2.子网掩码的作用
(1)区分网络部分与主机部分
通过子网掩码中 1 对应的 IP 位为网络位,0 对应的位为主机位。例如:
IP:192.168.1.100 → 二进制 11000000.10101000.00000001.01100100
掩码:255.255.255.0 → 二进制 11111111.11111111.11111111.00000000
网络位 = 前 24 位,主机位 = 后 8 位。
(2)计算网络地址(子网地址)
将 IP 地址与子网掩码进行 按位与(AND) 运算,得到该 IP 所属子网的网络地址。示例:192.168.1.100 AND 255.255.255.0 = 192.168.1.0
(3)判断两个 IP 是否在同一子网
分别计算两个 IP 的网络地址,若相同则属于同一子网(可以直接通信),否则需要路由器转发。
192.168.1.100/24 与 192.168.1.200/24 网络地址均为 192.168.1.0 → 同一子网
192.168.2.100/24 的网络地址为 192.168.2.0 → 不同子网
(4)定义子网的边界范围
广播地址:主机位全设为 1。例如 192.168.1.0/24 的广播地址为 192.168.1.255。
可用主机地址:从网络地址+1 到 广播地址-1,数量 = 2^主机位数 - 2(扣除网络地址和广播地址)。
(5)控制广播域的大小
通过子网掩码将大网络划分为小个子网,每个子网是一个独立的广播域,广播只在子网内传播,减少网络拥塞。
(6)支持路由聚合与节省路由表
连续的子网可汇总为一条路由(CIDR 聚合)。例如 192.168.0.0/22 包含了 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24 四个子网,减少路由器表项。
(7)实现变长子网掩码(VLSM)
允许在不同子网使用不同长度的掩码,根据实际需求分配 IP,提高地址利用率。例如:
点对点链路用 /30(2 个可用主机)
小型办公室用 /27(30 个可用主机)
大型部门用 /24(254 个可用主机)
(8)安全隔离
不同子网之间默认不能直接通信,需经过路由器或防火墙,可以在边界部署 ACL 或安全策略,实现网络隔离。
3.子网掩码的分类
一.按掩码长度是否固定分类
(1)默认掩码(有类掩码)
对应传统 A、B、C 类地址的默认网络长度,掩码长度固定:
A 类:255.0.0.0 (/8) — 网络位 8 位,主机位 24 位
B 类:255.255.0.0 (/16) — 网络位 16 位,主机位 16 位
C 类:255.255.255.0 (/24) — 网络位 24 位,主机位 8 位
D 类(组播)和 E 类(保留)没有默认掩码概念。
(2)非默认掩码(子网划分掩码 / CIDR 掩码)
在默认掩码基础上借用主机位作为网络位,使掩码长度大于默认值。例如:
将 192.168.1.0/24 划分为两个 /25 子网,掩码 255.255.255.128
或者使用 /26、/27、/28 等更长的掩码。
二.按掩码值的常用长度分类
| 掩码(点分十进制) | CIDR | 主机位数 | 可用主机数 | 典型用途 |
|---|---|---|---|---|
| 255.255.255.252 | /30 | 2 | 2 | 点对点链路(路由器互联) |
| 255.255.255.248 | /29 | 3 | 6 | 小型管理网段 |
| 255.255.255.240 | /28 | 4 | 14 | 实验网、小型业务 |
| 255.255.255.224 | /27 | 5 | 30 | 小型办公室/分支机构 |
| 255.255.255.192 | /26 | 6 | 62 | 中规模部门 |
| 255.255.255.0 | /24 | 8 | 254 | 最常见,小型局域网 |
| 255.255.254.0 | /23 | 9 | 510 | 合并两个 C 类网段 |
| 255.255.248.0 | /21 | 11 | 2046 | 汇聚多个 C 类网段 |
| 255.255.0.0 | /16 | 16 | 65534 | B 类默认,大型网络 |
| 255.0.0.0 | /8 | 24 | 16万+ | A 类默认,超大型网络 |
三.按是否支持 VLSM 分类
(1)定长子网掩码(FLSM)
在同一主类网络中,所有子网使用相同的掩码长度。例如将 192.168.0.0/24 均匀分为 4 个 /26 子网。缺点:地址利用率低(若某子网只需 10 个地址,却得到 62 个地址块)。
(2)变长子网掩码(VLSM)
允许在同一主类网络的不同子网使用不同长度的掩码,按需分配,减少浪费。例如:
路由器互联链路:192.168.1.0/30(2 个主机)
销售部(50 人):192.168.1.64/26(62 个地址)
管理部(10 人):192.168.1.128/28(14 个地址)
VLSM 是现代网络规划的标准,需要路由协议支持(如 RIPv2、OSPF、EIGRP)。
四.特殊掩码
| 掩码 | CIDR | 用途说明 |
|---|---|---|
| 0.0.0.0 | /0 | 默认路由,匹配所有 IP |
| 255.255.255.255 | /32 | 单一主机路由(精确匹配) |
| 255.255.255.254 | /31 | 点对点链路(RFC 3021,2 个主机,无需广播地址) |
| 255.255.255.128 | /25 | 借用 1 位主机位,划分两个子网 |
| 255.255.255.192 | /26 | 借用 2 位主机位,划分四个子网 |
4.子网划分
(1)什么是子网划分?
将一个大的IP网络(主类网络或CIDR块)划分为多个更小的、逻辑上独立的子网络。每个子网拥有自己的网络地址和广播地址,通过路由器相互连接。
本质:向主机位“借用”若干位作为网络位,从而增加网络数量、减少每个子网的主机数。
(2)为什么需要子网划分?
减少广播域:广播帧只在子网内传播,不扩散到全网络,提高带宽利用率。
提高安全性:不同子网之间默认无法直接通信,可部署防火墙或ACL控制访问。
节省IP地址:按需分配适当大小的子网,避免分配整个A/B/C类地址导致的浪费。
便于管理:按部门、功能或地理位置划分,网络拓扑更清晰。
(3)子网划分的基本方法
步骤:
确定需要划分的主类网络(如 192.168.1.0/24)。
确定需要划分的子网数量,或每个子网需要的主机数。
计算需要借用的主机位数 n(满足 2^n ≥ 子网数)。
新的子网掩码长度 = 原掩码长度 + n。
计算每个子网的网络地址、广播地址、可用主机范围。
公式:
子网数 = 2^n (n为借用位数)
每个子网可用主机数 = 2^(剩余主机位数) - 2
子网掩码 = 原掩码的二进制后加 n 个1
(4)子网划分示例
任务:将 192.168.1.0/24(C类)划分为4个等大的子网,每个子网容纳至少50台主机。
计算:
原掩码 /24,主机位8位。
需要4个子网 → 2^n ≥ 4 → n=2(借用2位主机位)。
新掩码长度 = 24+2 = 26 → 255.255.255.192(/26)。
每个子网剩余主机位 = 8-2 = 6 → 每个子网主机数 = 2^6 - 2 = 62(满足≥50)。
地址块大小 = 2^6 = 64。
子网划分结果:
子网号 网络地址 可用范围 广播地址 子网0 192.168.1.0/26 .1 – .62 .63 子网1 192.168.1.64/26 .65 – .126 .127 子网2 192.168.1.128/26 .129 – .190 .191 子网3 192.168.1.192/26 .193 – .254 .255
| 子网号 | 网络地址 | 可用范围 | 广播地址 |
|---|---|---|---|
| 子网0 | 192.168.1.0/26 | .1 – .62 | .63 |
| 子网1 | 192.168.1.64/26 | .65 – .126 | .127 |
| 子网2 | 192.168.1.128/26 | .129 – .190 | .191 |
| 子网3 | 192.168.1.192/26 | .193 – .254 | .255 |
(5)变长子网掩码划分(VLSM)
传统子网划分要求所有子网大小相同(FLSM),但实际需求大小不一。VLSM允许在一个主类网络内使用多种掩码长度,按需分配,大幅提高地址利用率。
示例:从 192.168.1.0/24 中分配:
点对点链路(2个地址):用 /30,占用 4 个地址块。
销售部(50人):用 /26,占 64 个地址。
财务部(10人):用 /28,占 16 个地址。
按顺序从大块到小块分配,避免地址重叠。
5.子网汇总
(1)什么是子网汇总?
将多个连续的子网(或IP前缀)合并为一个更大的网络前缀,并以此生成一条路由条目,代替原来多个明细路由。汇总后的路由指向相同的下一跳。
本质:路由聚合,是子网划分的逆过程。
(2)为什么需要子网汇总?
减小路由表大小:避免每个子网都产生独立路由。
提高路由器性能:路由表小,查表快,内存占用少。
隐藏网络波动:子网的频繁震荡不会影响上层路由(汇总路由保持不变)。
增强网络稳定性:减少路由更新报文数量。
(3)子网汇总的计算规则
基本步骤:
将需要汇总的子网地址全部转换为二进制。
从高位开始比较,找出所有子网的公共前缀长度。
公共前缀部分即为汇总后的网络位,剩余位全部置0。
汇总路由的网络地址 = 公共前缀 + 补足0,掩码长度 = 公共前缀长度。
关键:被汇总的子网必须是连续的(地址块之间没有间隙),并且可以幂等合并(即汇总后的块必须是2的幂次大小,且起始地址对齐)。
(4)汇总示例
例子1:汇总 192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24。
二进制:
· 192.168.0.0/24 → 11000000.10101000.00000000.00000000
· 192.168.1.0/24 → 11000000.10101000.00000001.00000000
· 192.168.2.0/24 → 11000000.10101000.00000010.00000000
· 192.168.3.0/24 → 11000000.10101000.00000011.00000000
公共前缀:11000000.10101000.000000(共22位)
汇总路由:192.168.0.0/22(掩码 255.255.252.0)
例子2:只汇总 192.168.1.0/24 和 192.168.2.0/24(不连续,缺少0.0和3.0?实际上1.0和2.0之间无间隙,可汇总为 /23?检查:1.0(00000001)、2.0(00000010) 公共前缀前23位相同,但掩码为23位时网络地址为 192.168.0.0/23,这会包含0.0和1.0和2.0和3.0?不, /23 覆盖 192.168.0.0-192.168.1.255,不包括2.0。所以不能将1.0和2.0单独汇总成 /23,因为不满足幂等对齐。正确做法:要么汇总更大范围(包含0.0),要么不汇总。)
(5)汇总的约束条件
连续性:被汇总的子网地址在数值上必须是连续的(例如0,1,2,3)。
幂等性:汇总后的网络块大小必须是2的整数次幂,且起始地址是该大小的整数倍。
同一管理域:通常只对同一路由域内的前缀进行聚合。
(6)汇总与CIDR的关系
CIDR(无类域间路由)本质上是使用可变长度的前缀,既支持子网划分(更长的掩码)也支持子网汇总(更短的掩码)。CIDR消除了传统的A/B/C类限制,使路由聚合成为可能。
6.子网划分 vs 子网汇总对比
| 特性 | 子网划分 | 子网汇总 |
|---|---|---|
| 方向 | 大网络 → 小网络(放大) | 小网络 → 大网络(缩小) |
| 掩码变化 | 变长(增加掩码长度) | 变短(减少掩码长度) |
| 目的 | 减少广播域、节省地址、隔离 | 减小路由表、提高性能 |
| 适用范围 | 局域网内部地址分配 | 骨干路由器之间路由宣告 |
| 协议支持 | 静态、VLSM、DHCP | 静态、BGP、OSPF(区域汇总) |
| 计算关键 | 借用主机位 | 找出公共前缀 |
7.常见错误与注意事项
子网划分常见错误
忘记减去2(网络地址和广播地址),导致实际可用主机数不足。
子网掩码计算错误,导致子网重叠(例如两个子网使用了相同的网络地址)。
没有按实际需求划分(全部用同样大小),造成地址浪费。
子网汇总常见错误
试图汇总不连续的子网(造成汇总路由包含不存在的地址段,可能导致流量黑洞或错误路由)。
未考虑路由聚合的精度(过大会包含多余子网,过小则无效)。
动态路由协议中未正确配置区域边界汇总(如OSPF的ABR汇总)。