假设我有两台主机 1 和 2,都连接到同一个无线路由器、同一个网络和同一个子网。
如果 1 ping 2 将会:
(a)1 将无线数据包发送到路由器的 MAC 地址,但发送到 2 的 IP。路由器在收到数据包后,将同一数据包重新传输到 2(显然源 MAC 已更改。)
(b)1 直接向 2 的 MAC 地址发送数据包。或者
(c)发生了其他事情。
答案1
恕我直言,Paula Bean 的回答是错误的。
客户端 1 确实知道客户端 2 是否在同一子网(第 3 层)。它不知道或关心它是在无线还是有线网络上(第 1 层和第 2 层)。它只知道并关心它是否在同一子网上。发往同一子网上的主机的数据直接发送到这些主机,无论它们是在有线还是无线连接上,都不会进行路由,因此路由器不会用自己的 MAC 地址替换发送者的 MAC 地址并将数据从客户端 1 转发到客户端 2。事实上,无线路由器的路由功能在这种情况下根本没有发挥作用,因为数据不需要路由,因为它位于同一子网的本地。无线网络仅仅是发送/接收数据的物理介质,但它的工作方式与第 1、2 和 3 层的任何其他网络一样。发往不在同一子网上的主机的数据按照场景 A 中的操作方式运行,发往同一子网上的主机的数据按照场景 B 中的操作方式运行。
编辑:
以下是我家网络上无线客户端(客户端 2)ping 有线客户端(客户端 1)的网络捕获的第 2 层信息。您将看到来自无线客户端的数据包的 MAC 地址(SourceAddress)是无线 NIC 的 MAC 地址,而不是无线路由器的 MAC 地址。
客户1:
以太网适配器本地连接:
物理地址。。。。。。。。。。。:00-21-9B-06-71-B5
客户端2:
无线局域网适配器无线网络连接:
物理地址。。。。。。。。。。:00-22-5F-B0-5E-66
网络捕获:
以太网:Etype = Internet IP(IPv4),目标地址:[00-21-9B-06-71-B5],源地址:[00-22-5F-B0-5E-66]
如您所见,由于两个客户端都位于同一子网,因此不会发生路由,无线客户端的数据包会直接发送到有线客户端,无线路由器不会执行路由,也不会替换 MAC 地址,而仅充当子网内通信的物理介质。
编辑:
处理子网内流量时,无线路由器充当第 2 层设备(交换机)。处理子网间流量时,无线路由器充当第 3 层设备(路由器)。
答案2
我认为是 A。如果你仔细想想,在相当常见的情况下,例如带有标准以太网端口的无线路由器,无线客户端无法知道 IP 是在有线网络上还是在无线网络上。只有路由器才能知道这些信息。此外,我认为 B 方案会给加密通信带来麻烦。