子网计算器

输入任意 IPv4 地址和前缀,得出网络地址、广播地址、主机范围与掩码。

也接受 192.168.1.130 255.255.255.192,或只写一个地址,按 /32 处理。

试试:

网络

192.168.1.128/26

该地址块共 64 个地址,可用 62 个。

私有192.168.0.0/16(RFC 1918)—— 家用路由器所用的地址段。

子网掩码

255.255.255.192

通配符掩码

0.0.0.63

思科 ACL 和部分防火墙所要求的形式 —— 掩码取反。

前缀

/26

网络地址

192.168.1.128

用于标识该地址块,不能分配给主机。

广播地址

192.168.1.191

可到达网段内的每一台主机,不能分配。

可用主机范围

192.168.1.129 – 192.168.1.190

地址总数

64

可用主机数

62

传统类别

C

有类地址早在 1993 年就被 CIDR 取代。这里之所以列出,是因为考题和旧文档仍在使用;它对路由没有任何影响。

二进制形式

青色是前缀固定下来的网络部分,灰色是可以变化的主机部分。前缀的含义,就是有多少位是青色的。

地址

11000000.10101000.00000001.10000010

网络

11000000.10101000.00000001.10000000

掩码

11111111.11111111.11111111.11000000

广播

11000000.10101000.00000001.10111111

网络地址的十六进制:0xC0A80180 · 整数形式:3,232,235,904

划分这个地址块

把 /26 划分成大小相同的子网。前缀每加长一位,规模减半、数量加倍。

前缀、掩码与主机数对照表
前缀掩码地址数可用主机数
/8255.0.0.016,777,21616,777,214
/9255.128.0.08,388,6088,388,606
/10255.192.0.04,194,3044,194,302
/11255.224.0.02,097,1522,097,150
/12255.240.0.01,048,5761,048,574
/13255.248.0.0524,288524,286
/14255.252.0.0262,144262,142
/15255.254.0.0131,072131,070
/16255.255.0.065,53665,534
/17255.255.128.032,76832,766
/18255.255.192.016,38416,382
/19255.255.224.08,1928,190
/20255.255.240.04,0964,094
/21255.255.248.02,0482,046
/22255.255.252.01,0241,022
/23255.255.254.0512510
/24255.255.255.0256254
/25255.255.255.128128126
/26255.255.255.1926462
/27255.255.255.2243230
/28255.255.255.2401614
/29255.255.255.24886
/30255.255.255.25242
/31255.255.255.25422
/32255.255.255.25511

前缀实际做的是什么

一个 IPv4 地址是三十二位。前缀说明从左往右数,其中有多少位标识网络;其后的一切属于主机。整个想法就这些,而上面那个二进制视图值得看一眼,因为它让这套算术不言自明:青色的数字在块内不能变,灰色的那些则把这个块枚举出来。

所以一个 /24 固定二十四位,留八位可变,也就是 2⁸ = 256 个地址。一个 /26 多固定两位,只剩六位:64 个地址。你每往前缀上加一位,块就减半。

把所有主机位都置零,得到的就是网络地址;把所有主机位都置一,得到的是广播地址。两者都不能分配,「减二」就是从这里来的。

让人栽跟头的那条边界

一个块总是从它自身大小的整数倍处开始。192.168.1.64/26 是有效的;192.168.1.100/26 不是一个网络地址,因为 100 不是 64 的倍数——计算器会告诉你,它实际上住在从 64 开始的那个块里。

这也是为什么对任何短于 /24 的前缀,第三个八位组会动。在一个 /22 里,块是 1,024 个地址,所以边界落在 10.0.0.010.0.4.010.0.8.0 等等——每隔四个 /24 一次。出于同样的道理,10.0.6.0/22 不是一个有效的网络地址。

给一个网络定尺寸

数一数你的主机,留出成长空间,向上取到 2 的下一个幂,然后减二。

你需要使用得到常见于
2 台主机/312 个可用路由器之间的链路
最多 6 台/296 个可用一小块公网地址
最多 30 台/2730 个可用一个机架,或者一个小办公室 VLAN
最多 62 台/2662 个可用一个部门
最多 254 台/24254 个可用几乎到处都是的默认值
最多 1,022 台/221,022 个可用一层楼,或者一个园区网段

「刚好够用」的本能值得抵抗。一个正在运行的网络因为地址用满而重新编址,代价是实打实的停机时间,而 RFC 1918 的地址空间是免费的——把 10.0.0.0/8 用得多高效并不会给你发奖。相反方向的错误比它该有的频率更常见:把整个站点塞进一个扁平的 /16,意味着广播流量会到达成千上万台主机,而任何攻破一台机器的东西都能够到其余所有机器。

私有、公有,以及为什么你的服务器连不上

计算器会标出你的地址落在哪一类里,因为它回答的正是人们常常带着却没意识到的那个问题。有三个范围被 RFC 1918 保留作私有用途,从不会在互联网上被路由:

  • 10.0.0.0/8——1,670 万个地址
  • 172.16.0.0/12——注意这个范围是 172.16 到 172.31,不是整个 172
  • 192.168.0.0/16——家用路由器的那一段

如果 10.0.0.5 上的某个服务从外面连不上,那不是一个要去调试的防火墙问题。这个地址不可路由,你机器上的任何配置都改不了这一点。

另外两个也值得认出来。169.254.0.0/16 是链路本地地址——DHCP 失败时机器会给自己分配一个,所以看到它通常意味着「没有 DHCP 服务器应答」。而 100.64.0.0/10 是运营商级 NAT:如果你的路由器把其中一个报告为它的 WAN 地址,说明你的 ISP 把你放在了他们自己的 NAT 后面,这就是为什么无论你怎么配置,端口转发都不起作用。

相关

要反过来走——把一段地址范围转成覆盖它的那些块——CIDR 计算器干的正是这件事,而且不向上取整。如果只是要做前缀到掩码的查表,有一个更专的小工具,带完整对照表。而如果你想知道的是一个公网地址归谁所有,而不是它怎么细分,IP 查询覆盖了那一块。

子网划分相关问题

为什么可用主机数比地址数少两个?

一个地址块里的第一个地址标识网络本身,最后一个是广播地址,它能触达该网段上的每一台主机。这两个都不能分配给机器,所以一个有 256 个地址的 /24 给你 254 个可用地址。例外是 /31 和 /32,它们根本没有网络地址和广播地址。

/31 真的能用吗?

能,用在点对点链路上,而且那是标准做法。RFC 3021 在 2000 年定义它,正是因为旧规则浪费掉了每一次点对点分配的一半:一个 /30 给四个地址,其中两个可用,于是连接两台路由器要吃掉四个地址才用上两个。/31 没有网络地址也没有广播地址,两个地址都是主机,而且现在的每一个路由器平台都支持它。那些对 /31 报告「0 个可用主机」的计算器,描述的是一条二十六年前就已作废的规则。

通配符掩码是什么?我什么时候需要它?

它是子网掩码逐位取反的结果,所以 /24 变成 0.0.0.255 而不是 255.255.255.0。Cisco 的访问控制列表和某些路由协议语句要求这种形式。它之所以存在,是因为通配符掩码不必连续——你可以匹配「最后一个八位组为偶数的任意地址」——尽管实际上你会写的几乎每一个通配符掩码,都只是取反的子网掩码。

新建网络时前缀长度该怎么选?

从主机数量出发,加上余量,再向上取到 2 的幂。四十台设备,在扣除网络地址和广播地址之后需要 42 个可用地址,也就是给你 62 个的 /26。不要卡着尺寸算:因为地址用尽而重新编址,要比多分配一个稍大的块痛苦得多,何况私有地址空间并不稀缺。反方向上常见的错误是把所有东西都塞进一个 /16,那会让广播流量和横向移动这两件事都比本来更糟。

A 类、B 类、C 类去哪儿了?

CIDR 在 1993 年取代了它们。在分类编址下,地址开头的几位就决定了掩码,这意味着一个需要 500 个地址的机构,只能拿一个含 65,534 个地址的 B 类,然后把其余的浪费掉。CIDR 让前缀变成显式且独立的,这就是今天每一个地址都带斜杠书写的原因。这些类别只活在考题里,以及「一个 C 类网络」这种指代 /24 的说法里——计算器把类别显示出来正是因为这个,但它对任何东西如何路由都毫无影响。

计算器会把我的地址发到什么地方吗?

不会。全部都是在你浏览器里跑的整数运算——没有什么可发的,而且完全断网这个页面照样能用。对这样一件工具来说,这一点比听上去更要紧,因为人们粘进子网计算器的地址,往往就是他们自己的内网拓扑。

最后审校于 。发现有内容过时了? 告诉我们.