【问题标题】:Why do 802.11 Acknowledgement Frames have no source MAC?为什么 802.11 确认帧没有源 MAC?
【发布时间】:2016-08-30 15:12:33
【问题描述】:

有人知道为什么 802.11 确认帧没有源 MAC 地址吗?当我使用监控模式和混杂模式驱动程序从 Linux 捕获来自 TCPDUMP 或 Wireshark 的数据包时,我看不到它。如果帧中没有源 MAC 地址,接入点如何区分来自不同 802.11 客户端的 ACK 帧?

我可以从所有捕获中看到 ACK 在帧发送后立即出现(大约 10 到 30 微秒),但仅凭这一点还不足以区分来源,不是吗?也许每个帧都有某种唯一标识符,而 ACK 帧里面有这个 ID?由于WLAN使用WPA-PSK模式,加密payload中可能有识别信息?

【问题讨论】:

标签: wifi


【解决方案1】:

不,802.11 MAC ACK 帧中没有加密任何内容。

802.11 是一种基于竞争的协议。即媒体由不同的STA和AP共享,它们在时间上都在相同的信道[频率]中工作。想传播的人在争夺媒介,获得媒介的赢家开始传播。

根据 802.11 规范。 ,一旦一帧播出,下一个“SIFS”周期媒体应该是免费的。即不允许任何人传输。 在 SIFS 结束时,单播帧的接收者应该发送 ACK。这是规则。

对于基于 OFDM 的 802.11 实施 [802.11 G,A],802.11 中的 SIFS [短帧间间隔] 约为 10 微秒。如果我的记忆是正确的,对于 802.11b,它大约需要 20 微秒。这就是为什么您在 TX 和 ACK 之间看到 10 或 30 微秒

所以,每个人都知道谁在发送 ACK 以及 ACK 是给谁的。所以不需要包含源地址,它是隐式的。

为什么不包括源地址? 将框架尺寸减小到相同的功率。

希望对您有所帮助。如果您对此有更多疑问,请随时提出

【讨论】:

    【解决方案2】:

    ACK 帧与所有 802.11 管理帧一样,在其 MAC 标头中有一个 DA(目标地址)和 SA(源地址)(两者都不要与“MAC 地址”完全混淆,见下文),这就是全部在这种情况下需要。

    TLD;DR:在 802.11 上下文中,“MAC 地址”、SA(源地址)、TA(发送器地址)、DA(目标地址)、BSSID 或其他看起来都像 6 字节“MAC 地址”我们从其他技术中熟悉的,但不应混淆它们。

    现在是在 802.11 上下文中拆除“MAC 地址”概念。

    802.11 确认帧是 802.11 管理帧的一部分,而 802.11 是“一组媒体访问控制 (MAC) 和物理层 (PHY) 规范” (source)。

    这意味着什么 - 这是在使用 Wi-Fi 时要掌握的一个非常重要的概念 - 802.11 本身,包括它的管理框架,与“传统”无关(比如说 802.3,也就是以太网)PHY(第 1 层)或 MAC(第 2 层)层——它们是它们自己的一种。

    802.3/以太网,继续这个类比 - 或者更确切地说是反例 - 没有 ACK 帧、信标、探测请求、RTS/CTS、auth/deauth、关联等,这些都是 802.11 管理帧的类型. 802.3 根本不需要这些,主要是因为有线以太网不是共享媒体(这是 IEEE 术语),这可能会导致不可靠性/冲突,就像 802.11/Wi-Fi 的空气一样。

    这样做的重要后果是,您不应该期望先验会遇到其他更熟悉的概念或来自其他第 1/2 层技术的数据。 忘记这一点,一劳永逸。

    当然,Wi-Fi 看起来像是携带一些 MAC 和 IP 以及 TCP 和/或 UDP 或诸如此类的东西,而且它们大部分时间都这样做,但对于 ACK 等管理帧,这是一个不同的世界 - 它自己的世界。事实上,802.11 可以完美地使用 - 并且可能用于某些利基用例 - 来承载 TCP/IP 之外的其他更高级别的协议。而它的 MAC 概念,虽然看起来熟悉它的 6 个字节,但在形式上不应混淆,也不应与 802.3/Ethernet 的 MAC 相混淆。再举一个例子,802.15 aka 蓝牙也有一个 6 字节的 MAC,但这又是另一回事了。

    以 802.11 相反为例,例如 802.11 第 1/2 层信标帧携带一些关于 SSID、支持的速率、跳频 (FH)、参数集等的信息在其他 L1/2 技术中没有对应物。

    现在,接受 802.11 中“MAC 地址”的复杂性...

    这就是为什么,以日常使用为例,pcap/tcpdump 有如此奇怪的过滤器,例如 wlan rawlan tawlan addr1wlan addr2wlan addr3wlan addr4 - wireshark 捕获和显示过滤器等。

    【讨论】:

      【解决方案3】:

      对的乔治..!!

      在MAC格式中NAV定时器是这样更新的,而数据帧NAV在传输时更新,它更新为

      数据帧 + SIFS + ACK + SIFS

      所以这次有clear,只有一个AP台在说话,都在等待清除NAV时间段,所以不需要添加Source地址,浪费帧字节。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,并在互联网上看到了这个 stackoverflow 问题。

        如果您考虑一下,如果 stationA 正在等待来自 stationB 的 ack,这意味着 stationA 在很长一段时间内(请参阅 Jaydeep 的回答)有相当多的安全/锁定介质,即(假设没有后续行动,2SIFS + 1ACK 有足够的时间这两个站之间的传输)。

        因此没有其他站点在发送任何帧(即此处的 ack),因此无需区分 ack。

        它只是StationA在那个时间窗口内等待来自stationB的ack。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 1970-01-01
          • 2015-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多