我只是在 CIDR notaion 中对网络地址进行子网划分有问题,有人可以为我解释一下吗?例如我该如何解决这个问题:
如果网络地址 197.23.37.128/25 被划分为 4 个子网,请以 CIDR 表示法给出子网地址(您可以同时使用第一个和最后一个子网)
任何帮助,将不胜感激
我只是在 CIDR notaion 中对网络地址进行子网划分有问题,有人可以为我解释一下吗?例如我该如何解决这个问题:
如果网络地址 197.23.37.128/25 被划分为 4 个子网,请以 CIDR 表示法给出子网地址(您可以同时使用第一个和最后一个子网)
任何帮助,将不胜感激
有一个很棒的perl 脚本可以帮助你想象它是如何工作的。示例输出:
$ ./ipcalc 197.23.37.128/25
Address: 197.23.37.128 11000101.00010111.00100101.1 0000000
Netmask: 255.255.255.128 = 25 11111111.11111111.11111111.1 0000000
Wildcard: 0.0.0.127 00000000.00000000.00000000.0 1111111
=>
Network: 197.23.37.128/25 11000101.00010111.00100101.1 0000000
HostMin: 197.23.37.129 11000101.00010111.00100101.1 0000001
HostMax: 197.23.37.254 11000101.00010111.00100101.1 1111110
Broadcast: 197.23.37.255 11000101.00010111.00100101.1 1111111
Hosts/Net: 126 Class C
您的问题中掩码的网络部分是 25 位长。如果要将其分成 4 个以上的子网,则需要多 2 个位。(因为math.pow(2,2) == 4
)所以你必须将它扩展到 /27,如下所示:
$ ./ipcalc 197.23.37.128/27
Address: 197.23.37.128 11000101.00010111.00100101.100 00000
Netmask: 255.255.255.224 = 27 11111111.11111111.11111111.111 00000
Wildcard: 0.0.0.31 00000000.00000000.00000000.000 11111
=>
Network: 197.23.37.128/27 11000101.00010111.00100101.100 00000
HostMin: 197.23.37.129 11000101.00010111.00100101.100 00001
HostMax: 197.23.37.158 11000101.00010111.00100101.100 11110
Broadcast: 197.23.37.159 11000101.00010111.00100101.100 11111
Hosts/Net: 30 Class C
要获得下一组 5 位,请将一个添加到网络掩码:
$ python
>>> 128 + 0b100000
160
所以你的下一个子网是197.23.37.160/27
,依此类推。
您可以查看有关 CIDR 的 Wikipedia 文章。/25 表示地址的前 25 位用于标识网络。这留下 7 位来标识单个主机,或 128 个主机地址。如果您对剩余地址进行分区 (4),那么您将获得 32 个主机的块。