设置如下:
PC A: IP 地址:192.168.1.2 网络掩码:255.255.255.252 网关:192.168.1.1
PC B: IP 地址:192.168.1.220 网络掩码:255.255.255.0 网关:192.168.1.1
PC B 能够成功 ping 通 PC A。
根据我的想法,过程应该如下所示:
- PC B 可以正常 ping PC A,因为从 PC B 的角度来看,PC A 的 IP 地址被视为位于同一网络上。
- PC A 收到 ICMP 回应请求,并希望回复。
从 PC A 的角度来看,PC B 位于另一个网络上,因此为了让数据包到达它,应该将其发送到网关, - PC A将echo reply数据包发送至192.168.1.1。
- 网关发现数据包的发送方与接收方位于同一子网,因此它会丢弃该数据包,因为没有可进行的路由。
- 因此 A 永远无法向 B 发出答复。
但显然我错了,因为我可以清楚地看到 B 能够 ping 通 A。PC
A 和 PC B 使用以太网电缆连接到 ADSL 调制解调器。为什么 PC B 能够 ping 通 PC A?
我哪里想错了?
答案1
首先,PC B 必须获取 PC A 的 MAC 地址,以便它进行 ARP 或已经收到免费 ARP。无论哪种方式,它都有 MAC 地址,并且它会将 ping 发送到 PC A。PC A 会收到它,因为它指向的是它的 MAC 和 IP 地址。
PC A 现在应该像您所说的那样将响应发送到网关。该帧将具有 PC B 的 IP 地址和网关的 MAC 地址。网关是路由器。它接收数据包并知道将其发送到何处。它再次可能需要 ARP。无论如何,网关路由数据包,这次它将被定向到 PC B 的 MAC 地址。PC B 收到此数据包,因为 MAC 和 IP 地址与其自己的匹配。网关也可能向 PC A 发送 ICMP 重定向。PC A 应该忽略此,因为从它的角度来看,PC B 不在网络上。
总之,您的第 4 点是您的描述失败的地方,除非配置不这样做,否则路由器将路由回到源子网。
答案2
为什么PC B能ping通PC A呢?
由于 PC B 使用的子网掩码,它无需经过其本地网络之外即可将数据包发送到 PC A - 通过为其提供 /24,您就说 192.168.1.1-255 地址不需要转到网关即可访问它们。
答案3
网关发现数据包的发送方与接收方位于同一子网,因此它会丢弃该数据包,因为没有可进行的路由。
这可能取决于您的网关设备类型以及网关的配置方式。但是,假设您的网关设备使用 /24 网络掩码,任何路由器/交换机/防火墙都会看到数据包进入并将数据包转发到正确的目的地。
如果您也为网关配置了 /30,那么答复将无法到达那里 - 但 PC B 可能会遇到任何东西的连接问题。