热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

低功耗蓝牙学习0524

10.2.1属性概述属性由三种数值组成:属性句柄、属性类型和属性值。10.2.2属性句柄使用了一个16位的地址,也就是属性句柄。10.2.3属性类型所公开的

10.2.1 属性概述

属性由三种数值组成:属性句柄、属性类型和属性值。

10.2.2 属性句柄

使用了一个16位的地址,也就是属性句柄。

10.2.3 属性类型

所公开的数据的种类称作属性类型。
为了区分如此多的数据类型,一串128位的数字被用来标识属性的类型。
这个唯一的标识码就叫做通用唯一识别码(UUID)。16个字节

128位的UUID相当长,设备间为了识别数据的类型需要发送长达16个字节的数据。
为了提高传输效率,蓝牙技术联盟(SIG)定义了一个称为“蓝牙UUID”基数
的128位通用唯一识别码,结合一个较短的16位数使用。

蓝牙UUID基数如下:

   00000000-0000-1000-8000-00805F9B34FB

例如要发送的16位识别码为0x2A01 ,完整的128位的UUID便是:

   00002A01-0000-1000-8000-00805F9B34FB

10.2.4 属性值

属性值用于表示设备公开的状态信息。

1、服务通用唯一识别码
每一种服务都能用一个UUID来辨认。它既可以是16位的UUID,也可以是完整的
128位的UUID。

2.单位

3、属性类型
这些属性类型包括:
首要服务
次要服务
包含
特性

4、特性描述符
一些服务公开的数据包含了额外的信息。这种额外的信息便被冠以特性描述符。

5、特性类型

 

10.2.5 数据库、服务器和客户端

一组属性的集合称作数据库。属性数据库的复杂度不在于其层次,而在于服务和
规范如何使用这些属性。

属性数据库总是位于属性服务器当中;通过属性协议、属性客户端和属性服务器进行通信。
不管是低功耗蓝牙还是经典蓝牙设备,每台设备最多只有一个属性服务器和一个属性数据库。


10.2.6 属性许可


10.2.7 接入属性

客户端可以通过使用下列任意一种信息类型来访问属性数据库的各个属性:
寻求请求
读取请求
写入请求
写入命令
通知
指示


10.2.8 原子操作和事务

在客户端和服务器之间发送的每一条属性协议的信息都隶属于某个事务的一部分。

1、命令和通知

属性协议里还有两种信息,分别是命令和通知。


2、准备写入请求与执行写入请求


10.3 分组

通用属性规范协议仅仅定义了一个属性的平面结构。每一种属性有一个地址---
句柄。

接口是对外部行为的描述,类是对该接口的实现,对象是该类的实例。

在低功耗蓝牙中,服务和特性都用到了分组。使用服务声明来对服务进行分组,用特性声明
来对特性进行分组。

服务是一种或多种特性的组合;特性则由一种或多种属性组成。

10.4 服务

在低功耗蓝牙中,通用属性规范定义了两种基本的分组模式:服务分组模式与
特性分组模式。

10.4.1 扩展服务


10.4.2 其他服务的重用

10.4.3 结合服务

10.4.4 首要还是次要

公开设备功能的服务通常属于首要的服务。

10.4.5 即插即用的客户端应用


10.4.6 服务声明

我们使用服务声明对服务进行归类。

首要服务封装了设备的功能。
次要服务协助首要服务实现它的行为。所有次要服务都被一个首要服务所引用。

服务声明的值是服务的UUID。

10.4.7 包含服务

次要服务必须逐个发现。为此,每一个服务可以有零或多个包含属性。
包含的声明总是紧随服务声明,并列与该服务的其他属性之前。


10.5 特性

将一个服务的属性归类到一起,可以更好地说明这些属性的组合如何为行为提供
一致的接口。

特性只是一个数值。

特性包含三个基本要素:
声明
数值
描述符

10.5.1 特性声明

特性性质、数值属性句柄和特性类型

10.5.2 特性数值

特性数值是一个属性,它的类型必须符合特性声明的特性UUID字段。

10.5.3 描述符

一个特性可以包含任意多的描述符。
特性扩展性质
特性用户描述
客户端特性配置
服务器特性配置
特性表示格式
特性聚合格式

10.6 属性协议

属性协议是非常简单的协议,客户端通过它可以发现并获取属性服务器的属性。
它由六种基本操作构成:
请求
响应
命令
指示
确认
通知

10.6.1 协议消息

10.6.2 交换MTU请求

在低功耗蓝牙连接中,属性协议默认的MTU的长度为23字节。

10.6.3 查找信息请求

查找信息请求和回复用来查找一系列属性的句柄和类型信息。这是唯一一个能让
客户端发现任意属性类型的消息。


10.6.4 按类型值查找请求

使用按类型值查找请求和回复可以根据给定的类型与数值查找相应的属性。
该请求包含两个句柄:其实句柄与结束句柄。

10.6.5 按类型读取请求

10.6.6 读取请求

10.6.7 大对象读取请求

有时属性值太长,无法装入一个读取响应,须使用大对象读取请求来获取剩余字节。

10.6.8 多重读取请求

多重读取请求用来在一个操作中读取多个属性值。

10.6.9 按组类型读取请求

10.6.10 写入请求

该请求包含了一个句柄和一个打算写入该属性的数值。

10.6.11 写入命令

10.6.12 签名写入命令

签名写入命令和写入命令类似,区别是前者包含认证签名。

10.6.13 准备写入请求与执行写入请求

准备写入请求与执行写入请求实现了两种功能。
第一,他们提供了长属性值的写入功能。
第二,他们允许在一个单独执行的原子操作中写入多个值。

10.6.14 句柄值通知

当服务器想要向客户端发送快速的属性状态更新时,它可以发送一条句柄值通知。

10.6.15 句柄值指示

句柄值确认不含任何数据,主要用于流控。

10.6.16 错误响应

当某设备无法完成请求所要求的操作时,它可以发送错误响应。

10.7 通用属性规范

属性协议定义了客户端与服务器如何相互发送符合标准的消息,而GATT规程则
定义了如何发现与使用服务、特性与描述符的标准方法。

GATT规程可以分为三种基本的类型:
发现规程
客户端发起规程
服务器发起规程

10.7.1 发现规程

10.7.2 发现服务

有三种发现服务的途径:
发现所有首要服务
按服务UUID发现首要服务
查找包含服务

10.7.3 特性发现

在服务被发现以后,便可以发现每一个服务的特性。要获取完整的特性,需要
发现特性和特性描述符。

1、发现服务的所有特性

为了发现特性,使用按类型读取请求,将句柄范围设为该服务的句柄范围,并把
类型设为特性。这样便能发现并读取所有的特性声明。


10.7.4 客户端发起规程

对于特性,客户端可以执行四种相关操作:
读取特性值
写入特性值
读取特性描述符
写入特性描述符

10.7.5 服务器发起规程

有两种GATT规程是由服务器发起的:
通知
指示

1、通知
通知是由服务器发起的消息,可以在任何时刻由服务器发给客户端。
通知属于不可靠的消息。通知使用了句柄通知消息。

2、指示

指示也是由服务器发起的消息,它可以在任何时刻由服务器发给客户端。
它包含流控机制,在服务器确认上一条指示被客户端收到之前,它不能发送新的指示。
因此指示属于可靠的消息。

10.7.6 属性协议数据单元(ATT PDU)到GATT规程的映射


 

第11章
安全

11.1 安全概念

11.1.1 认证

认证是一种证明身份的方式,用来证实所连接的设备真正是其声称的设备,而非
第三方攻击者。
认证采用了下列两种基本方法:
初始认证和秘密共享
使用预先共享的秘密重新认证

在低功耗蓝牙中,执行认证有三种不同的方式:

只要设备保存了共享机密,即称之为“已绑定”。

签名使用了上次绑定时彼此交换的共享机密来创建,因此不能被第三方伪造。

当重新连接到以前绑定过的设备,二者之中任一设备都可以启动加密。

11.1.2 授权

授权是值分配权限做某事,包括两种方式:
文档提供授权
直接进行授权

11.1.3 完整性


11.1.4 机密性

机密性是指将事务保持机密的意图。

11.1.5 隐私

11.1.6 加密引擎

低功耗蓝牙有一个密码块,实际上是一个单向函数,用于产生密钥、加密和提供完整性
检查。

11.1.7 共享机密


11.2 配对和绑定

11.2.1 配对

配对涉及两个设备的身份认证、链路加密以及随后的密钥分配,这会使两个设备在
第二次重连时的安全启动速度大为加快。

配对有三个不同的阶段:
配对信心交换
链路认证
密钥分配

11.2.2 配对信息交换

11.2.3 认证

11.2.4 密钥分配

11.2.5 绑定

绑定指的无非是 将密钥及相关身份信息保存到安全数据库当中。只要当中某一个
设备不保存,重新连接后,只有一个设备拥有LTK,因此加密的启动将会失败。

11.3 数据签名

 

第12章

通用访问规范

核心规范的最后一部分是通用访问规范(GAP)。
它定义了设备如何彼此发现、建立连接以及如何实现绑定,同时描述了设备如何
称为广播者和观察者,并且实现无需连接的数据传输。

12.1 背景

要理解低功耗蓝牙,最重要的是了解两个设备之间如何能发现对方、与对方
协作以及不断找到对方并彼此连接。

12.1.1 初次发现

除了数据之外广播报文还包括一些标识,用来显示设备是否为可发现的或是可连接的。

发现性包括两种类型:第一类为“有限可发现性”
第二类为“一般可发现性”,

12.1.2 建立初始连接

一旦得到了设备列表,并且选中了其中的某个设备,下一步便是与该设备建立
初始连接,即向广播报文提供的地址发起一个连接。

12.1.3 服务特性


12.1.4 长期关系

当两个设备均可绑定,并且其中之一打算进行绑定,这就迈出了绑定过程的第一步。
在这之后,两个设备交换输入和输出能力,基于这些能力选择一个认证算法,
然后彼此进行身份验证,产生用于加密链路的STK。

链路加密一旦完成,将执行第二步绑定过程。这一步涉及共享机密的交换,用于与
之前连接过的设备执行重连

共享机密包括具有多种用途的密钥:
长期密钥(LTK)用于加密后续连接,
身份解析密钥(IRK)用于解析私有地址
连接签名解析密钥(CSRK)用于检查已签名的属性协议命令的签名。

12.1.5 重连

如果使用了白名单,那么重连设备必须位于扫描设备或发起设备的白名单之上。

12.1.6 私有地址


12.2 GAP角色

低功耗蓝牙设备定义了四类GAP角色:
广播者
观察者
外围设备
中央设备

广播者是发送广播报文的设备,通常广播一些服务数据给处于观察者角色的设备。

观察者是扫描广播者、并且将信息报告给应用的设备。观察者必须有接收装置,也可以
选发射装置。

外围设备是利用可连接广播报文进行广播的设备。因此一旦连接,它将成为从
设备。外围设备必须同时拥有发射和接收装置。

中央设备是向外围设备发起连接的设备。因此一旦连接,它将成为主设备。

12.3 模式和规程

在GAP内部有两个基本概念用来描述设备的行为,即模式(mode)和规程(procedure)

当一个设备被配置为按照某种方式操作一段较长的时间时,成为模式。
当一个设备被配置为在某一段有限的时间内执行某种特定的操作时,成为规程。

12.3.1 广播模式和观察规程


12.3.2 可发现性

 


推荐阅读
  • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
    开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
  • 当前物联网领域十大核心技术解析:涵盖哪些关键技术?
    经过近十年的技术革新,物联网已悄然渗透到日常生活中,对社会产生了深远影响。本文将详细解析当前物联网领域的十大核心关键技术,包括但不限于:1. 军事物联网技术,该技术通过先进的感知设备实现战场环境的实时监测与数据传输,提升作战效能和决策效率。其他关键技术还包括传感器网络、边缘计算、大数据分析等,这些技术共同推动了物联网的快速发展和广泛应用。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 机顶盒,即数字电视机顶盒(Digital TV Set-Top Box,简称STB),是一种放置在电视机旁的设备。它主要用于将数字信号转换为电视能够识别的模拟信号,从而实现高质量的视频和音频播放。机顶盒不仅支持基本的电视节目接收功能,还具备多种增值服务,如互动点播、网络浏览等。随着技术的发展,现代机顶盒集成了更多的智能功能,成为家庭娱乐的重要组成部分。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • ylbtech-进销存管理解决方案:进销存管理,即购销链管理,涵盖企业从采购(进)、库存(存)到销售(销)的全流程动态管控。其中,“进”涉及从市场询价、供应商选择、采购执行直至货物入库及支付流程;“销”则包括产品定价、客户报价、订单处理及销售出库等环节。该解决方案旨在通过信息化手段,提升企业运营效率,优化库存结构,增强市场响应速度。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 比特币的成功为区块链技术构建了可信货币的基石,标志着区块链1.0时代的到来。以太坊通过引入智能合约,极大地推动了去中心化应用的开发和普及,开启了区块链2.0时代。本文深入探讨了侧链技术在提升区块链扩展性方面的潜力和应用,分析了其在提高交易速度、降低成本和增强安全性等方面的优势,并讨论了当前面临的技术挑战和未来的发展方向。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • Redis 主从复制机制详解及其工作原理
    主从复制机制在 Redis 中具有重要作用,能够实现读写分离、提升系统性能并提供快速的灾难恢复能力。具体实现方面,以一主两从的架构为例,需要创建三个独立的配置文件(.conf),分别用于主节点和两个从节点的设置。通过这种方式,可以从主节点同步数据到从节点,确保数据的一致性和高可用性。此外,还可以利用从节点进行读操作,减轻主节点的压力,进一步提高系统的整体性能。 ... [详细]
  • SQL Server 2005 在安装过程中通常会伴随 VS2005 一起安装,并且为了便于数据库管理,还会安装 Management Studio Express 管理工具。然而,在实际使用中,用户可能会遇到登录故障。本文综合分析了这些登录问题的常见原因,并提供了多种有效的解决方法,包括检查配置设置、验证账户权限和网络连接等。通过这些措施,用户可以有效地诊断并解决 SQL Server 2005 的登录问题。 ... [详细]
  • PHP与MySQL的Web应用开发技术深入解析
    PHP与MySQL的Web应用开发技术深入解析 ... [详细]
  • 本文详细探讨了MySQL并发参数的优化与调整方法,旨在帮助读者深入了解如何通过合理配置这些参数来提升数据库性能。文章不仅介绍了常见的并发参数及其作用,还提供了实际操作中的调整策略和最佳实践,适合希望提高数据库管理技能的技术人员阅读。 ... [详细]
  • 本文深入探讨了ASP.NET中ViewState、Cookie和Session三种状态管理技术的区别与应用场景。ViewState主要用于保存页面控件的状态信息,确保在多次往返服务器过程中数据的一致性;Cookie则存储在客户端,适用于保存少量用户偏好设置等非敏感信息;而Session则在服务器端存储数据,适合处理需要跨页面保持的数据。文章详细分析了这三种技术的工作原理及其优缺点,并提供了实际应用中的最佳实践建议。 ... [详细]
author-avatar
奶油泡芙2覀21
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有