简单查询。只是想知道,如果我有一台电脑
PC-A
IP: 192.168.0.10
Subnet: 255.255.0.0
Run Code Online (Sandbox Code Playgroud)
而另一个
PC-B
IP: 192.168.0.15
Subnet: 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
两者都在同一个物理网络上,我应该能够从 PC-A ping PC-B 吗?
是,它们应能够ping彼此,在两个方向上:其原因是,PC-B的网络被完全包含PC-A的网络内,和PC-A位于其网络的那部分也属于PC-B的网络。
PC-B的网络是
192.168.0.1 <-> 192.168.0.254
Run Code Online (Sandbox Code Playgroud)
而 PC-A 的网络是
192.168.0.1 <-> 192.168.255.254
Run Code Online (Sandbox Code Playgroud)
编辑:
如果我在 192.168.1.15/255.255.255.0 上有 PCB 会怎样。我假设我无法 ping,因为 IP 范围不同?
是的,让我解释一下原因:如果您尝试 ping LAN 外的某些内容,ICMP (=ping) 数据包将路由到您的网关,这表明它们属于不同的 LAN,因此将它们发送到其外部接口 (=向外部世界):没有数据包在同一物理网络上发送,只有发送到网关的数据包,PC-B 不能,也不会拦截。
尽管下面说了,路由器...
...应该遵守水平分割规则,该规则表示您不会将在一个接口上收到的数据包转发回同一接口。这可能会导致路由循环。路由器应该丢弃具有相同源网络和目标网络的数据包
正如@RonMaupin 正确指出的那样(对 RFC 表示敬意,当您发布它们时,我仍在寻找它们!)。
此外,还有一个简单的方法来测试这个:删除到本地 LAN 的默认路由(在 Linux 上,这是通过
ip route del 192.168.0.0/24 dev eth0
Run Code Online (Sandbox Code Playgroud)
如果192.168.0.0/24
是您的网络和eth0
接口),但保持默认网关不变。现在,与 LAN 上其他机器的所有通信都必须由网关进行调解。你会看到大多数路由器(例外?)不允许ping
局域网机器,这包括我的 EdgeMax RouterOS 和我的 Buffalo DD-Wrt。