【问题标题】:How do I find nth IP of the given subnet?如何找到给定子网的第 n 个 IP?
【发布时间】:2019-01-08 15:16:54
【问题描述】:

例如:给定子网 10.10.0.0/16 ,如果我必须找到给定子网范围的第 1000 个 ip?

【问题讨论】:

  • 你可以使用 1 到 255,所以 256+256+256+256 = 1024,然后我们需要减去 24 - 所以 10.10.3.232 是第 1000 个 IP 地址..(因为 256+256+ 256+256 = 10.10.4.0 减去 24 = 10.10.3.232)

标签: ipv4 subnet


【解决方案1】:

因此,您可以拥有等于 2^16 = 65536 的总可用 IP 地址(考虑到 16 位可用)。现在,要找到您的 1000 个 IP 地址,您可以使用 10 个最低有效位。所以它就像 10.10.00000011.11101000/16 等于 10.10.3.232/16。

【讨论】:

    【解决方案2】:
    1. 将ip地址转换为二进制:

      00001010.00001010.00000000.00000000

    2. 将掩码转换为二进制:

      11111111.11111111.00000000.00000000

    (前 16 位被屏蔽。这为我们提供了地址的后 16 位。)

    1. 第一个地址 10.10.0.0 将是子网地址

    2. 前 255 个地址为 10.10.0.1 - 10.10.0.255

    3. 第二个 256 个地址将是 10.0.1.0 - 10.10.1.255 等等。

    掌握了这些知识:

    • 1000 除以 256(0 - 255 个地址)= 3(第三个​​八位字节的数字,所以 10.10.3.XXX
    • 256 * 3 = 768 (前3次迭代得到768地址)减1 = 767 (第一个地址10.10.3.0作为子网地址,不能赋值给主机)
    • 1000 - 767 = 233 (所以我们需要上次迭代的 233) 给我们 10.0.3.233

    以 CIDR 表示法回答 = 10.10.3.233/16 (主机可以分配的第 1000 个 IP 地址)

    【讨论】:

      【解决方案3】:

      通过查看子网本身,我们可以确定子网的第一个地址是 10.10.0.1 到 10.10.255.255。

      因为掩码是 /16,所以最后两个八位字节可以更改,每个八位字节的值可以是 0-255,即 256 的可能性。

      所以如果我想找到第 1000 个 ip,那么 第四个八位字节 = 1000%256(余数)

      第三个八位字节 = 100/256(商)

      在我们的例子中, 第四个八位字节 = 253

      第三个八位字节 = 3

      所以第 100 个将是“10.10.3.232”。

      如果我错了,请纠正我。谢谢

      【讨论】:

        猜你喜欢
        • 2013-05-23
        • 2016-01-01
        • 2018-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        相关资源
        最近更新 更多