![网络 192.168.176.0/23(子网 23)的第一个和最后一个 IP 地址](https://linux22.com/image/657900/%E7%BD%91%E7%BB%9C%20192.168.176.0%2F23%EF%BC%88%E5%AD%90%E7%BD%91%2023%EF%BC%89%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%20IP%20%E5%9C%B0%E5%9D%80%20.png)
假设网络地址为:192.168.176.0/23。该网络的第一个和最后一个 IP 地址是什么?
按照这个答案https://serverfault.com/a/327782/288201我假设:
/23 表示子网为 23 位。按每字节 8 位计算,前两个字节为 16 位,第三个字节为 7 位 => 1111 1111. 1111 1111. 1111 1110. 0000 0000,对吗?
这意味着我们的最后两个字节将采用以下形式(nnnn nnnH. HHHH HHHH),其中 n 是子网位,H 是主机位。
因此网络地址是 (nnnn nnn|0 0000 0000) -> .0,广播是 (nnnn nnn|1 1111 1111) -> 2^9 是广播?不可能。这里我漏掉了一些东西,很简单。那么第一个和最后一个 IP 是什么?这是我按照上面链接中提到的答案(作者 b0fh)没有得到的。
第一个 192.168.176.1,最后一个 192.168。177.254 ?
答案1
令您感到困惑的是,您试图将主机部分转换为十进制值,并将其加总为网络地址,而主机部分被分成两个八位字节。
您的网络是:
11000000.10101000.10110000.00000000
您的网络掩码是:
11111111.11111111.11111110.00000000
您的通配符掩码(将会改变的部分):
00000000.00000000.00000001.11111111
通常,当您说2^9 = 512
是广播时,您只是忘记了主机部分的一位位于第三个八位字节的最后一位。因此,当它发生变化时,您将获得以下结果:
11000000.10101000.10110000.<something>
或这个 :
11000000.10101000.10110001.<something>
因此,此处您的“ 512
”十进制形式实际上是0.0.1.255
(应始终为点分十进制形式,以免犯此错误)。非网络部分将从 到192.168.176.0
。192.168.176.0 + 0.0.1.255
最后一个地址是广播地址,您会发现这是192.168.177.255
。
您还可以通过将通配符掩码添加到您的网络地址来获取它:
11000000.10101000.10110000.00000000
+ 00000000.00000000.00000001.11111111
= 11000000.10101000.10110001.11111111
也就是192.168.177.255
。
答案2
我将尝试阐明我所认为的您的困惑之根:
IPv4 地址是一个 32 位整数,但是我们写出地址时通常不会这样格式化。
我相信您已经意识到,规范是将地址写成,[first eight bits in decimal].[next eight bits in decimal].[next eight bits in decimal].[last eight bits in decimal]
但重要的是要认识到,这实际上只是格式化单个可能非常大的数字的不同方式。
当您指定跨域路由netmask(/n
)表示 32 位地址中有多少位构成网络标识符,其余位构成主机标识符。
在您的示例中192.168.176.0/23
,前 23 位是网络前缀,剩下 9 位是主机标识符,这意味着主机标识符跨越了最后一个八位字节边界。主机标识符将影响 - 格式地址的最后两段a.b.c.d
。
为了说明这一点,我将包括sipcalc
显示地址作为原始位(实际上与理解数学更相关)以及a.b.c.d
格式化地址的输出。
$ sipcalc -b 192.168.176.0/23
-[ipv4 : 192.168.176.0/23] - 0
[CIDR bitmaps]
Host address - 11000000.10101000.10110000.00000000
Network address - 11000000.10101000.10110000.00000000
Network mask - 11111111.11111111.11111110.00000000
Broadcast address - 11000000.10101000.10110001.11111111
Cisco wildcard - 00000000.00000000.00000001.11111111
Network range - 11000000.10101000.10110000.00000000 -
11000000.10101000.10110001.11111111
Usable range - 11000000.10101000.10110000.00000001 -
11000000.10101000.10110001.11111110
-
$
$ sipcalc 192.168.176.0/23
-[ipv4 : 192.168.176.0/23] - 0
[CIDR]
Host address - 192.168.176.0
Host address (decimal) - 3232280576
Host address (hex) - C0A8B000
Network address - 192.168.176.0
Network mask - 255.255.254.0
Network mask (bits) - 23
Network mask (hex) - FFFFFE00
Broadcast address - 192.168.177.255
Cisco wildcard - 0.0.1.255
Addresses in network - 512
Network range - 192.168.176.0 - 192.168.177.255
Usable range - 192.168.176.1 - 192.168.177.254
-
$