我听说过 ARP 协议用于学习 LAN 中其他设备的 MAC 地址以相互通信。但是,我对它在有多个设备的典型基础架构模式下的工作方式感到有些困惑。
我相信,所有设备都会有一个本地私有 IP,但它们永远不能直接相互通信,只能通过无线接入点(AP)
问题
我想了解为什么两个设备在彼此的无线范围内时不能直接相互通信?
是否需要知道对方的 MAC 才能进行交谈?我认为根本不需要它,因为直接寻址似乎是不可能的,并且所有流量路由都通过 Wi-fi AP。因此,只知道其他设备的 IP 地址就足够了。这是正确的吗?
如果上述情况属实..在基础架构模式下根本不需要 ARP 协议,因为不需要知道 MAC?这种理解正确吗?
编辑:
感谢您的详细回复。我的问题#3的意思是..如果主机A想在同一个wifi网络中与主机B通信,主机A可能不需要知道主机B的MAC。如果主机A有主机B的IP并且它知道MAC的 WAP。因此,它可以发送具有主机 B 的目标 IP 和 WAP 的 MAC 的数据包。并且由于WAP知道Host B的MAC,它可能会将目标MAC从自己的MAC替换为Host B的MAC,最终将数据包发送给Host B。这样的安排是不是不可能?主机 A 和主机 B 在 wifi LAN 网络中是否一定需要知道彼此的 MAC 才能相互交谈?
如果主机 A 主机 B 从不互相交谈并且总是通过 WAP(正如您所澄清的那样),那么我觉得..为什么他们甚至需要知道彼此的 MAC?只知道 WAP 的 IP 和 MAC 就足够了……是真的吗?对不起一个新手问题。
编辑: 首先,我很抱歉以答案的形式发布问题!是的,我现在明白 WAP 需要执行 ARP/NDP 来找出连接设备的数据链路/MAC 地址,以便传送数据包。但是我想用一个例子来解释我的观点。
假设主机 A 和主机 B 连接到同一个 Wifi AP。现在,当主机 A 想向主机 B 发送数据包/数据时,数据将通过 WAP..所以,主机 A 可能不需要知道主机 B 的 MAC。主机 A 可以将主机 B 的 IP 封装在数据链路中带有 WAP 的 MAC 的数据包并将数据包发送到 WAP。WAP 通过 ARP 或 NDP 知道主机 B 的 MAC,因此 WAP 能够正确地将数据包传递给主机 B。在这种情况下,主机 A 可能不需要做 ARP/NDP 来查找主机 B 的 MAC?
或者
主机A是否需要将主机B的IP作为负载封装到仅具有主机B的MAC的数据链路数据包中?如果是这种情况,是的,我可以理解主机 A 在发送任何数据包之前需要先执行 ARP/NDP 以找到主机 B 的 MAC
我希望我能正确解释我的疑问。对不起,如果我造成混乱。
编辑
谢谢你的解释。它帮助我现在很好地理解它。我可以理解,WAP 真的不需要在同一个 wifi 网络通信中学习 L3 层协议,也许 L3 层数据可以一直完全隐藏在有效载荷数据中。当 WAP 将新的 wifi 帧传送到主机 B 时,MAC 将不断变化,甚至无需查看有效负载。
但是,我想知道 WAP 是如何处理路由的。在这种情况下,真正的目标 MAC 将是未知的……因为该设备将位于不同的网络中。主机 A 只知道目标 IP。根据 wifi 帧格式,它可以填写发送器、接收器 MAC。但是 WAP 需要删除 L2 标头并检查 L3 数据,例如目标的 IP 地址?然后可能会查找路由表等来决定下一个 IP、下一跳等。在这种情况下,WAP 会不会像 IPv4、IPv6 那样具有一定程度的 IP 协议意识?理解是正确的还是我仍然遗漏了什么?只有在同一个网络(家庭 wifi 网络)的情况下,WAP 才忽略网络层协议,但在路由的情况下,它需要 L3 层感知......对吗?如果这是真的,支持 IPv4 的 WAP 能否开箱即用地为 IPv6 工作,或者需要一些软件/硬件更新才能支持 IPv6?谢谢你

