LoRaWAN设备的两种入网方式(ABP和OTAA)
目录
一、OTAA
1、名词解释
2、入网流程
二、ABP
三、两种入网方式的比较
一、OTAA
1、名词解释
(1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstack,终端这里可以配一个随机数)。
(2)DevEUI:64位(8字节)的唯一标识符,用于标识单个LoRaWAN设备,每个设备都有一个唯一的DevEUI。
(3)DevNonce:一个随机数,根据LoRa射频模块的RSSI(信号强度)算出。
(4)AppNonce:由服务端提供的随机值,用于计算NwkSKey 和AppSKey。
(5)NetID:网络ID,也用于计算NwkSKey 和AppSKey。
(6)DevAddr:32bit组成,用于标识当前网络中的终端设备,是在入网过程中由网络服务器NS 分配。
(7)AppSKey:应用会话密钥。
(8)NwkSKey:网络会话密钥。
2、入网流程
(1)终端节点发送Join_Request
Join_Request格式如下:
MHDR 为帧头,表示数据的类型(入网请求);入网请求会携带AppEUI和DevEUI,服务器会通过该数据决定是否允许设备入网DevNonce 是一个随机值,通过LoRa射频模块的RSSI(信号强度)算出。服务端会将收到的DevNonce进行存储 ,如果同一个AppEUI的DevNonce是重复发送,服务器会丢弃该入网请求。MIC是校验码,是通过AppKey计算得来的。
(2)服务器处理入网请求
Join_Request发送至NS处,NS会通过MIC检查数据是否合法,如果合法会将请求交给AS处理。AS 根据报文中的AppEUI和DevEUI来判断是否接收入网请求。
(3)NS下发Join_Accept
如果服务器接受入网,NS将会下发一个Join_Accept命令帧。Join_Accept格式如下:
AS验证设备后会生成AppNonce,NS会生成一个网络标识符NetID,还分配一个4字节的DevAddr。
(4)生成密钥AppSKey和NwkSKey
终端节点收到Join_Accept后,会根据AppKey生成两个密钥:AppSKey和NwkSKey,生成方式如下:
NwkSKey
NwkSKey = aes128_encrypt(AppKey, 0x01 | AppNonce | NetID | DevAddr | DevNonce)
AppSKey
AppSKey = aes128_encrypt(AppKey, 0x02 | AppNonce | NetID | DevAddr | DevNonce)
入网后,后续的通信都使用生成的AppSKey和NwkSKey进行加密和解密(AS端也会计算出AppSKey和NwkSKey),确保数据的机密性和完整性。
整体数据加解密过程大致如下图所示:
二、ABP
ABP入网的方式比较简单,不需要像ABP那样动态获取信息。ABP这种方法比较简单粗暴,以chirpstack为例,我们可以直接在服务器上配置DevAddr,NwkSKey,AppSKey,然后在终端节点上直接配置与服务器相同的DevAddr,NwkSKey,AppSKey。因为已经直接进行配置,就不再需要join流程了。在这种情况下,这个设备是可以直接发应用数据的,当ABP终端成功发送了第一条数据之后,我们就认为ABP终端入网成功了。
三、两种入网方式的比较
两种入网方式各有各的优势与短板,具体怎么选择我们还是要看设备以及环境等因素。
1、ABP
优点
(1)快速入网:ABP不需要执行join过程,可直接开始通信。
(2)无网络覆盖依赖:在网络信号弱或者不稳定的区域,ABP不依赖于设备与网络服务器的交互进行入网,因此在某些恶劣的网络条件下可能更可靠。
缺点
安全性较低:设备的密钥在开始时就已经预设,若这些信息被泄露,攻击者可以伪装成设备进行攻击。
2、OTAA
优点
安全性高:因为设备在入网过程中会通过网络服务器生成新的会话密钥(NwkSKey 和 AppSKey),并使用 AppKey 进行加密。这样,密钥在每次入网时都是唯一的。而且密钥动态生成,难以被提前获取或破解。
缺点
依赖网络覆盖:在网络信号弱或不稳定的区域,OTAA 的入网过程可能会失败,因为设备需要与网络服务器进行交互。如果网络覆盖不好,设备可能无法完成入网过程。
相关文章:

LoRaWAN设备的两种入网方式(ABP和OTAA)
目录 一、OTAA 1、名词解释 2、入网流程 二、ABP 三、两种入网方式的比较 一、OTAA 1、名词解释 (1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstac…...
【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解
Rust语言中的数学优化:六大利器汇总 前言 在当今信息时代,数据处理和数学优化成为了各行各业中不可或缺的重要环节。为了满足对高效、快速计算的需求,Rust语言逐渐成为了许多开发者的首选,因其性能优越、并发安全等特点。本文将…...
机器学习 | 回归算法原理——最小二乘法
Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…...
.NET Core 中的字符串压缩方法
字符串压缩的概念 字符串压缩通常指的是通过算法减少字符串表示所需的数据量,同时保持字符串的原始信息或能够无损地恢复原始字符串。这种压缩可以是针对文本数据的特定算法,也可以是更通用的数据压缩算法。 .NET Core 中的字符串压缩方法 使用数据压…...
SQL 基础知识
SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。以下是一些 SQL 的基础知识: 基本概念 数据库(Database): 存储和管理数据的容器。一个数据库可以包含多个表。 表(Table&…...

【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)
目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time!!! ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路: 创建一个新链表࿰…...
Python爬虫技术 第16节 XPath
XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。 XPath基础 XPath表达式由路径表…...

本地部署,Whisper: 开源语音识别模型
目录 简介 特点 应用 使用方法 总结 GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak SupervisionRobust Speech Recognition via Large-Scale Weak Supervision - openai/whisperhttps://github.com/openai/whisper 简介 Whisper 是一个由 O…...
history,hash缓存那些事
vue-router 中的 createWebHistory,createWebHashHistory两种模式 createWebHistory 是基于 window.history 对象是HTML5提供的用于维护当前标签页浏览历史的对象,主要功能是前进后退和在不刷新页面的情况下,修改地址栏里的URL地址。histor…...

Spring Boot的Web开发
目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…...
Spark 解析嵌套的 JSON 文件
1、什么是嵌套的JSON文件? 嵌套的JSON文件是指文件中包含了嵌套的JSON对象或数组。例如,以下是一个嵌套的JSON文件的示例: {"name": "John","age": 30,"address": {"street": "123…...

VMware虚拟机中CentOS7自定义ip地址并且固定ip
配置固定ip(虚拟机) 前提:虚拟机网络配置成,自定义网络并选择VMnet8(NAT 模式) 操作(如下图):点击虚拟机–》设置–》–》硬件–》网络适配器–》自定义:特定虚拟网络–》选择:VMnet8(NAT 模式) 虚拟机网络设置 需要记…...

CCS(Code Composer Studio 10.4.0)编译软件中文乱码怎么解决
如果是所有文件都出现了中文乱码这时建议直接在窗口首选项中修改:选择"Window" -> "Preferences",找到"General" -> "Workspace",将"Text file encoding"选项设置为"Other&quo…...
Flutter 3 完全支持网页端
Flutter 3 可以用于开发网页端应用。自 Flutter 2.0 起,Flutter 就已经支持 Web 平台,并且在 Flutter 3 中得到了进一步的改进和优化。以下是使用 Flutter 3 开发网页端的一些优势和特点: Flutter 3 开发网页端的优势: 跨平台一致…...
vue.js入门
目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2.4 v-on 2.5 v-model 2.6 v-show 2.7 v-if 2.8 v-else 2.9 v-bind 2.10 v-for 三. vue生命周期函数 目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2…...

API签名认证
前言(项目背景): 这个API签名认证是API开放平台得一个重要环节,我们知道,这个API开发平台,用处就是给客户去调用现成得接口来完成某些事情得。 在讲API签名认证之前,我们先模拟一个场景并且介绍…...

C#进阶-基于.NET Framework 4.x框架实现ASP.NET WebForms项目IP拦截器
在这篇文章中,我们将探讨如何在 ASP.NET WebForms 中实现IP拦截器,以便在 ASMX Web 服务方法 和 HTTP 请求 中根据IP地址进行访问控制。我们将使用自定义的 SoapExtension 和 IHttpModule 来实现这一功能,并根据常用的两种文本传输协议&#…...

前端(1)HTML
1、标签 创建1.html文件,浏览器输入E:/frontheima/1.html,可以访问页面 页面展示 在VSCODE安装IDEA的快捷键,比如ctld复制一行、ctrlx剪切 <p id"p1" title"标题1">Hello,world!</p> <p id"p2"…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十三章 设备树下的platform驱动
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...
Java正则表达式判断有无特殊字符
//^代表否定,匹配除了数字、字母、下划线的特殊字符。 private static final String SPECIAL_CHAR_PATTERN "[^a-zA-Z0-9_]"; Pattern pattern Pattern.compile(SPECIAL_CHAR_PATTERN); Matcher matcher pattern.matcher(userAccount); // 如果 find(…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...