子网掩码与CIDR怎么算
先用前缀长度确定网段大小,再找地址所在的边界,就能算出网络地址、广播地址和主机范围。地址总数与可用主机数需要分开看。
看到192.0.2.130/26时,您可能想知道:它属于哪个网段,掩码是多少,能放多少台设备?这几个问题用的是同一套计算方法。本文只讨论IPv4,以一个完整示例说明计算过程,再用子网计算器核对结果。
下文的地址来自RFC 5737规定的文档示例地址段,只用于讲解。请不要把它们直接配置到生产网络,也不要用能否连通这些地址判断计算是否正确。
CIDR和子网掩码表示什么
IPv4地址共有32位,通常写成四段十进制数,每段对应8位。CIDR是无类别域间路由,常见写法是“地址/前缀长度”。斜线后的数字表示网络前缀占多少位,剩下的是主机位。例如/26有26位网络前缀、6位主机位;它不是26台设备,也不是地址的第26段。
子网掩码用另一种形式表达相同的边界:二进制前面连续的1对应网络位,后面的0对应主机位。/26的掩码为255.255.255.192,最后一段的二进制是11000000。前三段占24位,最后一段再取2位,合计26位。不能把不连续的1和0随意拼成CIDR掩码。
地址和网段也要区分。192.0.2.130/26可以表达一个地址及其前缀长度;它所属网段的规范写法是192.0.2.128/26,因为网段要把主机位清零。填写路由或访问规则时,应先确认字段要求主机地址还是网络前缀,避免把两者混用。
开始计算前,建议先在纸面上写下三个信息:待检查的地址、明确的前缀或掩码、这次计算的用途。如果只拿到一个地址而没有前缀,不要根据地址外观猜测网段。您可能是在规划接口地址,也可能是在核对一条只匹配单个地址的规则;两种场景即使填写相同的地址,所需的范围也可能不同。先确认配置字段的含义,再把计算结果填回去。
用一个/26示例算出完整结果
以192.0.2.130/26为例,网络前缀已经覆盖前三段,因此这里只需计算最后一段。您可以按以下顺序操作:
- 计算地址总数。主机位有
32-26=6位,每位可取0或1,因此共有2的6次方=64个地址。这里暂时不扣除任何地址。 - 找网段边界。最后一段每64个地址组成一块,起点依次是0、64、128、192。130落在128~191这一块,所以网络地址为
192.0.2.128。 - 找网段末尾。从128开始包含64个地址,最后一个是
128+64-1=191。在这种普通IPv4子网中,192.0.2.191是该子网的广播地址。 - 计算通常可分配的范围。排除网络地址和广播地址后,范围是
192.0.2.129~192.0.2.190,共62个地址。输入的192.0.2.130位于这个范围内。
如果用二进制复核,130写成10000010,掩码最后一段写成11000000。按位与的结果是10000000,也就是128;将6个主机位全部置1得到10111111,也就是191。这说明十进制的“找边界”和二进制计算得到的是同一结果。
“256减去掩码所在段的值”是这个示例里的快捷算法:256-192=64。但不能把所有前缀都当成最后一段变化。遇到/23等更大的地址块时,边界已经涉及前面的段,建议用完整的二进制方法或计算器核对。
把一个/24划成四个/26
假设您在纸面规划中把198.51.100.0/24划成四个等大的子网。前缀从24增加到26,多取2位作为网络位,因而得到2的2次方=4个子网。每个子网有64个地址,四块正好覆盖原来的256个地址,不重叠也不留空隙。
| 子网 | 通常可分配的主机范围 | 广播地址 |
|---|---|---|
| 198.51.100.0/26 | 198.51.100.1~198.51.100.62 | 198.51.100.63 |
| 198.51.100.64/26 | 198.51.100.65~198.51.100.126 | 198.51.100.127 |
| 198.51.100.128/26 | 198.51.100.129~198.51.100.190 | 198.51.100.191 |
| 198.51.100.192/26 | 198.51.100.193~198.51.100.254 | 198.51.100.255 |
前缀长度越大,地址块越小。/27的地址数量是/26的一半,而不是更多。判断两个地址是否属于同一个前缀,需要同时看地址和掩码;前三段相同,并不保证它们在同一个子网内。例如在上述划分中,198.51.100.62/26和198.51.100.65/26属于不同的子网。
常用前缀与地址数量怎么对照
IPv4地址总数可写成2的(32-前缀长度)次方。对下表这些普通子网,通常可分配主机数再减2。这里的数量只是地址层面的容量,不代表网络性能,也不代表实际还能分给多少台新设备。
| 前缀 | 子网掩码 | 地址总数 | 通常可分配主机数 |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
做实际规划时,还应单独登记网关、固定设备与保留地址的占用,不要直接把表中的数量当作剩余容量。云平台或设备也可能另有保留规则,部署前应查对应产品文档;计算器不能代替这些产品规则。
建议把规划表分成“全部地址”“协议语境下可分配地址”“已经占用或预留地址”三项。例如本例中的62是按普通子网规则计算出的容量,不是检查网络后得到的空闲地址数量。工具没有扫描设备,也不知道您的地址分配记录。准备增加设备时,请结合实际分配清单核对剩余容量,不要把数学结果写成现场调查结论。
/31和/32为什么不能直接减2
/31只有1位主机位,共2个地址。RFC 3021规定,在使用31位掩码的IPv4点对点链路上,这两个地址都解释为端点地址。例如203.0.113.10/31包含203.0.113.10和203.0.113.11,在这种语境下不能扣除网络地址和广播地址后说“没有地址可用”。
这一规则有明确的链路条件。请先确认两端设备与配置支持,不要把/31的两个端点规则直接套到普通多设备局域网,也不要仅凭计算器显示2就认为任何网络都能这样设置。
/32没有剩余主机位,表示单个IPv4地址,例如203.0.113.10/32只匹配该地址。它可以用来表达单地址的主机路由或规则范围,但不能据此推断它拥有一个可接入其他设备的普通子网。对/32也不应机械套用“总数减2”。
用子网计算器核对自己的输入
打开子网计算器,在输入框填写192.0.2.130/26并计算。您也可以用带掩码的形式192.0.2.130/255.255.255.192,或用空格分隔地址和掩码。只填写地址时,工具会采用下拉框中的前缀,核对时尤其要留意这一点。
先检查结果中的CIDR、网络地址和掩码是否符合您的输入,再检查广播地址、主机范围、地址总数与可用主机数量。对于本例,应分别看到网段192.0.2.128/26、广播地址192.0.2.191、64个总地址和62个通常可用主机地址。
如果结果与预期不同,先查输入有没有自带另一个前缀、掩码是否连续,以及您比较的是“总地址数”还是“可用主机数”。如果只是地址没有落在预想的网络起点,计算器返回它实际所属的网段是正常的,不能直接把输入地址当作网络地址。
为了便于复核,建议保存原始输入、规范化后的CIDR和计算日期;做过网段调整后,再用新的掩码重新计算。复制结果前逐项对照地址,尤其注意末尾的网络起点与广播地址。本文的示例可以先在纸面或工具中重复计算,确认理解边界之后,再按您自己网络的配置记录开展规划。
网段计算说明的是地址边界,不会验证路由、防火墙、网关或设备状态。同一前缀也不保证设备必然互通。要了解查询结果中的网络由谁管理,可继续阅读ASN是什么;地址范围与自治系统编号回答的是不同问题。