80 00 00 00 FF FF FF FF FF FF 60 60 1F B0 13 D0 60 60 1F B0 13 D0 00 00 10 4F F1 1A 00 00 00 00 A0 00 20 04 00 18 52 49 44 2D 31 35 38 31 46 35 59 48 58 32 33 39 48 30 30 32 34 35 30 41 DD 53 FA 0B BC 0D B0 F1 19 03 01 12 31 35 38 31 46 35 59 48 58 32 33 39 48 30 30 32 34 35 30 41 00 00 00 11 16 B5 00 00 AA 10 8D 12 5E 64 77 3D 3E 08 35 08 D0 07 4B 04 DB 01 0A 00 41 09 98 0F 8D 12 A5 64 77 3D 01 00 00 00 00 00 00 01 1A 08 0F 45 BF 0C 00 00 78 56 AD
以上为抓取到的无人机 Remote ID 原始 16 进制数据(部分位置已做脱敏处理)。这份数据包总长 151 字节,完整承载了 OpenDroneID 协议信息。咱们直接切入正题,拆解这个 Beacon 帧的每一个关键字段。
802.11 Beacon 帧 + OpenDroneID 协议完整解析
1. 帧类型与整体结构
这串十六进制数据对应的是 802.11 管理帧(Beacon 帧),里面嵌入了 OpenDroneID 协议数据(Remote ID)。整个帧符合 IEEE 802.11-2020 规范,通过**供应商特定信息元素(VSIE,类型 0xDD)**把无人机的标识、位置和操作者信息打包进去。总长度 151 字节(索引 0-150),没有缺失片段。
2. 帧头部解析(0-35 字节)
帧头占了前 36 个字节,这是标准的 802.11 管理帧结构。我们可以对照下表看具体含义:
| 偏移(字节) | 长度(字节) | 字段 | 十六进制值 | 说明 |
|---|---|---|---|---|
| 0-1 | 2 | 帧控制字段 | 80 00 | 管理帧(类型=0),子类型=Beacon 帧(0x8000),无加密、无分片,符合信标帧标准。 |
| 2-3 | 2 | 持续时间 | 00 00 | 标准填充值,用于避免帧冲突,业务上无特殊含义。 |
| 4-9 | 6 | 目的地址 | FF FF FF FF FF FF | 广播地址,Beacon 帧需向所有设备发送,确保周边接收端能捕获。 |
| 10-15 | 6 | 源地址 | 60 60 1F B0 13 D0 | 发送设备的 MAC 地址,推测是无人机无线模块或关联 AP 的 MAC。 |
| 16-21 | 6 | BSSID | 60 60 1F B0 13 D0 | 基本服务集标识,与源地址相同,说明处于基础设施模式(AP 发送,非自组织)。 |
| 22-23 | 2 | 序列控制 | 00 00 | 帧序列号(0)+ 分片号(0),初始帧,无分片。 |
| 24-31 | 8 | 时间戳 | 10 4F F1 1A 00 00 00 00 | 设备内部计时戳(微秒级),用于同步接收端时钟,不直接映射 UTC。 |
| 32-33 | 2 | 信标间隔 | A0 00 | 小端序转换为 0x00A0=160,单位'1024 微秒',计算得 160×1024=163840 微秒≈0.164 秒。 |

