如何找出 cidr 范围的最后一个 cidr 地址

如何找出 cidr 范围的最后一个 cidr 地址

希望你一切都好我有一个 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

相关内容