给一间办公室排网络,手上拿到 192.168.0.0 这一段,要接的设备三百多台。路由后台那一栏写着子网掩码,多数人只会填 255.255.255.0,因为它顺眼。但 /24 这个段实际能连的机器比 256 少,换成 /22 之后数量又跳了一大截——中间这笔账只需要两次减法。
前缀那个数字在数什么
IPv4 地址一共 32 位。/24 说的是前 24 位用来标网络,剩下 8 位用来标主机。能编出的地址数量就是 2 的「剩余位数」次方:/24 是 2 的 8 次方共 256 个,/22 剩下 10 位是 1024 个,/27 剩下 5 位是 32 个。反过来写掩码,就是把前面那么多个 1 摊成四段十进制:/24 得到 255.255.255.0,/22 得到 255.255.252.0。
256 个地址为什么只能连 254 台
因为每个地址块的头一个和最后一个被留作他用:主机位全 0 的那个是网络地址,用来指代这一段本身;主机位全 1 的那个是广播地址,发给它就等于发给整段。这两个都不能分配到网卡上,于是可用数公式是「2 的主机位次方再减 2」。
| 前缀 | 主机位 | 地址块 | 可用主机 | 点分掩码 |
|---|---|---|---|---|
| /16 | 16 | 65536 | 65534 | 255.255.0.0 |
| /22 | 10 | 1024 | 1022 | 255.255.252.0 |
| /24 | 8 | 256 | 254 | 255.255.255.0 |
| /27 | 5 | 32 | 30 | 255.255.255.224 |
| /30 | 2 | 4 | 2 | 255.255.255.252 |
减掉的那 2 在 /24 上无关痛痒,在 /30 上就是四个地址里的两个——专线两端各占一个,正好用完,所以点对点链路习惯分 /30,一点不浪费。
反过来查:要接 N 台设备该分多大
真正规划时顺序通常是反的:先有设备数量,再倒推前缀。取最小的主机位数 h,让 2 的 h 次方减 2 不小于设备数就行。30 台正好落在 /27 的 30 上,一个余量不剩;60 台要 /26 的 62;100 台要 /25 的 126;200 台要 /24 的 254;300 台就得上 /23 的 510;600 台和 1000 台都还能塞进 /22 的 1022。前面那个「三百多台设备」的需求,本身就决定了 255.255.255.0 不能用。
余量要往上取一档而不是刚好卡住:/27 分给 30 台在册设备,添两台打印机就撞上广播地址;DHCP 池还会替已经下线的设备继续占着地址,实际消耗通常高于台账数量。
/22 是四个 /24,不是两个
前缀每多一位,地址块就对半分;从 /22 走到 /24 多了 2 位,也就是 /22 等于 4 个 /24。展开更直观:192.168.0.0/22 覆盖 192.168.0.0 到 192.168.3.255,可用的从 192.168.0.1 一直排到 192.168.3.254,第三段那 8 位被 0 到 3 全吃进去;而 192.168.0.0/24 只到 192.168.0.255。三百台设备塞进一个 /24 是装不下的,/22 的 1022 才留得出余量。
一段 /22 拆成三块来用
拿到 192.168.0.0/22 之后,未必要让它作为一个大广播域跑到底。按 /24、/24、/23 切开会得到三块:192.168.0.0/24 覆盖 0.0 到 0.255,可用 254;192.168.1.0/24 覆盖 1.0 到 1.255,可用 254;192.168.2.0/23 覆盖 2.0 到 3.255,可用 510。三块互不重叠,合起来正好是父段的 0.0 到 3.255,一个地址都不落到外面。
切开有一个必须认下来的代价:块与块之间不再二层互通,跨块访问都得经三层设备转发。广播域变小是好事,但路由配置从「可以省」变成「必需」,交换机上那些没配 Vlan 口的地址就会突然不通。
怕算错的时候怎么复核
位数换算这种事,心算错一位就是半个网段不能用,而后果要等到设备接进去、发现地址冲突才暴露。我的做法是拿 子网掩码计算器 把地址和掩码丢进去,让它把网络地址、广播地址、可用范围一起列出来当复核,确认第三段真的跨到 3,再往路由里填。顺带想确认某个对外地址落在哪座城市、哪家运营商,IP查询 解决的是同一类「我眼前这个地址到底是谁」的问题。
Q:写成 255.255.255.0 和 /24 有区别吗
同一件事的两种写法。前者把 32 位摊成四段十进制,后者直接说网络位有几位。配置界面只收点分格式时,用 32 减前缀长度换算主机位即可。
Q:网关要占掉一个可用地址吗
占。网关本身是段内一个真实地址,通常取最小的那个可用地址。它连同网络地址、广播地址一起,让 /24 里实际能分给终端的比 254 还要再少一个。
Q:为什么有的段第一个可用地址不是 .1
只要块的起点没有正好落在整段边界上,网络地址就不是 .0。前缀对不齐时,块的起始与结束都由主机位归零和置一来决定,逐段看范围比记规律可靠。
Q:掩码填宽、填窄分别是什么现象
填窄(规划本是 /24,却写成 255.255.254.0)会把相邻网段吞进同一个广播域,两台本该隔离的设备开始直接收到彼此的广播。填宽(规划是 /23,却写成 255.255.255.0)会让同一网段里后半段的设备认定对方在段外,把包交给网关,而网关若没开代理 ARP,表现就是「能 ping 通网关却 ping 不通隔壁工位」。
Q:/29、/30 这类小块有什么用
主机位 3 位是 8 个地址、可用 6 个,够放一组固定设备加几台管理口;主机位 2 位是 4 个地址、可用 2 个,正好留给点对点链路的两端。给链路分块时按可用数倒着取最省的那档,剩下的地址再划给别的段,整体就不容易留下谁也装不下的碎片。