蓝牙ble tips3-MAC地址

2023-11-20

和计算机网络IP地址类似,BLE也会有属于自己的一个地址

BLE设备地址

蓝牙地址,也称作 Bluetooth MAC (Media Access Control) 地址,是一个48位的唯一硬件标识符,用于在蓝牙设备之间建立连接和通信。它由全球唯一的组织,即 IEEE(Institute of Electrical and Electronics Engineers)负责管理分配。

蓝牙地址通常表示为 12 个十六进制数(例如:00:11:22:33:44:55),其中前6个数字代表蓝牙适配器的厂商 ID,后6个数字是该适配器的独特序列号。蓝牙地址不同于 IP 地址,它们只在网络层次结构上唯一标识设备,而蓝牙地址则更加接近于物理层面上的设备地址。

需要注意的是,在蓝牙通讯过程中,设备不是直接使用蓝牙地址相互通信,而是通过蓝牙协议栈上的 L2CAP(Logical Link Control and Adaption Protocol)层进行通信,L2CAP 层使用其自己的 Channel ID 和 Connection Handle 来标识正在交换数据的蓝牙设备。

公共设备地址

公共设备地址由电气和电子工程师学会(IEEE)分配。

随机设备地址

随机设备地址是随机分配的,但其值必须满足《蓝牙核心规范》中规定的规则。有三个子类型的随机设备地址,即静态地址私有可解决地址私有不可解决地址。 随机设备地址的子类型可以通过检查其地址的两个最高有效位来确定。

0b00:不可解析的私有地址 (Non-resolvable private address)

不可解析的私有地址是随机生成的,并且通常在每次重新连接时更改。它可以用于提供隐私保护,但无需处理可解析的私有地址以检查是否包含在过滤器接受列表中等成本。请参见7.5.3过滤器接受列表。 例如:2C:C1:EE:7B:71:96是一个不可解析的私有地址。通过将最高位字节值(0x2C)转换为二进制,可得到0b00101100。最高的两位bit位的值为0b00,这表明它是一个不可解析的私有地址,根据7.5.2随机设备地址中的表格。

0b01:可解析的私有地址 (Resolvable private address)

RPA(可解析私有地址)是周期性变化的。蓝牙核心规范建议间隔大约15分钟,但最终控制RPA更改的时间是一个实现决策。

示例4C:C1:EE:7B:71:96为可解析的私网地址。这可以通过将最高字节值(0x4C)转换为二进制来验证,得到0b01001100。根据随机设备地址表,最高两位的值为0b01,表示这是一个可解析的私有地址。

生成RPA的过程涉及一个称为身份解析密钥(IRK)的安全密钥,该密钥在绑定设备和应用哈希函数时在设备之间交换。绑定的对等设备可以对接收到的数据包中的每个IRK值应用相同的哈希函数来解析RPA,每次一个。当进程与接收到的RPA匹配时,对等端就知道它已经解析了远程设备的地址和真实身份。未与发送设备绑定的设备无法解析RPA。

示例5A:C1:EE:7B:71:96为可解析私网地址。可以通过转换最高有效字节值(0x5A)转换为二进制,得到0b010111010。最高两位值为0b01,表示这是一个可解析的私有地址,

0b11:静态设备地址(Static device address)

静态设备地址是随机生成的,但并没有以任何方式加密,以保护设备的隐私。使用静态地址的设备允许在每次重启时重新生成地址,但不需要这样做。它不允许在其他任何时候更改其地址。

例如:CC:C1:EE:7B:71:96是一个静态地址。通过将最高位字节值(0xCC)转换为二进制,可得到0b11001100。最高的两位bit位的值为0b11,这表明它是一个静态设备地址。

0b10:保留以备将来使用 (Reserved for future use)

过滤接受列表

蓝牙链路层具有一种称为“过滤器接受列表”的功能。此列表可以填充主机感兴趣的设备地址以接收数据包。在蓝牙核心规范中定义了一系列不同的过滤器策略,描述了如何处理设备地址在此列表中的存在或不存在。

过滤器接受列表的一个好处是,它允许控制器有效地选择需要传递到主机上的数据包,并丢弃不需要的数据包。

可解析私有地址可以添加到过滤器接受列表中,但由控制器处理会产生一定成本。由于可解析的私有地址会定期更改,因此必要时在过滤器接受列表中存储已解析的地址,并且为了检查列表中是否存在可解析的私有地址,控制器必须首先解析接收到的可解析私有地址。

更加详细的干货可以访问这个地址,大佬讲的更好:http://www.wowotech.net/bluetooth/ble_address_type.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙ble tips3-MAC地址 的相关文章

  • win10下的anaconda安装pymysql

    1 打开anaconda的终端 即 anaconda prompt 2 输入命令 pip install pymysql ps 其余包都可以使用pip install xxx来完成安装 若下载失败 可在一下链接查找相关包进行安装 https

随机推荐

  • Java 单例模式、工厂模式、代理模式

    文章目录 单例模式 概念 单例模式的类型 破坏单例模式 枚举实现单例模式 工厂模式 概述 简单工厂模式 工厂方法 抽象工厂 代理模式 Proxy 概述 静态代理 动态代理 单例模式 概念 单例模式指在内存中创建对象且仅创建一次的设计模式 在
  • 《Pyramid Scene Parsing Network》

    Pytorch代码 1 研究问题 目前基于FCN的语义分割网络缺乏利用不同尺度全局上下文信息的能力 对于复杂图像的语义分割 如ADE20K数据集 存在问题 注 感受野的大小可以粗略表示为使用上下文信息的程度 2 研究方法 提出了金字塔场景理
  • Mybatis的常用注解

    加载配置文件的时候 绝对路径和相对路径的写法都不太好用 我们经常使用的两种方法第一种就是使用类加载器 他只能读取类路径的配置文件 第二种就是使用ServletContext对象的getRealPath 函数 mybatis的常用注解 1 与
  • jsp+servlet+ajax实现登录

    该案列使用jsp servlet ajax实现登录 页面简洁大方 弹框都是封装的插件 整体案列采用三层的模式 链接数据库方面用的是dbcp的链接池 数据库时mysql 运行效果如下图 下载地址 jsp servlet ajax实现登录案例
  • c++(对象赋值与拷贝构造函数)

    对象赋值 同一个类的对象之间可以相互赋值 默认情况下 进行的是对象成员之间的复制 也称为 按位复制 或 浅复制 当类的数据成员中没有指针类型的变量时 直接对两个对象进行赋值没有问题 但是一旦类的数据成员含有指针变量 那么直接对这两个对象进行
  • MySQL常用基础 - 小白必看(二)

    MySQL数据库基本操作 一 DDL 概念 是一个数据定义语言 该语言部分包括 1 对数据库的常用操作 创建数据库 1 create database 数据库名 直接删除 2 create database if not exists 数据
  • 《effective java》中关于解决构造函数/方法签名包含大量参数的解决方法

    针对构造方法 重叠构造器模式 重叠构造器模式是一种编程中的反模式 指的是一个类有多个构造函数 每个构造函数都有不同数量的参数 从而可以根据不同的情况创建对象 这种方式会导致代码可读性和可维护性降低 因为构造函数过多 参数顺序容易混淆 Jav
  • 使用 Composer 安装 JWT 失败错误 The "https://packagist.org/packages.json" file could not be downloaded 解决方案

    错误信息 The https packagist laravel china org packages json file could not be downloaded SSL operation failed with code 1 O
  • Redis3.0集群方案分析

    在Redis3 0集群出来之前 大家都对作者antirez寄予厚望 因为Redis从来没有让我们失望过 现在Redis3 0集群出来了 网上出了很多评论文章 都说他的功能多么强大 包括下面这张图是彻底把我欺骗了 等到我把Redis3 0客户
  • Qmake VS Cmake 对比讲解

    用 cmake 构建Qt工程 对比qmake进行学习 cmake vs qmake qmake 是为 Qt 量身打造的 使用起来非常方便 cmake 使用上不如qmake简单直接 但复杂换来的是强大的功能 内置的 out of source
  • 一点浩然气,千里快哉风

    到英国访学一年 也认识了一些其他来自国内的访问学者 平时周末也经常一起徒步聚餐 从今年1月份以来 基本每个月有一个小伙伴回国 随着身边的小伙伴越来越少 以及自己也要不久回国了 心里不免有些人走茶凉 曲终人散的落寞 总体上 来英国的访问学者很
  • 【模板】快速排序

    题目链接 洛谷 P1177 模板 快速排序 1960年由查尔斯 安东尼 理查德 霍尔 Charles Antony Richard Hoare 缩写为C A R Hoare 提出 如下图所示 快速排序的执行流程为 从序列中选择一个轴点元素
  • C/C++ getcwd 获取项目的运行路径

    在Linux下做QT项目时 需要获取项目的运行路径 于是用getcwd函数进行获取 然后在Windows下进行测试 发现获取到的是程序的项目路径 即代码文件路径 然后再Linux QT中测试 获取到的又是运行路径 这就很纳闷了 经过再三测试
  • 2-1、Lua数据结构

    2 1 Lua数据结构 文章目录 2 1 Lua数据结构 1 数组 2 矩阵和多维数组 3 链表 4 队列和双向队列 5 集合和包 6 字符串缓冲 table是Lua中唯一的数据结构 其他语言所提供的数据结构 如 arrays record
  • python crop函数-图片裁剪函数

    crop 函数的参数形式是 x1 y1 x2 y2 这个元组是作为一个参数的 参考代码 from PIL import Image im Image open d 22 jpg im1 im crop im size 0 4 im size
  • linux中进入目录命令是什么,linux进入目录的命令是什么

    linux进入目录的命令是 cd 该命令的作用是切换至指定目录下 语法格式为 cd dirName 参数 dirName 表示要切换的目标目录 可以是绝对路径或相对路径 若目录名称省略 则变换至使用者的home目录 本教程操作环境 Red
  • bp神经网络时间序列预测,bp神经网络有几个阶段

    什么是BP神经网络 BP算法的基本思想是 学习过程由信号正向传播与误差的反向回传两个部分组成 正向传播时 输入样本从输入层传入 经各隐层依次逐层处理 传向输出层 若输出层输出与期望不符 则将误差作为调整信号逐层反向回传 对神经元之间的连接权
  • SwiftUI接入穿山甲开屏广告

    研究了一下SwiftUI怎么接入穿山甲 基于穿山甲sdk版本 4 7 0 8 例子地址 1 首先要先注册一个账号 穿山甲地址 在广告变现 gt 流量 gt 应用中创建一个应用并记录下应用ID 在广告变现 gt 流量 gt 代码位创建一个代码
  • vue-excel导出-单表头,多表头导出,Export2Excel.js Blob.js

    效果如图 一级导出 二级导出 如下图 三级导出 Export2Excel js Blob js 等 安装依赖 npm install S file saver npm install save xlsx 0 10 0 npm install
  • 蓝牙ble tips3-MAC地址

    和计算机网络IP地址类似 BLE也会有属于自己的一个地址 BLE设备地址 蓝牙地址 也称作 Bluetooth MAC Media Access Control 地址 是一个48位的唯一硬件标识符 用于在蓝牙设备之间建立连接和通信 它由全球