有没有办法检查给定的IP地址是否是子网IP地址? 例如 : 16.100.134.0 /19 这个IP地址是一个子网IP地址(我在解决方案中看到它)但我仍然不知道他们是如何计算出来的。
最后的/19告诉你这是一个子网地址。
完整的 IPV4 地址是 4 组 8 位或八位字节(每个地址显示为 0 -255 范围内的十进制),因此长度为 32 位。 /19 告诉您这是子网的地址,其中前 19 位保留用于网络和子网地址,其余 13 位用于子网内的主机。子网意味着部分主机空间已用于将网络划分为更小的网络。在这种情况下,网络地址可能是 16.100.0.0 /16,子网使用主机空间的前 3 个有效位将其分成最多 8 个子网。
因此,13 位意味着最多 2^3-1 个不同的可用 IP 地址 - 最后一个八位字节可以采用 0 到 255 之间的值,倒数第二个八位字节可以采用 134 + 0 到 134 + 31 之间的值
用二进制可能更容易看出这一点。您在那里的地址是
00010000.01100100.10000110.00000000
,有效的 IP 地址应该在 00010000.01100100.10000000.00000000
和 00010000.01100100.10011111.11111111
范围内,这让我认为您拥有子网中主机的地址 - 子网地址的 13 全部为 0最低有效位,意味着第三个八位字节仅具有 3 个最高有效位,即它的值为 0、32、64、128、96、192 或 224 之一
@Chris 在他的回答中解释得很好。我就是这样做的
示例:
❯ prips 20.13.16.0/30
20.13.16.0
20.13.16.1
20.13.16.2
20.13.16.3
# If your range is big (example /22), then you can also use grep
❯ prips 20.13.16.0/30 | grep 20.13.16.3
20.13.16.3