子网掩码计算器:192.168.1.10/26 到底有几个可用 IP
发布时间:2026/10/20 10:44:11 锦皓数字建站

192.168.1.10/26 的可用主机是 62 台不是 64 台。子网掩码 255.255.255.192网络地址 192.168.1.0广播地址 192.168.1.63可用范围 192.168.1.1 到 192.168.1.62。头尾两个地址分别被网络地址和广播地址占掉这就是 /26 少两个的原因。我做了个单文件网页输入任意 IPv4 加前缀长度一路算到底。它还会把 32 位二进制摊开前 26 位和后 6 位的分界用一条竖线标出来哪几位属于网络、哪几位属于主机一眼就看得见。在线案例与源码https://atomgit.com/deli007/demo_park/tree/main/codearts-ip-subnet-calculator 成品是一个 26491 字符的单文件 index.html双击就能打开页面上的数字全部是当场算出来的。一、为什么值得搞清楚接入设备数对不上吵的就是这两个地址需求方说「这个网段能放 64 台设备」你按 /26 配完只塞进去 62 台剩下的两台永远连不上。网络地址和广播地址不能分配出去可它们确实在「地址总数」里两边说的都没错只是口径不一样。用 /24 的时候这个问题不明显254 和 256 差得不多没人较真。切到 /26、/27、/30 这种小网段比例一下子变得刺眼/30 明明有 4 个地址却只能接 2 台设备。把掩码、网络地址、广播地址、可用范围摆在一屏谁在算什么就很清楚了。二、准备环境打开码道 Web把需求写成一段话浏览器打开码道 Web 版https://devcloud.cn-north-4.huaweicloud.com/chat/home登录后就能在对话窗口里输入需求不用装东西。码道有三种使用方式WebUI浏览器对话、TUI终端命令行和桌面 IDEIDE 插件。本文用 WebUI 版演示。需求我写了 7 条事后看最值钱的是这三条二进制展开要把网络位和主机位用不同颜色区分并标出前缀边界的位置每个数字都要页面自己算不许写死换一个输入整页跟着变底部要有自检面板内置断言加载完自动跑一遍并统计通过条数。第三条是这轮最省事的决定数字由页面自己算、自己断言写文章时我不用另抄一遍。三、一屏看全输入、二进制、子网拆分、反推、聚合页面顶部是输入框直接敲 192.168.1.10/26 再点解析。下面并排两张卡左边是计算结果右边是二进制展开。计算结果给出八个值网络地址、广播地址、子网掩码、反掩码、可用主机范围、可用主机数、地址总数、地址类别。二进制展开把 IP 和掩码各拆成 32 个格子按 8 位一段用点隔开。前缀边界那条竖线落在第 26 位之后竖线左边的格子是蓝色的网络位右边是橙色的主机位。192.168.1.10 的二进制是 11000000.10101000.00000001.00001010掩码是前 26 个 1。再往下一张表是子网拆分取当前 IP 所在的 /24按 /26 切开逐个列出网络地址、可用主机范围、可用主机数和广播地址。192.168.1.0/24 被切成 192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26每个都是 62 个可用地址当前地址落在第一个。旁边两张卡是两个独立的逆向工具。「按主机数反推掩码」输入需要的主机数给出推荐的 /26、掩码 255.255.255.192、通配符 0.0.0.63下面还有一张 /20 到 /32 的对照表。50 台主机推荐 /26可用 62 台地址总数 64 个。「网段聚合」把四个连续的 /26 摆在一起演示它们能合并成一个 192.168.1.0/24。四、对表6 个预置值跟 Python 标准库逐个核对页面自己算得对不对光看它自检不算数我拿 Python 的 ipaddress 模块对了一遍。输入页面给出的可用主机数Python ipaddress 算出的可用主机数掩码192.168.1.10/2662 台62255.255.255.192192.168.1.10/24254 台254255.255.255.010.0.0.5/816777214 台16777214255.0.0.0172.16.4.1/121048574 台1048574255.240.0.0192.168.1.10/302 台2255.255.255.2528.8.8.8/1665534 台65534255.255.0.0六个输入的网络地址和广播地址也对得上192.168.1.10/30 这种带偏移的地址两边都算出网络地址是 192.168.1.8、广播是 192.168.1.11。子网拆分的结果同样对得上Python 把 192.168.1.0/24 按 /26 切开也是四段每段可用 62 个换回当前 IP 落在 192.168.1.0/26。反过来把四个 /26 丢给 Python 的 collapse_addresses得到的正是 192.168.1.0/24和页面的聚合结论一致。速度上也量了一下。页面连续换 200 个不同网段重算加重绘一共 104.6 毫秒平均每次 0.523 毫秒这几百微秒里绝大部分花在重画二进制格子。Python 标准库纯计算 10000 次解析加算掩码只要 48 毫秒平均 4.8 微秒说明页面慢在渲染不在算法。五、踩坑三处改出来的问题都是我自己拿眼睛盯出来的第一版跑出来自检 22 条全过但截图一看就不对。「按主机数反推掩码」的结果面板里两处标签写成了「可用主机会」和「地址总控」应该是「可用主机数」和「地址总数」。这是生成时把字写串了跟逻辑无关但截图里一眼就能看到只能返工。第二处更隐蔽计算结果里「可用主机范围」的值 192.168.1.1 到 192.168.1.62 太长最后一个字符被右边单元格裁掉屏幕上只能看到 192.168.1.6。改法是让这一格跨满整行不再跟别的值挤在一条三列栅格里。第三处是真正的逻辑错误192.168 网段的私有地址判断没生效。代码里写的是if(f192((n8)255)168)取第二个字节要右移 16 位右移 8 位取到的是第三个字节。所以 10.0.0.5/8 和 172.16.4.1/12 都会标出「私有地址」唯独 192.168.x.x 不标我照着 10 打头和 192 打头的两组结果一对比才发现。顺带把f126改成f127原来 127.0.0.1/8 会被标成 B 类现在显示 A 类 · 回环地址。这三处改完22 条断言依然全过说明原来的自检覆盖不到私有地址和类别边界这两个角落。失败路径我也试了输入 192.168.1.300/33页面顶上跳出红框原文是「输入错误IP 地址无效192.168.1.300应为 4 段每段 0–255」。非法输入下面那几张卡不会白屏而是显示「等待有效输入……」页面依然能用。六、本地复现三条命令自己验一遍页面是单文件直接打开就能跑python -m http.server 8000 # 然后浏览器访问 http://127.0.0.1:8000/index.html想核数字就用 Python 标准库我用的就是这几行import ipaddress n ipaddress.ip_network(192.168.1.10/26, strictFalse) print(n.network_address, n.broadcast_address, n.netmask, n.num_addresses - 2) # 192.168.1.0 192.168.1.63 255.255.255.192 62 print([str(s) for s in ipaddress.ip_network(192.168.1.0/24).subnets(new_prefix26)]) print([str(a) for a in ipaddress.collapse_addresses(ipaddress.ip_network(192.168.1.0/24).subnets(new_prefix26))])自检面板的结论是 22 / 22 通过页面上那 22 条断言各自带着实测值。七、用码道的体会生成能跑但边界得自己盯这一轮我的感受是码道把「从需求到能跑的页面」这段压得很短7 条需求一次成形自检面板也照做了。它没做到的是边界自检22 条断言覆盖了常规解析、拆分、聚合、反推、非法输入却没覆盖私有地址判断和地址类别这两个角落位运算写错一个移位量断言照样全绿。界面上的文字和栅格排版也不能只看代码我如果只看自检结果不看截图那两处标签错字和那一行被裁掉的值就漏过去了。所以我的做法变成生成的页面先自己打开、自己输入、自己截图再拿去写文章。八、小结与下一步/26 这种小网段记住一条就够了地址总数减 2 才是能接设备的数量网络地址和广播地址谁也拿不走。计算器只是把这笔账摊开给你看32 位二进制、子网拆分、主机数反推、网段聚合都能当场算。下一步我想加的是 IPv6 前缀长度的等价视图以及一个「按网段生成配置命令」的入口把结果直接变成能贴进设备的配置。码道 Web 版入口https://devcloud.cn-north-4.huaweicloud.com/chat/home案例与源码https://atomgit.com/deli007/demo_park/tree/main/codearts-ip-subnet-calculator
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。