是否需要知道 MAC 才能与同一 wifi 网络中的另一台设备通话?

网络工程 MAC地址 IEEE-802.11 ARP
2022-02-13 09:26:28

我听说过 ARP 协议用于学习 LAN 中其他设备的 MAC 地址以相互通信。但是,我对它在有多个设备的典型基础架构模式下的工作方式感到有些困惑。

我相信,所有设备都会有一个本地私有 IP,但它们永远不能直接相互通信,只能通过无线接入点(AP)

问题

  1. 我想了解为什么两个设备在彼此的无线范围内时不能直接相互通信?

  2. 是否需要知道对方的 MAC 才能进行交谈?我认为根本不需要它,因为直接寻址似乎是不可能的,并且所有流量路由都通过 Wi-fi AP。因此,只知道其他设备的 IP 地址就足够了。这是正确的吗?

  3. 如果上述情况属实..在基础架构模式下根本不需要 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?谢谢你

2个回答
  1. 我想了解为什么两个设备在彼此的无线范围内时不能直接相互通信?

所有设备仅在基础架构模式下与 WAP 通信。这实际上增加了 Wi-Fi 网络的覆盖范围,并且使网络更加稳定,尤其是在 Wi-Fi 设备是移动设备的情况下。

  1. 是否需要知道对方的 MAC 才能进行交谈?我认为根本不需要它,因为直接寻址似乎是不可能的,并且所有流量路由都通过 Wi-fi AP。因此,只知道其他设备的 IP 地址就足够了。这是正确的吗?

同一二层网络上的设备使用二层寻址相互通信。对于 Wi-Fi 和其他 IEEE 协议,即 MAC 寻址。Wi-Fi 帧比只有源 MAC 地址和目标 MAC 地址的以太网帧更复杂,因此帧首先由 WAP 在基础架构模式下处理。Wi-Fi 与其他数据链路协议一样,对其帧的有效负载一无所知,因此它对网络层寻址一无所知,它可以承载任意数量的网络层协议(IPv4、IPX、IPv6、AppleTalk、 ETC。)。这里有很多关于数据链路和网络寻址需求的问题的答案。

  1. 如果上述情况属实..在基础架构模式下根本不需要 ARP 协议,因为不需要知道 MAC?这种理解正确吗?

你上面的想法是不正确的。IPv4 需要 ARP,而 IPv6 需要 NDP,以发现目标 IP 地址的数据链路地址。IP 数据包必须使用数据链路寻址封装在数据链路帧中,以便数据链路协议可以将它们传送到 LAN 目的地。


对于您的编辑:

我的问题#3的意思是..如果主机A想在同一个wifi网络中与主机B通信,主机A可能不需要知道主机B的MAC。

是的,主机需要知道目标主机的数据链路地址(在本例中为 MAC)地址。数据链路协议需要帧中的目标数据链路地址。

如果主机 A 拥有主机 B 的 IP,并且它知道 WAP 的 MAC。因此,它可以发送具有主机 B 的目标 IP 和 WAP 的 MAC 的数据包。并且由于WAP知道Host B的MAC,它可能会将目标MAC从自己的MAC替换为Host B的MAC,最终将数据包发送给Host B。这样的安排是不是不可能?

这是不可能的,因为 Wi-Fi 不知道所使用的网络协议。例如,如果您的 WAP 使用 IPv4,那么当您的公司开始添加 IPv6 时会发生什么。它需要用 IPv6 WAP 替换 WAP,然后任何 IPv4 主机都将被锁定。数据链路协议和数据链路基础设施对网络层(数据链路协议的有效负载)一无所知。

在任何情况下,WAP 都需要使用 ARP 或 NDP 来获取 IP 地址的数据链路地址,因此仍然需要和使用 ARP 或 NDP。


对于您的下一次编辑:

假设主机 A 和主机 B 连接到同一个 Wifi AP。现在,当主机 A 想要向主机 B 发送数据包/数据时,数据将通过 WAP..所以,主机 A 可能不需要知道主机 B 的 MAC。

是的,主机 A必须知道主机 B 的 MAC 地址,因为它需要在 Wi-Fi 帧中。与只需要源 MAC 地址和目标 MAC 地址的以太网不同(上面已告诉您),Wi-Fi 帧更复杂,它仍然需要目标 MAC 地址。您似乎想要重写 Wi-Fi 协议,并且您会因了解网络协议而加重 WAP 的负担,因此您需要将这些知识构建到 WAP 中。如果您有用于 IPv4 的 WAP,那么您想添加 IPv6,则需要获得支持 IPv6 的新 WAP。您希望第 2 层设备了解第 3 层,这不是独立协议的工作方式。第 2 层设备(如 WAP 和第 2 层交换机)不了解第 3 层协议。IP(IPv4 和 IPv6)由 IETF 标准化和维护,但许多数据链路协议,包括以太网、Wi-Fi、

注意帧头的区别。Wi-Fi 协议仍然需要目标主机 MAC 地址(Wi-Fi 标头中有四个 MAC 地址,而以太网标头中只有两个),并且它对任何一个 IP 版本一无所知,因此它不包括 IP,或任何其他网络协议,寻址。这意味着它可以携带任何网络协议作为其有效负载。通过了解网络协议来增加数据链路协议的负担违反了网络层的抽象和封装原则。

以太网帧:

在此处输入图像描述

Wi-Fi 帧头:

在此处输入图像描述


为您编辑下一次编辑:

我想知道 WAP 是如何处理路由的。

WAP 是一个网桥,就像以太网交换机是一个网桥一样。在同一二层网络上桥接转发二层帧。它们不在网络之间路由第 3 层数据包。路由器在网络之间路由第 3 层数据包。主机将使用路由器的第 2 层地址作为帧,该帧封装了发往不同网络的数据包。

主机 A 只知道目标 IP。根据 wifi 帧格式,它可以填写发送器、接收器 MAC。但是 WAP 需要删除 L2 标头并检查 L3 数据,例如目标的 IP 地址?

不,主机 A 将封装一个发往不同网络的第 3 层数据包,其中第 2 层帧发往其配置的网关(路由器,网络上知道如何到达其他网络的主机)。

然后可能会查找路由表等来决定下一个 IP、下一跳等。在这种情况下,WAP 会不会像 IPv4、IPv6 那样具有一定程度的 IP 协议意识?

不,第 2 层设备对第 3 层一无所知。路由器是第 3 层设备,在多个第 3 层网络中具有接口,并具有告诉它们如何将数据包转发到其他网络的路由表。

理解是正确的还是我仍然遗漏了什么?

你的理解是有缺陷的。

只有在同一个网络(家庭 wifi 网络)的情况下,WAP 才忽略网络层协议,但在路由的情况下,它需要 L3 层感知......对吗?

同样,家庭网络和消费级设备在这里显然是题外话。您指的是家庭路由器,它是一个弗兰肯斯坦盒子,在同一个盒子里有多个设备。您需要区分各种设备。

如果这是真的,支持 IPv4 的 WAP 是否可以开箱即用地为 IPv6 工作,或者需要一些软件/硬件更新才能支持 IPv6?

WAP 是第 2 层设备,它在同一网络上桥接帧,但路由器在网络之间路由数据包。

是否需要知道 MAC 才能与同一 wifi 网络中的另一台设备通话?

简短的回答:是的。

WAP 和有线交换机是网桥,工作在数据链路层(L2)。根据帧的目标 MAC 地址桥接转发帧,同时通过每个帧的源 MAC 地址了解节点位置。

IP 地址属于数据链路层之上的网络层(L3)。该寻址与桥无关。

IP 节点不能直接通过 L2 网络发送 IP 流量。他们需要将其 IP 数据包封装成 L2 帧(主要是 Wi-Fi/802.11 的以太网/802.3),根据 L2 网络的需要(主要使用 MAC 地址)进行寻址。IP 节点通过使用 ARP(用于 IPv4)或 NDP(用于 IPv6)来学习所需的 L2 地址。