Skip to content

子网掩码与 CIDR 划分

基于 HTTP 现代标准 · 核于 2026-06

速查

  • 子网掩码本质:一串「连续的 1 后接连续的 0」(RFC 4632 强制连续),1 对应网络号位、0 对应主机号位;如 255.255.255.0
  • 网络地址 = IP 按位与(AND) 掩码:把主机位全部清零得到的就是这个子网的网络地址(子网编号)。
  • CIDR 记法IP/前缀长度,前缀 = 掩码中 1 的个数;/24 即掩码前 24 位为 1,等价 255.255.255.0
  • CIDR 取代 ABC 分类:1993 年 RFC 1518/1519 引入,废除 A(/8)/B(/16)/C(/24) 三种死板尺寸,前缀可取 0~32 任意值。
  • 块大小公式:一个 /n 块含 2^(32-n) 个地址;/24=256、/16=65536、/8=16777216。
  • 可用主机数 = 2^h − 2(h = 主机位数):减 2 是扣掉「网络地址」和「广播地址」;/24 有 254 个可用主机。
  • 广播地址:主机位全部置 1;该子网内最后一个地址,发往它即发给本网段全部主机。
  • 子网划分(subnetting):从主机位「借」高位当子网号,前缀变长、子网变多、每个子网更小。
  • VLSM 可变长子网掩码:同一网络内不同子网用不同长度掩码,按各网段实际规模裁剪,杜绝地址浪费。
  • 超网 / 路由聚合(supernetting):相邻的多个小块合并成一个短前缀大块对外通告,缩短前缀、压缩路由表项。
  • /31/32 例外/31(RFC 3021)用于点对点链路、2 个地址全可用;/32 表示单台主机路由。
  • 子网的意义:隔离广播域、限制故障域、提升 IP 利用率、便于分区管理与安全策略。

一个 IPv4 地址 192.168.10.37 单看分不出「哪段是网络、哪段是主机」——这条信息不在地址里,而在子网掩码里。本页讲清楚掩码如何用「按位与」算出网络地址,子网划分如何借主机位换更多子网,以及现代互联网用 CIDR/前缀 记法)取代僵化的 ABC 分类、用 VLSM 按需切分、用路由聚合把成片地址收成一条路由——这套机制就是今天 IP 地址分配与路由的地基。

一、子网掩码:地址里看不见的那条分界线

IPv4 地址共 32 位,逻辑上分成网络号(标识属于哪个网络)与主机号(标识网络内的哪台设备)两段。但地址本身(如 192.168.10.37)并不告诉你分界点在哪——这条信息由**子网掩码(subnet mask)**给出。

掩码也是 32 位,规则极简:连续的 1 标记网络号位,紧接连续的 0 标记主机号位(RFC 4632 规定 1 必须在高位且连续,不允许 255.0.255.0 这种穿插)。

text
IP    192.168.10.37  = 11000000.10101000.00001010.00100101
掩码  255.255.255.0  = 11111111.11111111.11111111.00000000
                       └──────── 网络号 24 位 ──────┘└主机 8 位┘

掩码里 1 的位置「盖住」的就是网络号,0 的位置留给主机号。Cloudflare 把它比作大公司收发室按「部门」而非「员工本人」分拣信件:掩码就是那张「部门表」,路由器靠它快速把数据包归到正确网段,而不必逐个核对每台设备的精确位置。

掩码只在网络内部使用

子网掩码不随数据包在公网上传输——公网数据包只携带目的 IP。掩码是路由器/主机本地的配置,用来对照 IP 算出它属于哪个子网。

二、按位与:算出网络地址

掩码最核心的用法,是用按位与(bitwise AND)从一个 IP 算出它所在子网的网络地址——把主机位全部清零即可。AND 的规则是「全 1 才得 1」,所以掩码为 1 处原样保留 IP 位,掩码为 0 处一律归零:

text
       IP   192.168.10.37   11000000.10101000.00001010.00100101
  AND  掩码  255.255.255.0   11111111.11111111.11111111.00000000
  ─────────────────────────────────────────────────────────────
  网络地址  192.168.10.0    11000000.10101000.00001010.00000000  ← 主机位清零

得到网络地址 192.168.10.0,CIDR 写法即 192.168.10.0/24。同一子网内的所有主机,与掩码做 AND 后会得到相同的网络地址——这正是路由器判断「两个地址是否同网段、要不要经过网关」的依据。

再取广播地址:把主机位全部置 1,即 192.168.10.255,发往它的数据包送达本网段所有主机。于是这个 /24 块边界一目了然:网络地址 .0(保留,主机位全 0)、首个可用 .1、最后可用 .254、广播 .255(保留,主机位全 1)。

三、CIDR:用 /前缀 取代 ABC 分类

早期 IPv4 用有类编址(classful):按地址最高几位把网络死板地分成 A、B、C 三类,分别对应 /8(256 万+ 主机)、/16(6.5 万 主机)、/24(254 主机) 三种固定尺寸。问题很尖锐:一个要 2000 台主机的机构,C 类(254 个)不够、B 类(65534 个)又浪费六万多——尺寸断档严重,地址被大量空耗,全球路由表随之膨胀。

1993 年 IETF 以 RFC 1518 / RFC 1519 引入 CIDR(Classless Inter-Domain Routing,无类域间路由),2006 年由 RFC 4632 更新。CIDR 抛弃「类」的概念:网络与主机的分界可落在 0~32 任意一位,用 IP/前缀长度 表示,前缀长度就是掩码中 1 的个数。

text
198.51.100.14/24   ←→  网络 198.51.100.0,掩码 255.255.255.0
10.0.0.0/22        ←→  掩码 255.255.252.0,含 1024 个地址

CIDR 记法的两种等价写法

/24255.255.255.0 是同一件事的两种写法:前缀 24 = 掩码里 24 个连续的 1。现代设备、文档、路由协议(OSPF/BGP)一律用 /前缀,简洁且不再受「类」束缚。

CIDR 前缀对照表(常用)

一个 /n 块的地址总数 = 2^(32-n);可用主机数 = 地址数 − 2(扣除网络地址与广播地址,/31/32 见下方例外)。

前缀子网掩码地址总数可用主机典型用途
/8255.0.0.016,777,21616,777,214旧 A 类 / IANA 大块
/16255.255.0.065,53665,534旧 B 类 / 大型园区
/22255.255.252.01,0241,022中小企业
/23255.255.254.0512510较大 LAN
/24255.255.255.0256254标准子网(旧 C 类)
/25255.255.255.128128126半个 C 类
/26255.255.255.1926462部门级子网
/27255.255.255.2243230小型子网
/28255.255.255.2401614小型 LAN
/29255.255.255.24886最小多主机段
/30255.255.255.25242点对点链路
/31255.255.255.25422点对点链路(RFC 3021)
/32255.255.255.25511单主机路由

/31/32 的例外

常规子网「减 2」,但 /31(RFC 3021)专为点对点链路设计,2 个地址都可用(点对点链路不需要广播地址);/32 表示一台精确主机(主机路由、回环地址 127.0.0.1/32 等)。

四、子网划分:从主机位「借」位

子网划分(subnetting)是把一个大网络切成若干小子网,手段是从主机位的高位「借」几位充当子网号:借的位越多,子网数越多、每个子网越小,前缀随之变长。以 /24 切成 4 个子网为例——借 2 位主机位(2^2 = 4 个子网),前缀从 /24/26

text
原网络          192.168.10.0/24            (主机 8 位)
借 2 位 → /26   掩码 255.255.255.192        (子网 2 位 + 主机 6 位)
子网 0   192.168.10.0/26    主机段 .1   – .62    广播 .63
子网 1   192.168.10.64/26   主机段 .65  – .126   广播 .127
子网 2   192.168.10.128/26  主机段 .129 – .190   广播 .191
子网 3   192.168.10.192/26  主机段 .193 – .254   广播 .255

每个 /26 子网含 2^6 = 64 个地址、62 个可用主机。「步长」正好是 64(256 ÷ 4)——这是手算子网边界的快捷法:块大小 = 256 − 掩码末段值256 − 192 = 64),网络地址按块大小递增。

一个完整的子网计算示例

给定 IP 172.16.20.200、掩码 /26255.255.255.192),求它属于哪个子网:

text
       IP   172.16.20.200  末段 200 = 11001000
  AND  /26  255.255.255.192 末段 192 = 11000000
  ─────────────────────────────────────────────
  网络地址  172.16.20.192   (200 落在 192 这个块)
  可用范围  .193 – .254     广播 .255    可用主机 2^6 − 2 = 62

五、VLSM:同一网络里掩码长度可变

如果每个子网都被迫用同样长度的掩码,仍会浪费——一条只连 2 台路由器的点对点链路,分一个 /26(62 个可用)就糟蹋了 60 个地址。**VLSM(Variable Length Subnet Mask,可变长子网掩码)**允许在同一个网络里,不同子网采用不同长度的掩码,按各网段的真实规模量体裁衣。CIDR 正是建立在 VLSM 之上的。

192.168.1.0/24 服务「100 台 / 50 台 / 两条点对点链路」为例,从大到小依次切分:

text
需求           分配             掩码    可用主机   地址范围
100 台主机  →  192.168.1.0/25   /25     126       .0   – .127
 50 台主机  →  192.168.1.128/26 /26     62        .128 – .191
点对点链路1 →  192.168.1.192/30 /30     2         .192 – .195
点对点链路2 →  192.168.1.196/30 /30     2         .196 – .199(.200 – .255 仍空余)

每个网段都拿到「刚好够用」的大小,地址利用率大幅提高——这是有类编址时代根本做不到的。切分口诀:先按「主机需求从大到小」排序,再从地址空间起点连续分配,避免大块被夹在小块中间造成无法对齐的碎片。

六、超网与路由聚合:把成片地址收成一条路由

子网划分是「把大块切小」,超网(supernetting)/ 路由聚合(route aggregation)正相反——把多个连续的小块合并成一个短前缀的大块对外通告。它发生在路由层面,目的是压缩路由表

经典例子(Wikipedia):16 个连续的 /24 网络可聚合成 1 个 /20 对外通告:

text
198.51.96.0/24
198.51.97.0/24      16 个连续 /24
198.51.98.0/24   →  聚合通告为   198.51.96.0/20   (1 条路由替代 16 条)
   …  (共 16 个)
198.51.111.0/24

前缀从 /24 缩短到 /20(覆盖 16 × 256 = 4096 个地址),上游路由器只需 1 条表项就能匹配这 16 个网络。聚合的前提是地址块连续且可对齐——这也是地址按层级(IANA → RIR → LIR → 终端)分配时刻意保证连续性的原因。CIDR + 聚合是 BGP 全球路由表得以「相对可控」增长的关键机制。

子网划分 vs 超网聚合

子网划分:前缀变长(如 /24/26),一个网络拆成多个,便于内部管理。 超网聚合:前缀变短(如 /24/20),多个网络并成一个,减少路由表项。 方向相反,但都靠「移动网络/主机的分界线」实现。

七、为什么要划分子网

子网不是为了「好看」,而是解决真实的网络工程问题:

  • 隔离广播域、缩小故障域:ARP、DHCP 等广播只在本子网内泛洪——每个子网就是一个独立广播域;广播风暴、环路、错误配置也被限制在本网段,不蔓延全网。
  • 提升 IP 利用率:配合 VLSM 按需切分,避免有类编址那种「要么不够、要么浪费六万」的尴尬。
  • 缩短路由路径:如 Cloudflare 所述,数据按子网分拣后能走更直接的路径,不必经过无关路由器绕路。
  • 便于管理与安全:按部门/楼层/职能分子网,可在子网边界施加访问控制(ACL、防火墙策略),实现分区隔离。

小结

子网掩码用「连续 1 + 连续 0」划出网络号与主机号的分界,与 IP 做按位与即得网络地址、主机位全置 1 即得广播地址,可用主机数为 2^h − 2。现代互联网以 CIDR(/前缀 记法)取代僵化的 ABC 分类,让分界落在任意一位;向下用子网划分借主机位换更多更小的子网,用 VLSM 按需裁剪杜绝浪费;向上用超网聚合把连续小块收成短前缀大块,压缩全球路由表。一句话主线:掩码定分界,AND 算网络,借位做子网,聚合省路由——这套「移动分界线」的艺术,就是 IP 地址分配与路由可扩展的根本。至于地址如何被路由器实际查表转发、网关如何衔接网段,是下一段旅程的内容。

参考:Cloudflare · What is a subnet?Wikipedia · CIDRRFC 4632(CIDR)RFC 1519(CIDR 1993)RFC 3021(/31 链路)