14个版本
0.3.8 | 2024年2月20日 |
---|---|
0.3.7 | 2024年2月5日 |
0.3.6 | 2024年1月30日 |
0.3.1 | 2023年6月29日 |
0.1.3 | 2023年4月29日 |
#1069 in 网络编程
115KB
3K SLoC
AWDL帧解析器
AWDL(Apple Wireless Direct Link)是一种无线P2P通信协议。AWDL旨在低延迟和高带宽,同时只需要一个芯片即可同时支持AWDL和“普通”WiFi。这个解析器可以读取和写入该协议使用的网络帧。更多信息请参阅这个Stack Overflow帖子。
支持
帧类型
- 动作
- MIF
- PSF
- 数据(即将推出)
TLV
- Arpa
- 版本
- 同步参数
- 信道序列
- 选举参数
- 选举参数 v2
- 同步树
- 数据路径状态
- HT能力
- IEEE 802.11容器
- 服务参数
- 服务响应
功能
解析器设计为能够在低闪存环境中运行(即ESP32、wasm)。列出的时间复杂度指的是,如果解析器运行时间随着输入长度的增加而增加。所以O(1)意味着可以继续,而O(n)意味着在解析之前要思考。O(1)解析器尚未进行基准测试。
TLV | 功能 | 最坏情况时间复杂度 |
---|---|---|
Arpa | dns_sd_tlvs | O(n) |
服务参数 | dns_sd_tlvs | O(n) |
服务响应 | dns_sd_tlvs | 最小 O(n) |
信道序列 | sync_elect_tlvs | O(2n) |
选举参数[V2] | sync_elect_tlvs | O(1) |
同步参数 | sync_elect_tlvs | O(1) |
同步树 | sync_elect_tlvs | O(n) |
HT能力 | data_tlvs | O(1) |
IEEE80211容器 | data_tlvs | O(n) |
数据路径状态 | data_tlvs | O(n) |
版本 | version_tlv | O(1) |
请注意,尽管解析器尚未提供,但功能已经存在。此外,一些解析器被捆绑到一个功能中。(有关更多信息,请参阅Milan Stute的论文。)
no_std
由于作者牺牲了一部分理智,在所有地方使用迭代器,因此库不需要任何分配。分配仅用于测试,以验证报告的大小与实际情况相符。
致谢
虽然实际的解析器是我编写的,但AWDL协议的逆向工程是由Milan Stute和SeeMoo-Lab进行的。所以,向他们表示敬意...
依赖项
~1.2–1.8MB
~36K SLoC