【问题标题】:Is this which frame in 802.11 data?这是 802.11 数据中的哪一帧?
【发布时间】:2018-07-31 22:41:19
【问题描述】:

我从我的 WiFi 驱动程序中获得了这些数据。

48:01:3A:01:11:1A:FF:3F:
9B:67:FF:1A:E2:F4:09:34:
11:1A:FF:3F:9B:67:80:1E:
21:00:0A:00:00:12:43:6F:
72:65:6C:6F:67:69:63:5F:
72:74:6C:5F:77:6C:61:6E:
01:04:82:84:0B:16:21:02:
00:00:00:00:00:00:00:00:

我知道“帧控制”字段是“0x48 0x01”,但我很困惑这是数据帧还是控制帧。

我猜如下:

[protocol version] bit0 bit1 - 0 0
[type] bit2 bit3 - 0 1
[subtype] bit4 bit5 bit6 bit7 - 0 0 1 0
[to ds] bit0 - 1
[from ds] bit1 - 0
[more flag] bit2 - 0
[retry] bit3 - 0
[pwr mgmt] bit4 - 0
[more data] bit5 - 0
[protected frame] bit6 - 0
[order] bit7 - 0

所以...类型是“数据帧”,子类型是“null”,STA 到 AP。

对吗?

【问题讨论】:

  • 您能否补充一下您是如何获得这些数据的?使用什么命令来收集它?
  • 我使用了帧指针中的“printk”。该指针存在于 rtl8192 驱动程序的“issue_probersp”函数中。帧指针值为“pframe”。
  • 你展示的内容对我来说也没有意义 - witestlab.poly.edu/blog/802-11-wireless-lan-2
  • 当我查看您的链接时,我的数据是正确的。但是,我弄错了 printk 的循环大小。非常感谢。

标签: wifi


【解决方案1】:

背景

帧控制字段如下所示:

  

对于“0x48 0x01”的帧控制:

  • 0x48 = 0100_1000b
  • 0x01 = 0000_0001b

注意:但是你必须意识到字节是相反的,因为它们是在 LSB 中传输的。因此 0x01 实际上是版本和类型的字节。

协议版本字段

0000 0001
     ^^^^--- Subtype
  ^^-------- Type
^^---------- Protocol Version     

类型字段

关于“类型”字段,位表示帧的类型:

  1. 类型(2 位) 定义了 3 种类型(管理、控制、数据)的无线帧 标准。下面显示了每个“类型”字段的位值 不同类型的框架。
    • 00- 管理框架
    • 01– 控制框架
    • 10– 数据框
    • 11– 保留

子类型字段

还有“子类型”:

  1. 子类型(4 位)

    有许多不同种类的管理、控制和数据框架。 因此需要 > 4 位子类型字段来区分它们。这里是 几个不同亚型的例子(CWAP 官方学习指南 – 第 79 页)

     

对于第 2 个字节 0x48,其余控制字段如下所示:

0100 1000
     ^------ Power Mgmt
 ^---------- From DS

来自 DS 字段

对于“来自 DS”:

  1. 来自 DS(1 位)

    当它设置为“1”时,表示数据帧来自分发系统 (DS) 到客户站 (STA)

    还有这个 To DS & From DS 字段组合 (00, 01,10 & 11) 指示 不同的场景

    到 DS=0,从 DS=0

    – 可以是管理或控制帧,它不去 DS

    – IBSS 中的站到站通信

    – STSL:站到站链接,数据帧直接交换客户端到客户端。

    到 DS=0,从 DS=1

    – 从 AP 到客户端站点的下行流量。

    到 DS=1,从 DS=0

    – 从客户端站到 AP 的上行流量。

    到 DS=1,从 DS=1

    数据帧使用四地址格式。通常发生在无线时 正在使用的分布式系统 (WDS),例如无线网桥或网状网络。

电源管理

  1. 电源管理(1 位)

    当客户端工作站处于“省电模式”时,它会关闭一些 收发器组件一段时间以节省电源。该站 通过更改 Power 的值表示它正在使用省电模式 将模式位保存为 1。如下所示,“Null”数据帧用于通知 AP 关于客户端处于省电模式。

本教程详细解释了如何破译其余的位,标题为:CWAP – MAC Header : Frame Control

参考文献

【讨论】:

  • 我以 1 字节为单位而不是 2 字节读取数据。所以,我认为字节顺序不能改变。
  • 我很确定它是按照我解释的方式排序的。
  • @KimGwanyoung - 你在这里给我看什么?我知道这是您看到它们的顺序,但这不是它们被编码为帧中的位的顺序。看看这个来自wireshark的截图 - i.stack.imgur.com/SEPyr.png
  • 在您的屏幕截图中,请查看两个突出显示的部分。第一行是“0x2208”,另一行是“08 22”。我在内存中读取“08 22”一个字节。因此,在我的例子中,帧控制字段中的类型和子类型将是“0x48”。
  • @KimGwanyoung - 我对订单的预感是从 0x48 驱动的,a (0100b) = 4 对于协议版本没有意义,根据文档必须是 (0000b)。 - mrncciew.com/2014/09/27/cwap-mac-header-frame-control
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多