IPv4 主机 ID、网络 ID 和子网 ID 示例

IPv4 主机 ID、网络 ID 和子网 ID 示例

我刚刚读到令人惊叹的 Serverfault 答案回答一个非常基本的问题:IPv4 子网划分是如何工作的?尽管我理解了接受答案中所述的大部分内容,但我仍然对一开始描述的最重要的一个概念感到困惑:子网位掩码计算是如何工作的。

该答案中的示例是 IP 10.13.216.41/18

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address as bytes

然后作者提供了这个工作区域:

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask (/18 => 255.255.192.0)
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

我理解第三行是如何生成的:它是 IP 中的位与子网掩码中的位的逻辑结合(“ANDing”)。这对我来说完全说得通。顺便问一下,第三行(00001010.00001101.11000000.00000000)是什么:主机 ID、网络 ID 还是子网 ID?

但第四行(00000000.00000000.00011000.00101001)对我来说毫无意义。我读过这个答案好几次,但还是搞不清楚它是如何计算/得出的,以及它代表什么/有什么用处(主机 ID、网络 ID、子网 ID?)。有人知道这是从哪里来的吗?!提前谢谢!

答案1

首先,请注意第 4 行的结果与第 3 行相反。与掩码的按位结合不会改变位1,而第 4 行的结果则相反,因此它一定是与面具的对面。

所以如果第 3 行是address AND mask,那么第 4 行就是address AND (NOT mask)

下面回答了这两行的含义。


第二,忘记“子网 ID”。以前,当你有带子网的分类网络时,这是一个单独的数字。在现代网络中,它是不再分离来自“网络ID”。

这使得事情变得简单一些,因为现在您只有两种状态:如果它被掩码中的 1 位覆盖,那么它就是网络部分;如果它被 0 位覆盖,那么它就是主机部分。

此外,CIDR 要求子网掩码位连续,因此它变得更加简单:/18表示前 18 位从左边开始是网络ID,其余所有(即剩余的14位)都是主机ID。


1好吧,在将较大的网络划分为较小的网络时,您仍然可以计算出“子网 ID”——这在 IPv6 中更加明显,通常将 /48 分配给站点并使用 /64 大小的子网,从而实现非常整齐的划分。

然而,尽管早期的 IPv6 修订版本暂时地恢复了正式的地址结构(您有“顶级聚合”等等),但这不再是问题,任何“子网 ID”都纯粹是您自己的决定。

相关内容