希望你一切都好我有一个 CIDR 范围10.88.0.0/24
因此对于这个 CIDR 范围,我想计算最后一个 CIDR 地址,我知道有一些在线工具可以做到这一点,但我想知道如何使用任何编程语言计算最后一个 CIDR 地址。
谢谢,
答案1
尝试保持其与 Ubuntu 相关...西普计算是一个 IP 子网计算器,可以在 Ubuntu 中安装:
sudo apt install sipcalc
它可以像这样使用:
sipcalc ip-address/netmask
使用示例:
$ sipcalc 10.88.0.0/24
-[ipv4 : 10.88.0.0/24] - 0
[CIDR]
Host address - 10.88.0.0
Host address (decimal) - 173539328
Host address (hex) - A580000
Network address - 10.88.0.0
Network mask - 255.255.255.0
Network mask (bits) - 24
Network mask (hex) - FFFFFF00
Broadcast address - 10.88.0.255
Cisco wildcard - 0.0.0.255
Addresses in network - 256
Network range - 10.88.0.0 - 10.88.0.255
Usable range - 10.88.0.1 - 10.88.0.254
-
或者:
$ sipcalc 10.88.0.0/24 | awk '/Usable range/ {print $NF}'
10.88.0.254
例如仅打印最后可用的地址。
答案2
我将通过您的示例进行展示:10.88.0.0/24
要手动完成此操作,首先将所有内容转换为位表示法:
10.88.0.0 = 00001010.01011000.00000000.00000000
接下来搜索第 24 位并将其右侧的所有内容转换为:
00001010.01011000.00000000.11111111
返回十进制
10.88.0.255
最高可能 IP 少一个:10.88.0.254
编程上需要一些二元运算:
11111111.11111111.11111111.11111111 >> 24 (right shift 24times)
00000000.00000000.00000000.11111111
00001010.01011000.00000000.00000000 + (or)
00000000.00000000.00000000.11111111
-----------------------------------
00001010.01011000.00000000.11111111
00001010.01011000.00000000.11111111 -1
-----------------------------------
00001010.01011000.00000000.11111110 = 10.88.0.254
现在您可能会想象,为什么使用带有网络掩码的符号:10.88.0.0/255.255.255.0
反转网络掩码并执行“或”。
010.088.000.000 + (or)
000.000.000.255
---------------
010.088.000.255 -1 (minus one)
---------------
010.088.000.254
为了得到最低值:
010.088.000.000 * (and)
255.255.255.000
---------------
010.088.000.000 +1 (plus one)
---------------
010.088.000.001