前言 :最近开始学习蓝牙相关技术,做了一些笔记整理。本次阅读参考书籍是《低功耗蓝牙开发权威指南》


低功耗蓝牙的体系结构

  低功耗蓝牙体系结构主要分为三个部分:控制器、主机和应用程序。在控制器内既有物理层和链路层,又有直接测试模式和主机控制接口(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)的体系结构相关推荐

  1. 【蓝牙学习笔记二】初识BLE蓝牙协议栈

    BLE蓝牙协议栈 下面通过图形+文字的方式以方便大家记忆,BLE蓝牙协议栈的各个层次的功能. 下面推荐两篇好博文: 1.这篇博文对蓝牙协议栈的每个层次更详细的讲解:https://blog.csdn. ...

  2. 蓝牙学习笔记之建立蓝牙连接的过程

    发送广播数据包的叫广播发起者(advertisers),在广播通道接收广播数据包但没意向连接广播发起设备的叫扫描者( scanners), 需要连接到另一个设备的设备叫做 initiators,它监听 ...

  3. 蓝牙学习之旅——低功耗蓝牙之频带和通道

    Bluetooth Low Energy,简称BLE 1.低功耗蓝牙工作在2.4GHz ISM频段,范围是2400-2483.5MHz.整个频段分为40个信道,编号从0至39,每个信道宽为2MHz.其 ...

  4. 怎么查看蓝牙uuid_多设备低功耗蓝牙 Swarm BLE in Android and iOS

    Camellia Café 在这里讲述同时与多个低功耗蓝牙设备的连接及通迅,在Android和iOS中的开发,敬请点击观看视频: 多设备低功耗蓝牙Android和iOShttps://www.zhih ...

  5. android 连接蓝牙电子秤_电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上)...

    电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上) 前段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝 ...

  6. ESP32学习笔记(27)——BLE GAP主机端扫描

    一.背景 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...

  7. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  8. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  9. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

最新文章

  1. 如何开启PostGreSQL的远程访问端口?
  2. 计算机前后端接口,看看别人后端API接口写得,那叫一个优雅!
  3. ​Google 鼓励的 13 条代码审查标准,建议收藏!
  4. 目标检测(Object Detection)资料汇总
  5. openresty开发系列20--lua的时间操作
  6. python开发环境比较好_python开发环境比较好,python 集成开发环境哪个好
  7. 用 Hasor 谈一谈MVC设计模式
  8. P3825 [NOI2017]游戏
  9. 定时更换超级连接的代码
  10. 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘并排序合并同类项.doc...
  11. CentOS 7 Docker部署phpMyAdmin网站
  12. Java代码模拟实现购物车
  13. 【ANSYS命令流】Workbench中施加流体渗透压力载荷(超详细)
  14. mac pem证书登陆linux,Mac通过SSH使用PEM文件登录服务器
  15. zookeeper和ZAB协议
  16. 探路者团队-贪吃蛇(测评人:刘耀泽)
  17. 3 Linux虚拟机创建修改删除文件和文件夹
  18. php ios表情包,十分钟开发一款 iOS 表情包 App
  19. Docker-核心篇(1)-CentOS7安装Docker社区版
  20. 5G网络架构(接入网,传输网,核心网)

热门文章

  1. daemon守护进程初识
  2. Clojure 学习入门(12)- map/pmap
  3. Java之添加环境变量
  4. 写python代码案例_keras topN显示,自编写代码案例
  5. 美国西北大学 计算机工程专业排名,权威首发!2018年USNews美国大学研究生计算机工程专业排名榜单...
  6. move_uploaded_file返回false但实际成功_023 Spring Boot 搭建实际项目开发框架
  7. 用Python实现ax²+by的图灵机【形式语言与自动机】
  8. git学习 add - commit - init
  9. python三天速成_python学习第三天
  10. visual studio可以开发app吗_郑州app开发价格是怎么定得呢?预约理发app好做吗