【问题标题】:Calculating Network Addresses计算网络地址
【发布时间】:2019-06-01 15:40:04
【问题描述】:

问题如下。

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

我的答案是 119.61.112.0/21。

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

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

我很感激, 谢谢。

【问题讨论】:

    标签: ip-address subnet


    【解决方案1】:

    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 来说很方便)我们选择值为 0 的第 20 位作为 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
    

    【讨论】:

    • 这太棒了!没想到会有这样的答案!这帮助很大。谢谢。
    猜你喜欢
    • 2014-09-04
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多