首页/网络/IP 与子网速查/CIDR 表示法与按位与原理
掩码与 CIDR 速算50 条

CIDR 表示法与按位与原理

CIDR 用 a.b.c.d/n 表示网段:前 n 位是网络位,后 32-n 位是主机位;网络地址 = IP 与掩码按位与的结果,是一切子网计算的出发点。

IP 与子网速查网络更新于 2026-10-13

CIDR 是什么

CIDR(无类别域间路由,RFC 4632)用 a.b.c.d/n 表示一个网段:斜杠后的 n 是前缀长度,即网络位数,剩下 32-n 位是主机位。它取代了早年按 A/B/C 类固定边界的分配方式,让地址可以按实际需要切分与合并,也让路由表能用一条前缀代表成百上千个网段。

网络地址怎么来

把 IPv4 看成 32 个二进制位后,网络地址就是「IP 与掩码按位与」的结果:掩码为 1 的位保留(网络位),为 0 的位全部清零(主机位)。广播地址则是把主机位全部置 1,也就是网络地址加上块大小减一。这两个运算是一切子网计算、判断同网段、写路由汇总的出发点,手算与工具算的是同一件事。

基本信息

表示法a.b.c.d/n,n 为前缀长度(网络位数)
网络地址IP AND 掩码(主机位清零)
广播地址网络地址 OR 通配符(主机位全置 1)
可用主机2^(32-n) - 2
规范来源RFC 4632(CIDR)、RFC 950(子网划分)

典型使用场景

  • 把一个大网段按部门或楼层切成若干子网,先在纸面算出边界再配置
  • 核对现网某台主机到底属于哪个网段,判断它和网关是否同段
  • 写路由或防火墙规则时确认哪个前缀能覆盖一批地址,避免范围写错
  • 抓包或看日志时把裸 IP 还原成网段,快速定位属于哪个区域
  • 做地址规划时评估每个 /n 能装多少主机、浪费多少地址
  • 考试与面试里所有子网题的第一步都是按位与求网络地址

用 ipcalc 验证主机地址归位

用 ipcalc 验证主机地址归位
ipcalc 192.168.10.25/26
# Network:   192.168.10.0/26     # 主机地址被按掩码归位
# Netmask:   255.255.255.192
# Broadcast: 192.168.10.63
# HostMin:   192.168.10.1
# HostMax:   192.168.10.62
# Hosts/Net: 62

手算:按位与与求广播

手算:按位与与求广播
# 以 192.168.10.25/26 为例
# 掩码 255.255.255.192 → 末段 11000000
# 25 的二进制             → 00011001
# 按位与                  → 00000000  → 网络末段 0
# 主机位全置 1            → 00111111 = 63  → 广播 .63
# 结论:网段 192.168.10.0/26,可用 .1 - .62

输出逐列读法

字段含义正常 / 异常
Network归位后的网段显示 192.168.10.0/26;若原样显示 .25/26 说明工具未按掩码归位
Netmask点分掩码255.255.255.192
Broadcast广播地址192.168.10.63
HostMin / HostMax可用地址首尾.1 / .62
Hosts/Net可用主机数62;写成 64 说明漏减网络与广播
输入主机地址时工具会自动归位:ipcalc 直接给出网络地址,Python 的 ip_network(strict=False) 行为相同;strict=True 会抛 ValueError,因为主机地址本身不是合法网段。

落到配置里是什么样

在 Linux 与网络设备上,同一个前缀会被写成不同形态:接口配置用 CIDR 或点分掩码(ip addr add 192.168.10.1/26),路由表存的是网络地址加前缀长度(192.168.10.0/26),访问控制列表则可能要写通配符(0.0.0.63)。三者位模式完全一致,只是书写习惯不同,改配置时先确认设备要哪一种写法。

常见判断口径

  • 已知掩码求网段:网络地址 = IP 归位到块大小整数倍
  • 已知网段求广播:网络地址 + 块大小 - 1
  • 判断同段:两个 IP 分别与掩码按位与,结果相同即同段
  • 判断合法性:掩码必须是左侧连续 1,中间不能夹 0
  • 校验工具结果:网络地址一定整除块大小,广播地址一定不在可用范围内
前缀长度越大网段越小:把 /24 改写成 /25 会把原来的一个网段劈成两个,原来同段的设备可能瞬间跨段,必须同步调整网关与 DHCP,这类改动不能只改一台设备。

主机位数决定一切

同一个 IP 配上不同前缀长度会属于完全不同的网段:192.168.1.130 在 /24 下是 192.168.1.0/24 的成员,在 /25 下属于 192.168.1.128/25,在 /27 下又变成 192.168.1.128/27 的成员。所以任何子网计算的第一步都是先确认掩码,只看地址前三段就下结论是排障中最常见的误判来源。

配置里写 192.168.10.25/26 这种「主机地址加掩码」是常见写法,但把它当网段计算就会得到错误边界。判断网段时永远先归位到块起点的整数倍。

易错点

  • 把 192.168.10.25/26 直接当网段写入路由或 ACL:真实网段是 192.168.10.0/26
  • 把 a.b.c.d/n 里的 n 当成主机位数:n 是网络位数,主机位是 32-n
  • 只背掩码不算块大小:掩码 192 对应块 64,两者混用会算错子网边界
  • 忘记网络地址与广播地址不可用:按 2^k 而不是 2^k-2 做容量规划
  • 跨字节掩码按末段心算:/13、/21 这类掩码关键段不在第 4 段

数据来源与参考

  • RFC 4632(CIDR:互联网地址分配与聚合)
  • RFC 950(子网划分)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌