#4 MAC 帧格式 Part II

4 MAC 帧格式 Part II

4.3.1.6 帧选项(FOptsLen in FCtrl, FOpts)

在FCtrl字节中的帧选项长度域(FOptsLen)表示了包含在帧中的帧选项(FOpts)实际长度。

FOpts传输最大长度为15个字节的MAC指令,这是包含在数据帧中的。参照第5章节查看有效的MAC指令列表。

如果FOptsLen为0,那么FOpts是为空。换言之,如果FOptsLen不为0,那么FOpts不为空。如果MAC指令包含在FOpts字段里,那么端口0不可以使用(FOpt应该不存在或者不为0)。

MAC指令不能同时出现在负载段(payload)或帧选项字段。如果出现了,那么设备应该忽略掉该帧。

如果帧头带有FOpts,那么FOpts应该在先进行加密,再计算消息的一致性校验(MIC)。

加密机制是基于使用128字节密钥长度的AES通用算法,这种算法在IEEE802.15.4/2006 Annex B[IEEE802154]文档里有描述。

密钥K在FOpts字段中的NwkSEncKey中使用,上行和下行链路都是如此。

对于每条消息,算法定义了一个单独的块A:

Size(bytes) 1 4 1 4 4 1 1
A 0x01 4x0x00 Dir DevAddr FCntUp or NFCntDwn 0x00 0x00
表15 加密块格式

方向字段(Dir):上行帧为0,下行帧为1。

块A加密后获取到块S:

S=aes128_encrypt(K,A)

对FOpts的加解密都是通过截位法(舍位法)

(pld | pad16) 异或 块S 获得第一个len(pld)段

4.3.1.7 Class B

上行的Class B位设置为1表明通知服务器,设备转为Class B模式,且现在可以接收指定时间的下行pings。请参考Class B 文档中的Class B部分的章节。

4.3.2 端口字段(FPort)

如果帧负载字段不为空,那么端口字段必须存在,如果存在,那么FPort的值为0意味着FRMPayload只包含MAC指令且接收到的带有该FPort字段的任何帧都应该能被LoRaWAN设备所处理。参照第5章节查看有效的MAC指令列表。FPort的值从1到223(0x01到0xDF)j均由应用来决定,且接收到的带有该FPort字段的任何帧应该能被LoRaWAN设备的应用层所处理。FPort值224专用于LoRaWAN的MAC层测试协议。LoRaWAN设备应该丢弃所有来自从应用层的端口不是1到224的传输请求。

注意:端口224作为MAC测试的专用端口,通过无线的方式在最终版本的设备进行遵守MAC指令的测试,从而在实际场景中不用依赖于特定测试版本的设备。测试和正常操作不能同时进行,但设备的MAC层的实现应该和正常应用的实现是一致的。测试协议采用AppSKEY正常加密。这样可以保证在设备拥有者没有参与的情况下,网络服务器无法开启设备的测试模式。如果在已经连接到正常网络的设备上进行测试,网络服务器端的测试应用获取APPSKey的方法就不属于LoRaWAN协议的范围内了。如果在专门的测试平台(非正常的网络服务器)上通过OTAA进行测试,为了保证入网成功,告知测试平台AppKey 的方法也不属于协议范围。

FPort值225到255(0xE1到0xFF)保留,以便后续标准应用的扩展。

Size(bytes) 7..22 0..1 0..N
MACPayload FHDR FPort FRMPayload
表16 MACPayload 字段长度

N是应用负载(FRMPayload)的字节数,有效的N的长度以不同区域不同特性地被定义在[LoRaWAN区域特性参数文档]。

N应该小于等于:

N<=M-1-length(FHDR)

其中M为MAC 负载的最大长度。

4.3.3 MAC帧负载加密(FRMPayload)

如果数据帧包含负载,那么FRMPayload应该在先进行加密,再计算消息完整性校验(MIC)。

加密机制是基于使用128字节密钥长度的AES通用算法,这种算法在IEEE802.15.4/2006 Annex B[IEEE802154]文档里有描述。

密钥k取决于数据消息的端口:

FPort Direction K
0 Uplink/downlink NwkSEncKey
1..255 Uplink/downlink AppSKey
表3 端口列表

加密字段:
pld = FRMPayload

对于每条数据信息,算法定义了一系列的块Ai,其中i=1到k

k=ceil(len(pld)/16)
Size(bytes) 1 4 1 4 4 1 1
Ai 0x01 4x0x00 Dir DevAddr FCntUp or

原文地址:https://www.cnblogs.com/eydonmlau/p/10498832.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


现在给大家介绍一下如何查询MAC的生产日期,希望对你查询MAC的生产日期操作有所帮助。
1、点击【编辑虚拟机设置】,转到【CD/DVD (SATA)】,选中【使用 ISO 映像文件】复选框,点击【浏览】,找到已经准备好的 MacOS Ventura 镜像;4、客户机操作系统下,选择【Apple Mac OS X】,版本选择大家需要的【macOS版本】,再点击【下一步】;7、完成【抹掉】后,左上角关闭该窗口,返回上一界面,选择【Install macOS】,正式进入苹果系统安装流程;1、打开 Vmware Workstation,然后点击左上角的【文件】,打开的下拉项中,选择【新建虚拟机】;
注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本。一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x。pip介绍:pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。1.打开后输入python3确定电脑上是否已安装python3,如果输入python是查看mac上的自带版本。如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。如下图是已经成功安装pip的状态。
Mac 安装nvm
Mac(M1)安装VMware虚拟机及Linux系统
Mac 如何安装 Telnet,mac安装telnet命令
是不是对键盘输入厌烦了?那你可以试试语音输入。 你可以按照下面的步骤打开Mac的语音输入功能。 以 macOS Catalina 为例: Step 1. 点击屏幕左上角的图标,点击【系统偏好设置】。
1.clean my Mac&#160;x 2.Cleaner One Pro 3.App Cleaner
按caps lock键。 CapsLock键,短按切换中英文,长按切换大小写。
windows: 1.PowerToys 2.不用软件进行分屏 Windows 10技巧1:窗口1/4分屏 - Acer Community 介绍说明 从Win7时代开始,微软便引入了屏幕热区概念,即
https://zhuanlan.zhihu.com/p/111111684 下载地址: https://www.smoothscroll.net/mac/
https://support.apple.com/zh-cn/guide/imac/apd2e7352054/mac 浏览:24 英寸&#160;iMac 24 英寸&#160;iMac 比以往更个
在Mac自带的中文输入法中,“反斜杠”键(“\”)就是顿号。
1.系统偏好设置。 2和3步如下图: 注意:在设置后,启用capslock大写的时候,需要长按capslock键。
Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如,不像其他编辑器的有编辑栏和显示栏。简洁美观实时预览扩展语法跨平台免费Typora现在收费,但你仍然可以在官方网站上找到历史版本。虽然新版本仍然值得收费,但免费版本仍然可以使用。httpshttpshttpshttpshttpshttpshttpshttps。......
Mac M1安装Centos7
连接为官方下载链接, 直接复制MD5可迅雷下载亲测可用, 和付费版使用体验无差别.1. Windows 64bithttps://download.typora.io/windows/typora-setup-x64-0.11.18.exeMD5:12F96372BEE2951ACF5627EA28F8A389**2. Window 32bit **https://download.typora.io/windows/typora-setup-ia32-0.11.18.exeMD5:F5036
ubuntu22.04 、系统安装、win双系统、Ubuntu分区、Ubuntu优化、美化gnome tweaks,扩展、macos、搜狗输入法、wps字体、微信安装、navicat15、java开发环境搭建、idea 输入法问题处理、双系统问题、github慢等等。史上最全保姆级Ubuntu使用教程
MAC怎么获取文件路径 MAC获取文件路径的四种方法