蓝牙学习笔记(二)——低功耗蓝牙(BLE)的体系结构
前言 :最近开始学习蓝牙相关技术,做了一些笔记整理。本次阅读参考书籍是《低功耗蓝牙开发权威指南》
低功耗蓝牙的体系结构
低功耗蓝牙体系结构主要分为三个部分:控制器、主机和应用程序。在控制器内既有物理层和链路层,又有直接测试模式和主机控制接口(HCI)层的下半部分。在主机内包含三个协议:逻辑链路控制和适配协议(L2CAP)、属性协议(Attribute Protocol)和安全管理器协议(Security Manager Protocol),此外还包括通用属性规范(GATT)、通用访问规范(GAP)和模式(Mode)。
- 控制器
物理设备,收发无线电信号。控制器与外界通过天线相连,与主机通过主机控制接口(HCI)相连。 - 主机
软件栈,管理多台设备之间的通信以及提供服务。主机构建位于主机控制器的上层部分,其上为逻辑链路控制和适配协议(L2CAP)。在它上面是系统的两个基本构建块:安全管理器(用于处理所有认证和安全连接等事务)以及属性协议(用于公开设备上的状态数据)。属性协议之上为通用属性规范(GATT),定义属性协议如何实现可重用的服务,而这些服务公开了设备的标准特性。最后,通用访问规范(GAP)定义了设备如何以一种可交互方式找到对方,并与之进行连接。
主机并未对其上层接口做明确规定,每个操作系统或者环境都会用不同的方式公开主机上层接口API。 - 应用程序
使用软件栈和控制器实现用户实例。
1.控制器
1.1物理层
物理层是采用2.4GHz无线电,简单的传输和接收电磁辐射的部分。
1.2链路层
链路层是整个低功耗蓝牙体系里面最复杂的部分。它负责广播、扫描、建立和维护连接,以及确保数据包按照正确的方式组织、正确地计算校验值以及加密序列等。
1.3主机/控制器接口
主机/控制接口允许主机将命令和数据发送到控制器,并且允许控制器将事件和数据发送到主机。HCI由两个独立部分组成:逻辑接口和物理接口。逻辑接口定义了命令和事件及其相关行为,可以交付给任何物理传输或者通过控制器上的API交付给控制器。物理接口定义了命令、事件和数据如何通过不同的连接技术来传输。已经定义的物理接口包括USB、SDIO和UART。
2.主机
2.1逻辑链路控制和适配协议(L2CAP)
逻辑链路控制和适配协议是低功耗蓝牙复用层,定义了两个基本概念:L2CAP信道和L2CAP信令。经典蓝牙使用了它的大部分功能,包括动态信道标识符、协议服务多路复用器,增强的重传、流模式等。相比而言,低功耗蓝牙只用到了最少的L2CAP功能。
2.2安全管理协议
安全管理器定义了一个简单的配对和密钥分发协议。配对是一个获取对方设备信任的过程,通常采取认证的方式实现。配对之后,接着是链路加密和密钥分发过程。在密钥分发过程中从设备把密钥共享给主设备,当这两台设备在未来重新连接时,他们可以使用先前共享的密钥进行加密,从而迅速认证彼此身份。安全管理器还提供了一个安全工具箱,负责生成数据的哈希值、确认值以及配对过程中使用的短期密钥。
2.3 属性协议
属性协议定义了访问对端设备上的数据的一组规则。属性协议定义了六种类型的信息:
类型 |
---|
1.从客户端发至服务器的请求 |
2.从服务器发至客户端的回复请求响应 |
3.从客户端发至服务器的无需响应的命令 |
4.从服务器发至客户端的无需确认的通知 |
5.从服务器发至客户端的指示 |
6.从客户端发至服务器的回复指示的确认 |
而属性是被编址并打上标签的一小块数据。每个属性均包含一个用来标识该属性唯一的句柄、一个用于标识存放数据的类型的一个值。
2.4通用属性规范协议
通用属性规范位于属性协议之上,定义了属性的类型及其使用方法。
2.5 通用访问规范
通用访问规范定义了设备如何发现、连接,以及为用户提供有用的信息。它还定义了设备之间如何建立长久的关系,称为绑定(bonding)。
3.应用层
控制器和主机之上是应用层。应用层规范定义了三种类型:特性(characteristic)、服务(service)和规范(profile)。
3.1特性(characterisitic)
特性是采用已知格式,以通用唯一识别码(UUID)作为标记的一小块数据。由于特性要求能够重复使用,因而设计时没有设计行为。
3.2服务(service)
服务只定义了位于服务器上的相关特性行为,而不定义客户端的行为。服务有两种类型:首要服务和次要服务。首要服务表征一个给定的设备主要做些什么。次要服务是协助主要服务或者其他次要服务的服务。
3.3规范(profile)
规范是描述两个或者多个设备的说明,每个设备提供一个或者多个服务。规范描述了如何发现并连接设备,从而为每台设备确定所需的拓扑结构。规范还描述了客户端特性,用于发现服务和服务特性。规范和服务是一对多对多的功能。
蓝牙学习笔记(二)——低功耗蓝牙(BLE)的体系结构相关推荐
- 【蓝牙学习笔记二】初识BLE蓝牙协议栈
BLE蓝牙协议栈 下面通过图形+文字的方式以方便大家记忆,BLE蓝牙协议栈的各个层次的功能. 下面推荐两篇好博文: 1.这篇博文对蓝牙协议栈的每个层次更详细的讲解:https://blog.csdn. ...
- 蓝牙学习笔记之建立蓝牙连接的过程
发送广播数据包的叫广播发起者(advertisers),在广播通道接收广播数据包但没意向连接广播发起设备的叫扫描者( scanners), 需要连接到另一个设备的设备叫做 initiators,它监听 ...
- 蓝牙学习之旅——低功耗蓝牙之频带和通道
Bluetooth Low Energy,简称BLE 1.低功耗蓝牙工作在2.4GHz ISM频段,范围是2400-2483.5MHz.整个频段分为40个信道,编号从0至39,每个信道宽为2MHz.其 ...
- 怎么查看蓝牙uuid_多设备低功耗蓝牙 Swarm BLE in Android and iOS
Camellia Café 在这里讲述同时与多个低功耗蓝牙设备的连接及通迅,在Android和iOS中的开发,敬请点击观看视频: 多设备低功耗蓝牙Android和iOShttps://www.zhih ...
- android 连接蓝牙电子秤_电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上)...
电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上) 前段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝 ...
- ESP32学习笔记(27)——BLE GAP主机端扫描
一.背景 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- [转载]dorado学习笔记(二)
原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
最新文章
- 如何开启PostGreSQL的远程访问端口?
- 计算机前后端接口,看看别人后端API接口写得,那叫一个优雅!
- ​Google 鼓励的 13 条代码审查标准,建议收藏!
- 目标检测(Object Detection)资料汇总
- openresty开发系列20--lua的时间操作
- python开发环境比较好_python开发环境比较好,python 集成开发环境哪个好
- 用 Hasor 谈一谈MVC设计模式
- P3825 [NOI2017]游戏
- 定时更换超级连接的代码
- 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘并排序合并同类项.doc...
- CentOS 7 Docker部署phpMyAdmin网站
- Java代码模拟实现购物车
- 【ANSYS命令流】Workbench中施加流体渗透压力载荷(超详细)
- mac pem证书登陆linux,Mac通过SSH使用PEM文件登录服务器
- zookeeper和ZAB协议
- 探路者团队-贪吃蛇(测评人:刘耀泽)
- 3 Linux虚拟机创建修改删除文件和文件夹
- php ios表情包,十分钟开发一款 iOS 表情包 App
- Docker-核心篇(1)-CentOS7安装Docker社区版
- 5G网络架构(接入网,传输网,核心网)
热门文章
- daemon守护进程初识
- Clojure 学习入门(12)- map/pmap
- Java之添加环境变量
- 写python代码案例_keras topN显示,自编写代码案例
- 美国西北大学 计算机工程专业排名,权威首发!2018年USNews美国大学研究生计算机工程专业排名榜单...
- move_uploaded_file返回false但实际成功_023 Spring Boot 搭建实际项目开发框架
- 用Python实现ax²+by的图灵机【形式语言与自动机】
- git学习 add - commit - init
- python三天速成_python学习第三天
- visual studio可以开发app吗_郑州app开发价格是怎么定得呢?预约理发app好做吗