原理解说发布日期 阅读时间约 13 分钟

子网掩码的计算方法|从 CIDR 求网络地址、广播地址和主机数的步骤与速查表

“192.168.1.100/26 的网络地址是多少?”“/27 能接几台设备?”“255.255.240.0 是 /几?”子网计算的基本做法是换成二进制再做 AND 运算,但熟练以后,用“块大小”也能心算出来。本文说明 CIDR 表示法与子网掩码的关系,分别用二进制和心算两种方法求网络地址、广播地址和可用 IP 范围,给出在第 3 个八位组划分的例题,讲解主机数与 AWS、Azure、Google Cloud 的保留地址,如何根据所需台数决定前缀长度,VLSM 子网划分,判断是否在同一子网,IP 范围转 CIDR 与汇总,通配符掩码,以及常见错误,全部配有具体数字。

结论:子网计算取决于“块大小”

IPv4 地址共 32 位,CIDR 表示法中“/26”这样的数字(前缀长度)表示从左起有多少位属于网络部分。剩下的 32 − 26 = 6 位是主机部分,一个子网包含 2 的 6 次方 = 64 个地址(块大小)。子网按 64 个一组排列(0 至 63、64 至 127、128 至 191、192 至 255),只要看出 IP 地址落在哪一组,网络地址和广播地址就确定了。

  • 地址数:2 的(32 − 前缀长度)次方。/24 为 256 个,/26 为 64 个,/27 为 32 个
  • 网络地址:IP 地址与子网掩码做 AND(块的开头)。不分配给设备
  • 广播地址:主机部分全部置 1 的地址(块的末尾)。不分配给设备
  • 可用 IP 范围:网络地址 + 1 至 广播地址 − 1
  • 可用台数(主机数):地址数 − 2。/24 为 254 台,/26 为 62 台,/27 为 30 台

以 192.168.1.100/26 为例,块大小是 64,100 落在 64 至 127 这一组。网络地址为 192.168.1.64,广播地址为 192.168.1.127,可用范围为 192.168.1.65 至 192.168.1.126,共 62 台。子网掩码为 255.255.255.192(256 − 64 = 192)。下面依次用二进制和心算两种方法说明求法。

CIDR 表示法与子网掩码的关系

子网掩码是网络部分为 1、主机部分为 0 的 32 位数值,每 8 位用十进制写出。/26 就是从左起 26 个 1,后面 6 个 0。CIDR 的“/26”与子网掩码“255.255.255.192”只是同一件事的两种写法。

表示法二进制十进制
/2411111111.11111111.11111111.00000000255.255.255.0
/2611111111.11111111.11111111.11000000255.255.255.192
/2711111111.11111111.11111111.11100000255.255.255.224
/2011111111.11111111.11110000.00000000255.255.240.0

在一个八位组(8 位)中,十进制的值只取决于左起连续有几个 1,所以只有下面 9 种。记住这 9 个,掩码与前缀长度的换算就能马上完成。

1 的个数二进制十进制块大小(256 − 值)
0000000000256
110000000128128
21100000019264
31110000022432
41111000024016
5111110002488
6111111002524
7111111102542
8111111112551
  • 掩码 → 前缀长度:每个 255 记作 8 相加,最后一个八位组用上表换成 1 的个数。255.255.240.0 为 8 + 8 + 4 = /20,255.255.255.224 为 8 + 8 + 8 + 3 = /27
  • 前缀长度 → 掩码:除以 8。/20 为 8 × 2 余 4,所以 255.255 之后是 4 个 1 的 240,其余为 0,即 255.255.240.0
  • 在哪个八位组划分由“除以 8 的商”决定。/17 至 /24 在第 3 个八位组划分,/25 至 /32 在第 4 个八位组划分

网络地址与广播地址的求法

求法有两种。用二进制做 AND 能看清原理,用块大小心算在考试和实际工作中更快。两种方法结果相同。下面以 192.168.1.100/26 为例计算。

  1. 1

    把 IP 地址和掩码换成二进制

    192.168.1.100 为 11000000.10101000.00000001.01100100,/26 的掩码 255.255.255.192 为 11111111.11111111.11111111.11000000。前 3 个八位组的掩码是 255,原样保留,只需看第 4 个八位组。

  2. 2

    做 AND 求出网络地址

    AND 是两边都为 1 时才得 1 的运算。第 4 个八位组为 01100100 AND 11000000 = 01000000,即十进制的 64。网络地址为 192.168.1.64。

  3. 3

    把主机部分全部置 1 求出广播地址

    把网络地址 01000000 中掩码为 0 的右边 6 位全部置 1,得到 01111111,即 127。广播地址为 192.168.1.127。

  4. 4

    求出可用范围和台数

    从网络地址的下一个 192.168.1.65 到广播地址的前一个 192.168.1.126,是可以分配给设备的范围。台数为 64 − 2 = 62 台。

心算不需要二进制。在划分的八位组(/26 为第 4 个八位组)中,找出块大小 256 − 192 = 64 的倍数里不超过 IP 地址值(100)的最大者。64 × 1 = 64 是不超过 100 的最大倍数,所以网络地址为 192.168.1.64。下一块的开头 128 的前一个,127 就是广播地址。

项目192.168.1.100/26 的答案求法
子网掩码255.255.255.19226 个 1(8 + 8 + 8 + 2)
块大小64256 − 192
网络地址192.168.1.64不超过 100 的 64 的最大倍数
广播地址192.168.1.12764 + 64 − 1
可用 IP 范围192.168.1.65 至 192.168.1.126开头 + 1 至 末尾 − 1
可用台数62 台64 − 2

例题:在第 3 个八位组划分的 /20、/18,以及较小的 /29

前缀长度小于 /24 时,划分位置移到第 3 个八位组。思路相同:在划分的八位组中找块大小的倍数,其右边的八位组在网络地址中为 0,在广播地址中为 255。

  1. 1

    172.16.45.200/20

    /20 为 8 × 2 余 4,在第 3 个八位组划分,掩码为 255.255.240.0,块大小为 256 − 240 = 16。不超过 45 的 16 的最大倍数是 32,所以网络地址为 172.16.32.0,广播地址为 172.16.47.255(32 + 16 − 1 = 47)。可用范围为 172.16.32.1 至 172.16.47.254,共 4,096 − 2 = 4,094 台。

  2. 2

    10.1.130.7/18

    /18 的掩码为 255.255.192.0,第 3 个八位组的块大小为 64。不超过 130 的 64 的最大倍数是 128,所以网络地址为 10.1.128.0,广播地址为 10.1.191.255。可用范围为 10.1.128.1 至 10.1.191.254,共 16,384 − 2 = 16,382 台。

  3. 3

    192.168.10.77/29

    /29 的掩码为 255.255.255.248,块大小为 8。不超过 77 的 8 的最大倍数是 72,所以网络地址为 192.168.10.72,广播地址为 192.168.10.79。可用范围为 192.168.10.73 至 192.168.10.78,共 6 台。

/20 的例子中容易出错的是网络地址的第 4 个八位组。划分在第 3 个八位组,第 4 个八位组整个属于主机部分,在网络地址中为 0,在广播地址中为 255。注意不要像 172.16.45.0 或 172.16.32.200 那样留下原来的值。

例题掩码网络地址广播地址可用台数
192.168.1.100/26255.255.255.192192.168.1.64192.168.1.12762
172.16.45.200/20255.255.240.0172.16.32.0172.16.47.2554,094
10.1.130.7/18255.255.192.010.1.128.010.1.191.25516,382
192.168.10.77/29255.255.255.248192.168.10.72192.168.10.796

主机数的计算,以及 /31、/32 和云的保留地址

可用地址数(主机数)是 2 的(32 − 前缀长度)次方减 2。减去的 2 个是开头的网络地址和末尾的广播地址。不过在实际的局域网中,路由器(默认网关)也要占用 1 个,所以能分给电脑和手机的还要再少 1 个。/24 的 254 个中去掉网关 192.168.1.1,普通设备可用的是 253 台。

  • /30:地址 4 个,可用 2 个。长期用于路由器之间一对一连接的线路
  • /31:地址 2 个,没有网络地址和广播地址,2 个都可用(RFC 3021)。用于路由器之间的连接
  • /32:只表示 1 个地址。用于在防火墙规则或路由中指定某一台设备

云上的子网会保留更多地址。AWS 的 VPC 在每个子网保留开头 4 个(网络地址、VPC 路由器、DNS、预留)和末尾 1 个,共 5 个;Azure 也保留 5 个,Google Cloud 保留 4 个。

前缀长度地址数普通局域网AWS、Azure(保留 5 个)Google Cloud(保留 4 个)
/1665,53665,53465,53165,532
/204,0964,0944,0914,092
/24256254251252
/2664625960
/2732302728
/2816141112

AWS 能创建的最小子网是 /28,可用 16 − 5 = 11 个。放置负载均衡器或容器这类之后会大量消耗 IP 的服务的子网,最好考虑保留地址和增长余量,留得大一些。

子网掩码与 CIDR 速查表(/16 至 /32)

下面是常用的 /16 至 /32 的子网掩码、通配符掩码、地址数和可用台数一览。/8、/12 等更大的块,可以在子网计算工具的“速查表”标签页从 /0 开始查看。

CIDR子网掩码通配符掩码地址数可用台数
/16255.255.0.00.0.255.25565,53665,534
/17255.255.128.00.0.127.25532,76832,766
/18255.255.192.00.0.63.25516,38416,382
/19255.255.224.00.0.31.2558,1928,190
/20255.255.240.00.0.15.2554,0964,094
/21255.255.248.00.0.7.2552,0482,046
/22255.255.252.00.0.3.2551,0241,022
/23255.255.254.00.0.1.255512510
/24255.255.255.00.0.0.255256254
/25255.255.255.1280.0.0.127128126
/26255.255.255.1920.0.0.636462
/27255.255.255.2240.0.0.313230
/28255.255.255.2400.0.0.151614
/29255.255.255.2480.0.0.786
/30255.255.255.2520.0.0.342
/31255.255.255.2540.0.0.122(RFC 3021)
/32255.255.255.2550.0.0.011(只表示 1 台)

前缀长度每减 1,地址数翻倍;每加 1,地址数减半。以 /24 的 256 为基准,/23 为 512,/22 为 1,024,/25 为 128,/26 为 64。按翻倍和减半来记,不看表也能算出来。

根据所需台数决定前缀长度

设计时要反向计算。在所需台数上加 2(网络地址和广播地址),不小于该数的最小 2 的幂就是块大小。前缀长度等于 32 减去这个幂的指数。

所需台数台数 + 2块大小前缀长度可用台数
30 台3232(2 的 5 次方)/2730
50 台5264(2 的 6 次方)/2662
100 台102128(2 的 7 次方)/25126
200 台202256(2 的 8 次方)/24254
500 台502512(2 的 9 次方)/23510
1,000 台1,0021,024(2 的 10 次方)/221,022

30 台正好能放进 /27,但考虑到网关和扩充就没有余量了。实际设计时,以现有台数的 1.5 至 2 倍为准,可以避免以后重新编号的麻烦。在云上要加的不是 2,而是保留地址的个数(AWS、Azure 为 5,Google Cloud 为 4);在 AWS 上 11 台就是 11 + 5 = 16,即 /28。

子网划分:等分与 VLSM

把一个网络分成同样大小时,前缀长度延长 n 位就分成 2 的 n 次方个。把 192.168.1.0/24 分成 /26,延长 2 位,得到 192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26 共 4 个,每个 62 台。把 10.0.0.0/16 分成 /24,延长 8 位,得到 256 个子网。

各部门或楼层台数不同时,使用分配不同大小子网的 VLSM(可变长子网掩码)。步骤只是“按台数从多到少,把所需大小的块从开头依次排紧”。从大的开始排,块的边界一定对齐,不会产生空隙。

  1. 1

    把所需台数从多到少排列

    以把 192.168.1.0/24 分成 100 台、50 台、20 台、2 台(路由器之间)4 个网段为例。

  2. 2

    决定各自的前缀长度

    100 台用 /25(126 台),50 台用 /26(62 台),20 台用 /27(30 台),2 台用 /30(2 台)。

  3. 3

    从开头依次排紧分配

    顺序为 192.168.1.0/25(.0 至 .127)、192.168.1.128/26(.128 至 .191)、192.168.1.192/27(.192 至 .223)、192.168.1.224/30(.224 至 .227)。

  4. 4

    确认剩余部分

    256 个中用掉 228 个,从 192.168.1.228 开始的 28 个剩余。可以留给将来的网段,或者一开始就分配得大一些。

网段所需台数子网可用范围可用台数
A100192.168.1.0/25192.168.1.1 至 192.168.1.126126
B50192.168.1.128/26192.168.1.129 至 192.168.1.19062
C20192.168.1.192/27192.168.1.193 至 192.168.1.22230
D2192.168.1.224/30192.168.1.225 至 192.168.1.2262

再看一个更大的例子:把 10.0.0.0/22 分成 300 台、120 台、60 台、10 台,结果为 10.0.0.0/23(510 台)、10.0.2.0/25(126 台)、10.0.2.128/26(62 台)、10.0.2.192/28(14 台)。如果从小的开始排,比如想在 /28 之后放 /23,边界就对不上,中间的地址只能白白浪费。

判断两个 IP 是否在同一子网

“给这台设备配 192.168.1.130 能不能连上”,要看该 IP 地址的网络地址是否与那个子网的网络地址一致。用同一个掩码做 AND,结果相同就是同一子网,不同就是不同子网,不经过路由器就无法通信。

  • 192.168.1.100 在 192.168.1.0/25(.0 至 .127)中。100 位于 0 至 127 这一块
  • 192.168.1.130 不在 192.168.1.0/25 中。128 以后是下一块 192.168.1.128/25
  • 192.168.1.130 也不在 192.168.1.64/26(.64 至 .127)中。它属于 /26 的 128 至 191 这一块
  • 同样是 192.168.1.x,/24 时在同一子网,/25 或 /26 时可能在不同子网

设置了固定 IP 却无法通信时,请确认设备与网关的掩码是否相同,以及 IP 是否恰好是网络地址或广播地址。在子网计算工具的“这个 IP 地址在这个子网内吗?”一栏输入 IP,就能当场判断。

把 IP 范围转换为 CIDR,以及汇总 CIDR

防火墙规则和 AWS 安全组常常要求用 CIDR,而不是“起始至结束”来写 IP 范围。范围两端正好在块的边界上时 1 个 CIDR 就够,不在边界上时会拆成多个 CIDR。

范围CIDR个数
192.168.0.0 至 192.168.3.255192.168.0.0/221 个
10.0.0.5 至 10.0.0.2010.0.0.5/32、10.0.0.6/31、10.0.0.8/29、10.0.0.16/30、10.0.0.20/325 个
192.168.1.1 至 192.168.1.100/32、/31、/30、/29、/28、/27、/27、/30、/32 的组合9 个

转换的思路是:从范围开头起,依次取“能从该位置开始、且不超出范围的最大块”。10.0.0.5 是奇数,只能放 /32;接下来 10.0.0.6 起是 2 个地址的 /31,10.0.0.8 起是 8 个的 /29,10.0.0.16 起是 4 个的 /30,最后剩下 10.0.0.20 的 /32。手算容易出错,写进规则之前用“范围→CIDR·汇总”标签页确认最可靠。

反过来,把多个 CIDR 合成 1 个叫作汇总(超网、路由汇总)。192.168.0.0/24 至 192.168.3.0/24 这 4 个正好是 192.168.0.0/22。192.168.0.0/24 和 192.168.2.0/24 这 2 个如果要求不留空隙地合并,仍然是 2 个;如果要用 1 条路由覆盖两者,则是 192.168.0.0/22,会把本来不包含的 192.168.1.0/24 和 192.168.3.0/24 也包进去。用路由汇总向路由器通告时,请确认多包进来的范围没有在别处使用。

通配符掩码的计算

通配符掩码是把子网掩码的 0 和 1 反过来的值。用十进制时,每个八位组用 255 去减即可。/24 的 255.255.255.0 为 0.0.0.255,/26 的 255.255.255.192 为 0.0.0.63,/20 的 255.255.240.0 为 0.0.15.255。

  • Cisco 的 ACL:access-list 10 permit 192.168.1.64 0.0.0.63 表示允许 192.168.1.64/26
  • OSPF 的 network 命令:network 10.1.128.0 0.0.63.255 area 0 表示指定 10.1.128.0/18
  • 通配符掩码的值 + 1,等于划分八位组中的块大小(63 + 1 = 64)

通配符掩码本来的读法是:0 的位“必须一致”,1 的位“任意”,所以不像子网掩码那样要求 1 和 0 连续。但不连续的值意图难以看懂,也容易造成配置错误,一般只使用把子网掩码反转后的形式。

私有 IP 地址与特殊用途的范围

在公司或家庭的局域网中划分子网时,要从互联网上不使用的私有 IP 地址范围中选择。RFC 1918 规定的是下面 3 个。

范围CIDR地址数常见用途
10.0.0.0 至 10.255.255.25510.0.0.0/816,777,216企业网络、云的 VPC
172.16.0.0 至 172.31.255.255172.16.0.0/121,048,576企业网络、Docker 的默认网络
192.168.0.0 至 192.168.255.255192.168.0.0/1665,536家用路由器、小型办公室
  • 100.64.0.0/10:用于移动网络等的运营商级 NAT(CGNAT)。不要用在自己的局域网
  • 169.254.0.0/16:链路本地地址。设备无法通过 DHCP 获取 IP 时会自己分配,看到这个地址就要怀疑 DHCP 出了问题
  • 127.0.0.0/8:环回地址。127.0.0.1 就是本机
  • 172.16.0.0/12 只到 172.16 至 172.31。从 172.32.0.0 起就不是私有地址,请注意

如果计划用 VPN 连接各个据点,或者把云的 VPC 与本地机房连接起来,从一开始就要定好各自的地址范围互不重叠。家用路由器常用的 192.168.0.0/24 和 192.168.1.0/24,是最容易与居家办公 VPN 冲突的范围。

子网计算中的常见错误

  • 把网络地址或广播地址分配给设备:/26 的 192.168.1.64 和 192.168.1.127 不能用。不要以为只有 /24 的 .0 和 .255 才特殊
  • 保留划分位置右边的八位组:/20 例子的网络地址是 172.16.32.0,而不是 172.16.32.200
  • 主机数忘了减 2:/27 有 32 个地址,但可用的只有 30 台,而且还要给网关留 1 个
  • 忘了云的保留地址:AWS 的 /24 不是 254 个,而是 251 个
  • 按类别思考:现在已经没有“10.x.x.x 是 A 类所以是 /8”这种规定。在 CIDR 中任何范围都可以用前缀长度自由划分
  • VLSM 从小到大排:边界对不上,会出现无法使用的空隙
  • 写出 1 和 0 混在一起的掩码:255.255.255.200 等作为掩码是无效的

CCNA 等认证考试中的子网题,大多是在考这 7 点中的某一点。心算出答案后,再用工具确认是否得到相同的值,反复练习就能很快掌握块大小的感觉。另外,本文和工具只涉及 IPv4。IPv6 的地址是 128 位,局域网子网一般固定为 /64,几乎不需要计算主机数。

常见问题

怎样从子网掩码求出网络地址?
把 IP 地址和子网掩码换成二进制做 AND,结果就是网络地址。心算时,在划分的八位组中用 256 减去掩码值得到块大小,再找出其倍数中不超过 IP 值的最大者。192.168.1.100/26 的块大小为 256 − 192 = 64,不超过 100 的 64 的最大倍数是 64,网络地址为 192.168.1.64。
/26 或 /27 能接几台设备?
/26 有 64 个地址,去掉网络地址和广播地址后可用 62 台;/27 有 32 个地址,可用 30 台。/24 为 254 台,/25 为 126 台,/28 为 14 台,/29 为 6 台,/30 为 2 台。路由器(默认网关)也要占 1 个,所以能分给电脑和手机的还要再少 1 个。
255.255.255.224 用 CIDR 表示是 /几?
是 /27。255 有 8 个 1,前 3 个八位组共 24 个;224 的二进制是 11100000,有 3 个 1,合计 27 个。最后一个八位组的值与 1 的个数对应为:128 是 1,192 是 2,224 是 3,240 是 4,248 是 5,252 是 6,254 是 7。
怎样求广播地址?
把网络地址的主机部分(掩码为 0 的部分)全部置 1 即可。心算时,用网络地址加上块大小再减 1。172.16.45.200/20 的网络地址是 172.16.32.0,第 3 个八位组加 16 减 1 得 47,第 4 个八位组为 255,广播地址为 172.16.47.255。
怎样根据所需台数决定子网掩码?
在所需台数上加 2,不小于该数的最小 2 的幂就是块大小。50 台时是不小于 52 的 64(2 的 6 次方),32 − 6 = /26(255.255.255.192)。500 台时是 512,即 /23。在云上要加的不是 2 而是保留地址的个数,AWS 加 5。
AWS 的子网能用多少个 IP 地址?
子网的地址数减去 5。AWS 保留开头 4 个(网络地址、VPC 路由器、DNS、预留)和末尾 1 个,所以 /24 可用 251 个,/26 可用 59 个,最小的 /28 可用 11 个。Azure 也保留 5 个,Google Cloud 保留 4 个。
什么是 VLSM?
就是把一个网络划分成大小不同的子网的方法(可变长子网掩码)。从所需台数最多的网段开始,把所需大小的块从开头依次排紧分配。把 192.168.1.0/24 分成 100 台、50 台、20 台、2 台,得到 /25、/26、/27、/30,从 192.168.1.228 开始的 28 个地址剩余。

本文介绍的工具

相关文章

使用指南约 13 分钟

花札 Koi-Koi 的规则和玩法|役一览与分数(文)·是否喊 Koi-Koi 的判断·新手取胜技巧

Koi-Koi 是两人用 48 张花札互相抢牌的游戏,先凑出役(得分组合)的人可以选择“胜负”结束本局得分,或者喊“Koi-Koi”继续凑更多的役。规则很简单,但在记住牌的种类和役之前,很难判断该拿哪张牌、什么时候该结束。本文依次说明 48 张牌的辨认方法、庄家的决定方法和发牌、一个回合的流程、所有的役和分数(文)、包含 7 文以上 2 倍和 Koi-Koi 反击的计算例子、是否喊 Koi-Koi 的判断标准、帮助新手取胜的技巧,以及各家不同的地方规则。

阅读文章 →
原理解说约 13 分钟

日本文件保存期限一览与起算日|账簿、收据要保存7年还是10年?从哪天算起,今年可以销毁哪一年度的文件

常听人说“账簿要保存 7 年”,但这 7 年是从决算日算起还是从申报期限算起,可以销毁的日子就会相差 2 个月。而且日本的公司法要求 10 年,有亏损结转的年度要 10 年,个体经营者的请求书是 5 年,工资台账是 5 年(暂时为 3 年),年数和起算日都因文件和法律而不同。本文按日本法令,把法人、个体经营者、劳务与社会保险文件的保存期限做成一览,说明各自从哪天算起、期满日怎样计算,列出 2026 年时可以销毁到哪一年度的速查表,介绍用电子数据保存时的注意事项和销毁的步骤,全部用具体日期说明。

阅读文章 →
原理解说约 12 分钟

滑雪固定器脱离值(DIN 值)参考|按体重、身高查表,以及滑雪者类型、年龄、鞋底长度为什么会改变数值

滑雪固定器上有一个叫“脱离值(DIN 值)”的刻度,它决定摔倒时雪板在多大的力下脱开。雪具店和租赁单会问体重、身高和滑雪者类型,就是为了设定这个值,但“我的值多少算正常”“类型 2 和类型 3 有什么不同”却很少有人解释。本文依据国际标准 ISO 11088 的表格,整理了按体重、身高查的脱离值参考表、滑雪者代码的定法、类型、年龄和鞋底长度改变数值的原因、儿童和 50 岁以上的参考值、设得过高或过低会发生什么、固定器可调范围的看法,以及雪季前要告诉雪具店的事项,并附有计算示例。

阅读文章 →