Sht*_*ééf 29 networking ip subnet
不使用子网中的第一个地址(即 IP)似乎是一种常见的做法192.168.0.0/24,或者更奇特的例子是172.20.20.64/29.
ipcalc我经常使用的工具遵循相同的做法:
$ ipcalc -n -b 172.20.20.64/29
Address: 172.20.20.64
Netmask: 255.255.255.248 = 29
Wildcard: 0.0.0.7
=>
Network: 172.20.20.64/29
HostMin: 172.20.20.65
HostMax: 172.20.20.70
Broadcast: 172.20.20.71
Hosts/Net: 6 Class B, Private Internet
Run Code Online (Sandbox Code Playgroud)
但为什么HostMin不只是64在这种情况下呢?该64地址是有效的地址,对不对?不管答案是什么,这同样适用于 IPv6 吗?
也许稍微相关:似乎也可以使用 TCP 端口 0 和 UDP 端口 0。这些是否有效或在任何地方使用?
小智 35
我知道这是一个旧线程,但我自己正在研究这个问题,我并没有停留在“未使用主机零,因为它是网络号”,因为我不明白为什么这很重要。即使它是网络号,也不应该阻止它被用作有效地址,因为确定网络号(与网络掩码)的机制仍然可以使用它来确定网络号。
不使用所有主机地址,因为它与我熟悉的广播地址一致,因为它已经是一个有效的目标地址,因此在使用时无法区分它们。
我们不能使用主机零的更充分解释的原因是它也是一个广播地址 - 尽管RFC1812第4.2.3.1节指出路由器接收到发送给它的数据包“应该默默地丢弃”它们(它们的重点 - 不是我的)。然而,同一段落确实允许将这些数据包视为广播。
这是完整的子部分
(2) SHOULD silently discard on receipt (i.e., do not even deliver to
applications in the router) any packet addressed to 0.0.0.0 or {
<Network-prefix>, 0 }. If these packets are not silently
discarded, they MUST be treated as IP broadcasts (see Section
[5.3.5]). There MAY be a configuration option to allow receipt
of these packets. This option SHOULD default to discarding
them.
Run Code Online (Sandbox Code Playgroud)
Cho*_*er3 20
因为子网中的第一个地址是指子网本身,用于路由目的。
Ger*_*mbs 15
正如 Wesley、Chopper3 和 Willy 指出的,现代惯例使用子网的第一个地址(全零主机号)和最后一个地址(全零主机号)作为广播地址。
由于历史原因,许多操作系统将第一个地址视为广播。例如,在本地 (/24) 网络上从 OS X、Linux 和 Solaris ping xxx0 会得到响应。默认情况下,Windows 不允许您 ping 第一个地址,但您可以使用 SetIPUseZeroBroadcast WMI 方法启用它。我想知道您是否可以在全 Windows 网络上使用 .0 作为主机地址。
在互联网时代的早期,xxx0 被用作网络的广播地址。后来改为xxx255。我记得在那段时间里,SunOS 上有一些选项可以将广播配置为 .0 或 .255。所以我想为了安全起见,.0 和 .255 一直是保留数字。
子网中的第一个数字是网络地址本身。所以 192.168.0.0/24 是用于指代该子网的数字。当然,最后一个地址是广播地址,广播发送到该地址,然后向下推送到该子网上的所有客户端。在 IP 网络中,您总是从广播地址中删除 2 以找到可寻址 IP 地址的总数。192.168.0.0/24 具有 192.168.0.255 的广播,因此有 253 个可寻址地址。192.168.0.0/26 具有 192.168.0.64 的广播,因此有 62 个可寻址地址。
(乔普和威利打败了我——但我脾气暴躁,不想删除我的帖子。=))
每个子网中的主机号0被保留,主要是因为它曾经是广播地址。
RFC 表示,解释一下,应该丢弃,但也可以用作广播,但也可以通过某些非默认选项用作主机号码。
现在, xyz0 中的八位字节0 很可能是完全有效的非零 CIDR 主机号,但在过去,由于站点硬件中的实现错误(可能是剩余的类完整代码),它偶尔会在孤立的站点上出现问题或SW。
如今,八位字节 0 工作得足够好,可以由 ISP 和云平台分配,尽管毫无疑问,某些服务根据过去的经验故意不分配它。
有趣的是,在任何特定站点支持主机 0 所需的只是本地子网上存在的确切设备的支持...一旦数据包在上游聚合,它甚至不可能知道它实际上具有(CIDR ) 主机号 0 正在使用。WAN根本不在乎。
最后,如果本地子网的主机使用全 1 的主机号进行广播,并且不对全 0 的主机号进行特殊处理,则可以将路由器保留为默认状态,并拥有一个仅限本地的“隐藏”站。这对于保护嵌入式系统可能很有用,例如容易遭受黑客攻击的廉价消费路由器......