1.简介

一个BLE设备,可以使用两种类型的地址(一个BLE设备可以同时具备两种地址):Public Device Address(公共设备地址)Random Device Address(随机设备地址)。而Random Device Address又分为Static Device Address(静态设备地址)Private Device Address(私密设备地址)两类。其中Private Device Address又可以分为Non-resolvable Private Address(不可解析私密地址)Resolvable Private  Address(可解析私密地址)。关系如下图:

2.公共设备地址Public Device Address

在通信系统中,设备地址是用来唯一识别一个物理设备的。如TCP/IP网络中的MAC地址、传统蓝牙中的蓝牙地址等等。对设备地址而言,一个重要的特性,就是唯一性(或者说一定范围内的唯一性),否则很有可能造成很多问题。蓝牙通信系统也不例外。

对经典蓝牙(BR/EDR)来说,其设备地址是一个48bits(6字节)的数字,称作“48-bit universal LAN MAC address”(和电脑的MAC地址一样)。正常情况下,该地址需要向IEEE申请购买。通过付费,来保证地址的唯一性。这种地址分配的方式,在BLE中也保留了下来,也就是Public Device Address(公共设备地址)。Public Device Address由24-bit的company_id24-bit的company_addigned组成,如下图所示:

高24位公司标示低24位公司内部自己赋值

3.随机设备地址 Random Device Address

目前而言,只有Public Device Address明显不够用了,有如下原因:

  1. Public Device Address需要向IEEE购买。虽然不贵,但是一笔不小的开销
  2. Public Device Address的申请与管理是相当繁琐、复杂的一件事情,再加上BLE设备的数量众多,导致维护成本巨大
  3. 安全因素。BLE很大一部分的应用场景是广播通信,这意味着只要知道设备的地址,就可以获取所有的信息,显然是不安全的。因此,固定的设备地址,加大了信息泄漏的风险

为了解决上述问题,BLE协议新增了一种地址:Random Device Address(随机设备地址),即设备地址不是固定分配的,而是在设备启动后随机生成的。根据不同的目的,Random Device Address分为Static Device Address(静态设备地址)Private Device Address(私密设备地址)两类。

3.1 静态设备地址 Static Device Address

Static Device Address是设备在上电时随机生成的地址,格式如下:

Static Device Address静态设备地址的特性可总结为:

  1. 最高两个bit为“11”
  2. 剩余的46bits是一个随机数,不能全为0,也不能全为1.
  3. 一个上电周期内保持不变
  4. 下一次上电的时候可以改变。但不是强制的,因此也可以保持不变。如果改变,上次保存的连接等信息,将不再有效。

Static Device Address静态设备地址的使用场景可总结为:

  1. 46bits的随机数,可以很好的解决“设备地址唯一性”的问题,因为两个地址相同的概率很小。
  2. 地址随机生成,可以解决Public Device Address申请所带来的费用和维护问题

3.2 私密设备地址 Private Device Address

Static Device Address通过地址随机生成的方式,解决了部分问题,Private Device Address则更进一步,通过定时更新地址加密两种方法,提供蓝牙地址的可靠性和安全性。根据地址是否加密,Private Device Address又分为两类,Non-resolvable Private Address(不可解析私密地址)Resolvable Private Address(可解析私密地址)

3.2.1 不可解析私密地址 Non-resolvable Private Address

Non-resolvable Private Address和Static Device Address类似,不同之处在于,Non-resolvable Private Address会定时更新。更新的周期是由GAP规定的,称为T_GAP(private_addr_init),建议值是15分钟。其格式如下:

特征可总结为:

  1. 最高两个bit为“00”
  2. 剩余的46bits是一个随机数,不能全部为0,也不能全部为1.
  3. 以T_GAP(private_addr_init)为周期,定时更新。

注:Non-resolvable private address在实际中并不常用,因为地址经常变动,所以应用场景不多。

3.2.2 可解析私密地址 Resolvable Private Address

Resolvable Private Address 是通过一个随机数和一个称为identity resolving key(IRK)的密码生成的。因此只能被拥有相同IRK的设备扫描到,可以防止被未知设备扫描和跟踪。格式如下:
 

特征如下:

  1. 由两部分组成:
  • 高位24bits是随机数部分,其中最高两个Bit为"10",用于标识地址类型
  • 低位24bits是随机数和IRK经过hash运算得到的hash值,运算的公式为hash=ah(IRK,prand)。
  1. 当对端BLE设备扫描到该类型的蓝牙地址后,会使用保存在本机的IRK,和该地址中的prand,进行相同的hash运算,并将运算结果和地址中的hash字段比较。只有相同的情况,在进行后续的操作。这个过程被称为resolve(解析)。这也是Non-resolvable private address/Resolvable private address命名的由来。如果不同则继续用下一个IRK做上面的过程,直到找到一个关联的IRK或一个也没找到。
  2. T_GAP(private_addr_init)为周期,定时更新。哪怕在广播、扫描、已连接等过程,也可能改变。
  3. Resolvable private address不能单独使用。如果需要使用相同该类型的地址,设备要同时具备Public Device Address或者Static device address中的一种。

蓝牙学习七(MAC地址)相关推荐

  1. android蓝牙获取mac地址,如何获得蓝牙连接设备的MAC地址在android中

    我在android中通过蓝牙发送图像,并且想要获取图像发送到的设备的MAC地址.如何获得蓝牙连接设备的MAC地址在android中 请在下面找到我的代码. private void bluetooth ...

  2. CC2541-修改蓝牙名称和mac地址

    使用的蓝牙芯片是CC2541, 本文章介绍修改蓝牙名称和蓝牙MAC地址的方法. 修改蓝牙名称: 在数组scanRspData[ ]里,存放的就是蓝牙名称,你可以自己设置.GAPRole_SetPara ...

  3. 闲谈mac地址学习以及IVL/SVL

    静态mac:静态mac永远不会老化 动态mac: mac地址学习到的,放在交换机二层表里面的mac地址 mac地址老化:将mac地址学习到的mac地址从二层表中移除 mac地址学习: 黑洞mac:接收 ...

  4. Openlab实验平台实验--Mininet Mac地址学习实验

    任务目的 1.了解交换机的MAC地址学习过程. 2.了解交换机对已知单播.未知单播和广播帧的转发方式. 任务环境 设备名称 软件环境(镜像) 硬件环境 主机 Ubuntu 14.04桌面版 Minin ...

  5. MAC地址飘移查看及解决方法 一般是网络中存在环路

    一. 现象:MAC地址飘移 关于mac地址飘移,在网上查找并总结后,归纳可能为以下七种情况: 1.可能存在环路: 2.可能VRRP.HSRP等协议不正常引起.比如设备主备频繁切换,导致交换机学习同一m ...

  6. mac地址容量的作用_MAC地址理论知识与配置步骤

    一.概述 1.MAC地址表项 MAC地址表项记录相邻设备的MAC地址.接口号和所属VLAN ID,注意与ARP表的区别(ARP是IP与MAC对应关系,通过IP解析MAC). 静态MAC表项优先级高于动 ...

  7. 基于MAC地址的安全配置与管理

    MAC地址是网络设备中不变的物理地址,所以基于MAC地址的接入控制就成了最直接,甚至可能是大多数情况下最有效的控制手段.在二层交换网络中,是通过依靠保存在交换机中的MAC地址表来进行寻址的,这时如果控 ...

  8. 交换机工作原理、MAC地址表、路由器工作原理详解

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  9. 配置 MAC地址表实现绑定和过滤

    实验十九.配置 MAC地址表实现绑定和过滤 一. 实验目的 1.了解 MAC 地址表在交换机中的作用: 2.熟练掌握如何配置 MAC地址表实现 MAC 与端口绑定功能. 二. 应用环境 1.通常交换机 ...

最新文章

  1. 入门深度学习,先看看三位顶级大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton的联合综述
  2. 十 mybatis逆向工程
  3. python中subplot是什么意思_python matplotlib中的subplot函数使用详解
  4. 共享卫士完全设置教程图解
  5. 【软件设计师】2020-08-08
  6. nginx-配置基于ip或域名的虚拟主机
  7. 一行代码打开相册/相机
  8. 国内主流设计作品分享社区,用作品动世界
  9. js获取浏览器版本或者类别
  10. 12.04 ubuntu 安装微软雅黑的字体
  11. cJSON解析和打包
  12. 开源许可协议了解这些就够了
  13. 【MTK sensor】alsps分析(以色温为例)
  14. bugku ctf 杂项 旋转跳跃 (熟悉的声音中貌似又隐藏着啥,key:syclovergeek)
  15. php公众号上传网络图片_PHP通过CURL上传图片(微信公众号上传素材)
  16. 安卓苹果手机有效清除微信浏览器内部缓存
  17. 防止360浏览器小窗下载视频
  18. html页面中该插件不受支持,该插件不受支持怎么解决
  19. 求逆和共轭转置为什么能够交换
  20. 电商节后巨头们无法言说的“秘密”

热门文章

  1. 中成药数据图谱可视化与知识问答平台研究
  2. python opencv打开图片 关闭_自学python-opencv(9)图像开闭操作
  3. 搭载广和通5G LAN模组FM650-CN的5G工业网关已率先商用落地
  4. 目前最好的电脑提速方法
  5. 搞笑的哈佛大学精神病测试题
  6. 服务器被封 如何上微信,微信永久封号有救吗 解除微信永久封号的方法
  7. 计算机网络期末复习速通--不挂科版
  8. python 字符串编码与解码
  9. 机器学习中qa测试_机器学习项目测试怎么做?(看实例)
  10. 腐蚀、膨胀、开运算、闭运算