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


37

我的网络范围为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?


7
请注意,这仅是IPv4。IPv6对于子网中的第一个和最后一个地址具有不同的规则。
迈克尔·汉普顿

1
在linux上,使用第一个地址不会有任何问题。一些旧系统认为.0是广播地址,会阻止您使用它,但这是错误的:)
Navin

Answers:


70

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

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

在此处输入图片说明

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

通常第一个地址是网络标识,最后一个地址是广播,不能用作常规地址。


9
但是,对于/ 31,有一个特殊的例外:假定它们隐式为点对点链接,因为它们只有两个地址。
西蒙·里希特

10
发布您的公用IP地址和该系统的用户名给了我heebie-jeebies。
mikeazo

8
@mikeazo为什么?您有不错的密码和fail2ban,对吗?此外,互联网上的每个IPv4地址都会受到攻击。
迈克尔·汉普顿

4
@MichaelHampton,因为现在互联网知道他的用户名,他的IP地址,并且他(不是)成功使用SSH密钥,而是使用密码。这样已经可以改善搜索空间。但是您是对的:对于专业人士来说,这应该不是问题。但是,教导世界不是一个好习惯。
Konerak '16

29
@mikeazo这是我在谷歌上搜索的屏幕截图netstat -r。这不是我的系统。
jcbermu

8

请注意,如果该地址用于对广播域中的设备(即物理网络或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子网”。


7
“我承认我并不是经常看到这种做法,这样做可能会引起一些混乱-因为大多数人的第一反应是认为这是不允许的-这种混乱很可能是建议这样做的理由。” –如果我没记错的话,其中一些“困惑的人”是Windows NT网络堆栈的设计师(至少是最初的一个,直到Vista),因此,除非您愿意与Windows用户打交道,否则他们抱怨他们的计算机可以在每个环境中正常工作。除非你的网络和向他们解释,这是微软的错,不是你的,你会得到很好的建议简单...
约尔格W¯¯米塔格

9
不用使用这两个地址。
约尔格W¯¯米塔格

1
@JörgWMittag,等等,您是说在网络10.0.0.0/22(即10.0.0.0-10.0.3.255)的情况下,7之前的Windows无法使用10.0.1.0或10.0.2.255?(尽管我认为这不再重要,因为不再支持旧版本)
ilkkachu

2
@ilkkachu:我不确定你是如何得出这些数字的。10.0.0.0/22的网络地址是10.0.0.0,广播地址是10.0.3.255。如果我没记错的话,在具有旧的(Vista之前的)TCP / IP堆栈的Windows计算机的网络中使用(至少一个)这两个地址存在某些问题。我不记得这些问题到底是什么,以及仅当您尝试将这些IP之一分配给Windows PC时,或者如果Windows PC与这些IP之间也存在通信问题时,这些问题才存在。我也不记得无论是在网络...
约尔格W¯¯米塔格

2
@JörgWMittagilkkachu即使在今天,由于子网可变,多个操作系统(不仅是Windows)和许多其他软件在使用以0或255结尾的任何地址时也会出现问题。即使它作为范围大于256的内部地址有效。这是A / B / C类地址的剩余部分,并且程序员假定任何计算机都在C类子网中,因此0和255在定义上均无效。即使您的操作系统和软件正确运行,仍然有可能必须连接到另一台出现问题的计算机。最好完全避免使用.0和.255,即使它们在您的设置中有效。
托尼

4

阅读《Internet标准子网划分过程》《面向Internet的子网划分标准方案》,特别是在“存在子网”中广播互联网数据的内容,第7节介绍了您选择的基本原理。

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

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

严格来说,可以使用全零(对于CIDR / 24为.0)地址,但是可能会使某些软件感到困惑,而将全零(.255)保留为众所周知的广播地址。

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


1

网络地址

根据局域网的容量,为局域网(LAN)或广域网(WAN)的网络提供地址。连接到网络的终端使用这些地址相互通信。系统默认为管理员通讯保留一些地址。通常,“ 255”地址用于在Linux或Fedora系统中广播消息。管理员使用此地址广播或寻址网络的所有用户。在紧急关闭的情况下,管理员可以将消息广播给其用户以保存其工作。某些操作系统提供了分配“ 0”地址的功能。

了解有关网络基础知识的更多信息:Microsoft的网络寻址

还可以看看什么是网络地址转换?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.