计算网络地址

Calculating Network Addresses

题目如下

考虑一个互连三个子网的路由器:A、B 和 C。假设每个子网中的所有接口 这些子网需要有前缀 119.61.96.0/19。假设子网 A 和 B 都需要 支持2000个接口,子网C需要支持4000个接口。提供网络地址 满足这些约束的 A、B 和 C(形式为 a.b.c.d/x)。

A​​ 的答案是 119.61.112.0/21。

我认为这是可以接受的。我对 /21 部分有所了解,2^11 所以从 /21 来自的 32 位中获取它。沿着这个逻辑的东西。让我感到困惑的是为什么 112 是可以接受的。我已经尝试将整个东西转换为二进制文件,但仍然不明白为什么。我知道你必须像这样用 2^11 做点什么? 0/000 0000 0000

无论如何,如果有人能以正确的方式指出我,如果我理解第一个,我应该能够弄清楚其余的。如果我跑题了,我深表歉意。

我很感激, 谢谢。

IPv4 是 4 个字节(32 位)。每个字节可以取 0 到 255 之间的值。

119.61.96.0/19 表示最高 19 位将始终相同:

二进制表示(左边高位):

01110111.00111101.01100000.00000000 

前19位:

01110111.00111101.011

子网A和B需要2000个地址,最接近的2的幂是11(2048)。这意味着他们需要 11 位的地址。

子网C需要4000个地址,最接近的2的幂是12(4096)。这意味着他们需要 12 位地址。

对于 C 子网:

32 bits of IPv4 address 
- 19 bits (fixed) 
- 12 bits (address space) 
-------------------------
= 1 bits we can use to divide in subnets of 4096 addresses

如果(方便 OP)我们 select 第 20 位值为 0 作为 C 子网,C 将被定义为:

01110111.00111101.0110 = 119.61.96.0/20

对于 A 和 B 子网

32 bits of IPv4 address 
- 19 bits (fixed) 
- 11 bits (address space) 
-------------------------
= 2 bits we can use to divide in subnets of 2048 addresses

由于 C 子网将 A 和 B 的第 20 位设置为 0,因此该位的值为 1。 第 21 位(同样方便 OP)我们将为子网 A 定义值 0,为子网 B 定义 1。

子网 A

01110111.00111101.01110 = 119.61.112.0/21

子网 B

01110111.00111101.01111 = 119.61.120.0/21