为什么我不能使用子网中的第一个或最后一个地址?

Joh*_*n K 42 networking ipv4

我的网络范围为 10.0.0.0/24。这意味着我有 10.0.0.0 到 10.0.0.255,但是我不能使用 10.0.0.0 或 10.0.0.255,但我可以使用这两者之间的任何东西。

为什么是这样?掩码 255.255.255.0 暗示最后一位是主机地址,那么为什么我不能使用 0 或 255?

jcb*_*rmu 73

/24 网络中您不能使用,0因为它是网络的标识(设备使用它来识别它们所连接的不同网络)。

在 Windows PC 中打开命令提示符并键入netstat -r. 您将获得 PC 使用的路由表,每个网络都使用网络标识(第一个地址)列出。

在此处输入图片说明

255在 /24 网络的情况下,最后一个地址是广播地址。连接到网络的设备使用它来发送广播,这是一条面向网络上所有设备的消息。

一般一个地址是网络标识,最后一个是广播地址,不能作为普通地址使用。

  • @mikeazo 这是我在谷歌搜索 `netstat -r` 时发现的截图。这不是我的系统。 (30认同)
  • 为上述系统发布您的公共 IP 地址和用户名给了我 heebie-jeebies。 (11认同)
  • 但是,对于 /31 有一个特殊的例外:它们被假定为隐式点对点链接,因为它们只有两个地址。 (9认同)
  • @mikeazo 为什么?你有不错的密码和fail2ban,对吧?此外,互联网上的每个 IPv4 地址都会受到攻击。 (8认同)
  • @MichaelHampton 因为现在互联网知道他的用户名、他的 IP 地址,而且他没有(成功地)使用 SSH 密钥,而是使用密码。这已经优化了搜索空间。但你是对的:对于专业人士来说,这应该不是问题。但是,教世界并不是一个好习惯。 (4认同)

小智 9

请注意,如果用于为广播域(即物理网络或 vlan 等)中的设备编号,则不能使用范围中的第一个和最后一个地址。正如另一个答案所表明的那样,在该场景中,第一个和最后一个分别用作网络和广播地址。此外,在某些情况下,第一个地址也被解释为广播。

但是,还有其他使用场景,您可以使用第一个和最后一个地址。例如,如果您是防火墙管理员并且您的网络管理员为您提供了 10.0.0.0-10.0.0.255范围,那么您可以将所有 256 个地址用作防火墙上的 NAT 地址。我承认我没有经常看到这样做,当它完成时可能会引起一些混乱——因为大多数人的第一反应是认为这是不允许的——而这种混乱很可能是反对它的一个理由。

如果你挑剔那么好吧,严格来说,在那种情况下 10.0.0.0-10.0.0.255 不是一个 /24网络,它是一个范围或一个地址,但我相信通常的做法是仍然将其称为在这种情况下,“10.0.0.0/24 子网”。

  • 不使用这两个地址。 (9认同)
  • “我承认我并没有经常看到这样做,当它完成时可能会引起一些混乱——因为大多数人的第一反应是认为这是不允许的——而这种混乱很可能是反对它的一个理由。” – 如果我没记错的话,其中一些“困惑的人”是 Windows NT 网络堆栈的设计者(至少是 Vista 之前的原始堆栈),因此,除非您愿意与抱怨他们的计算机在所有环境中都可以正常工作的 Windows 用户打交道除了您的网络,并向他们解释这是 Microsoft 的错,而不是您的错,建议您简单地…… (7认同)
  • @ilkkachu:我不确定你是如何得出这些数字的。10.0.0.0/22 的网络地址是 10.0.0.0,广播地址是 10.0.3.255。如果我没记错的话,在带有旧(Vista 之前)TCP/IP 堆栈的 Windows 计算机的网络中使用(至少一个)这两个地址存在某些问题。我不记得这些问题究竟是什么,如果这些问题仅在您尝试将其中一个 IP 分配给 Windows PC 时才存在,或者 Windows PC 和这些 IP 之间是否也存在通信问题。我也不记得是不是网络... (2认同)
  • @JörgWMittag ilkkachu 即使在今天,有了可变子网,几个操作系统(不仅仅是 Windows)和许多其他软件在使用以 0 或 255 结尾的任何地址时也会出现问题。即使它作为范围内的地址有效 > 256 . 这是 A/B/C 类寻址的剩余部分,程序员假设任何计算机都在 C 类子网上,因此每个定义 0 和 255 都是无效的。即使您的操作系统和软件运行正常,仍有可能必须连接到另一台出现问题的计算机。最好完全避免 .0 和 .255,即使它们在您的设置中有效。 (2认同)

Pek*_*kka 5

阅读Internet Standard Subnetting ProcedureToward an Internet Standard Scheme for Subnetting,特别是在存在子网的情况下广播 INTERNET DATAGRAMS第 7 节描述了您提出的选择的基本原理。

对于具有连续位掩码的 CIDR 子网,您的假设是正确的。

将广播地址视为 更容易Bcast = Host | ~Mask。这明确忽略了子网中位的选择。对应的网络地址为Net = Bcast & ~Mask

严格来说,可以使用全零(CIDR/24 的 .0)地址,但可能会混淆某些软件,而全 1(.255)被保留为众所周知的广播地址。

RFC 919 之前的一些早期 BSD Unix 4.2 版本使用Net地址作为广播。在 4.3 版本之前,这在混合环境中引起了一些混乱。