为什么802.11确认帧没有源MAC?

时间:2016-05-05 00:23:11

标签: 802.11

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

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

4 个答案:

答案 0 :(得分:7)

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

802.11是一种基于争用的协议。即,媒体由不同的STA和AP共享,所有STA和AP都在时间上在相同的频道[频率]中工作。那些想要传输的人正在争夺媒体,获得媒体的获胜者开始传播。

根据802.11规范。一旦一个帧播出,下一个" SIFS"期间媒体应该是免费的。即没有人被允许传播。 在SIFS结束时,单播帧的接收者应该发送ACK。这是规则。

802.11中的SIFS [短帧间间隔]对于基于OFDM的802.11实现来说是~10微秒[802.11 G,A]。对于802.11b,如果我的内存是正确的,它约为20微秒。这就是你在TX和ACK之间看到10或30微秒的原因

所以,每个人都知道谁在传输ACK以及ACK是谁。所以不需要包含源地址,它的实现。

为什么不包含源地址? 减小帧大小,以减少相同的功率。

希望它有所帮助。如果您对此有更多疑问,请随意

答案 1 :(得分:0)

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

TLD; DR:在802.11上下文中," MAC地址",SA(源地址),TA(发送器地址),DA(目标地址),BSSID或所有外观都相似6字节" MAC地址"我们熟悉其他技术,但不应混淆。

现在拆除" MAC地址" 802.11上下文中的概念。

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 /无线网络连接。

这样做的重要结果是,您不应期望先验能够满足其他更熟悉的概念,也不会期望来自其他第1/2层技术的数据。忘了这一点,一劳永逸。

当然,Wi-Fi看起来像是继承了一些MAC和IP以及TCP和/或UDP等等,而且它们大部分时间都在做,但是对于ACK这样的管理帧来说,这是一个不同的世界 - 它自己的世界。实际上,802.11可以完美地使用 - 并且可能在一些小众用例中使用 - 来承载除TCP / IP之外的其他更高级别的协议。它的MAC概念虽然看起来很熟悉它的6个字节,但不应该在形式上混淆,也不应该用于802.3 /以太网的MAC。再举一个例子,802.15又称蓝牙也有6字节MAC,但这又是另一回事。

以802.11 为例,例如,802.11 Layer 1/2信标帧携带有关SSID,支持速率,跳频(FH),参数设置等的一些信息。没有其他L1 / 2技术的对应物。

现在,接受复杂的东西是什么" MAC地址"在802.11 ......

这就是为什么,为了在日常使用中举例,pcap/tcpdump有这样奇怪的过滤器,例如wlan rawlan tawlan addr1,{{1 {}},wlan addr2wlan addr3 - 等wlan addr4捕获并显示过滤器。

答案 2 :(得分:0)

右乔治.. !!

在MAC格式中NAV定时器更新如此,而数据帧NAV在传输时更新,它更新为

DATA帧+ SIFS + ACK + SIFS

因此,目前很清楚,只有一个AP< --->电台正在讲话,所有人都在等待明确的资产净值时间段,所以不需要添加源地址,因为它浪费了帧字节。

答案 3 :(得分:0)

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

如果您考虑一下,如果stationA正在等待来自stationB的确认,则意味着stationA具有相当长的安全性/锁定介质(请参阅Jaydeep的回答),即(没有足够的随访时间,用于2SIFS + 1ACK的时间足够长)这两个站之间的传输)。

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

在该时间窗口中,只有StationA正在等待来自stationB的确认。