蓝牙协议简介

article/2025/10/24 7:28:47

一、Bluetooth
(一)、蓝牙分类

从左到右依次为:经典蓝牙(BR/EDR)、双模蓝牙(同时支持BR/EDR/LE)和低功耗蓝牙(BLE)。其中经典蓝牙和低功耗蓝牙互不兼容。
其实看结构也可以看出双模蓝牙是经典蓝牙和低功耗蓝牙的合集。

(二)、蓝牙原理及应用

1、工作方式

蓝牙技术                                                                                                   拓扑结构
基础率BR(Basic Rate)/增强数据率EDR(Enhanced Data Rate)      1:1
低耗能LE(Low Energy)                                                                        1:1  1:n  n:n


2、应用
涵盖的领域有汽车、消费类电子产品、家居自动化、医疗和保健、手机、计算机与外设、可穿戴设备、运动和健身、零售和位置导向式服务等。

(三)、发展历史


(四)、蓝牙协议堆栈
蓝牙协议堆栈依照其功能可分四层:
1、核心协议层(HCI、LMP、L2CAP、SDP)

协议           全称                                                                译名                                               作用
LMP        Link Manager Protocol                                     链路管理协议                         用于设备间建立连接,它负责链路的建立、认证和配置
HCI         Host Controller interface                                   控制器接口                            控制器和链路管理器提供命令接口,允许访问硬件状态和控制寄存器
SDP        Service Discovery Protocol                               服务发现协议                         允许设备发现其他设备提供的服务及其相关参数
L2CAP    Logical Link Control and Adaptation Protocol   逻辑链路控制和适配协议          两个使用不同的更高级协议的设备之间的多路传输的多个逻辑连接。提供空中数据包的分割和重组。

关于L2CAP协议的部分协议:

协议                                                                                                        译名                                                                                                作用
ERTM       Enhanced Retransmission Mode                                 增强型重传模式(附加的L2CAP模式)                                                 提供可靠的L2CAP通道
SM           Stream Mode                                                                 流模式(附加的L2CAP模式)                                                              没有重传和流控制,提供不可靠的L2CAP通道
AVCTP     Audio/Video Control Transport Protocol                       音频/视频控制传输协议(通过L2CAP传输AV/C指令)                             通过L2CAP通道由远程控制规范去发送AV/C指令
AVDTP     Audio /Video Distribution Transport Protocol                音频/视频分发传输协议(通过L2CAP向立体声耳机传输音乐文件)    通过L2CAP通道由高级音频分发规范将音乐传输到立体声耳机

2、电缆替代协议层(RFCOMM)

协议                    全称                                               译名                           作用
RFCOMM    Radio Frequency Communication    串行线性仿真协议    生成虚拟串行数据流(通常用于RS-232)

3、电话传送控制协议(TCS-BIN)

协议                   全称                                                         译名                     作用
TCS-BIN    Telephony Control Specification - Binary    电话控制协议     定义了用于在蓝牙设备之间建立语音和数据呼叫的呼叫控制信令

4、选用协议层(PPP、TCP/IP、UDP、OBEX、WAE/WAP、IrMC、BNEP)

协议        全称                                                                                                                                 译名                                                                         作用
PPP      Point to Point Protocol                                                                                                   点对点通信协议                                                     用于在点对点链路上传输IP数据报的因特网标准协议
TCP/IP/UDP    Transmission Control Protocol / Internet Protocol / User Datagram Protocol    传输控制协议 / 互联网络协议 / 用户数据报协议    TCP/IP协议套件的基础协议
OBEX    Object Exchange                                                                                                         对象交换协议                                                           用于对象交换的会话层协议,为对象和操作表示提供模型
WAE/WAP    Wireless Application Environment / Wireless Application Protocol                    无线应用环境/无线应用协议                                         WAE为无线设备指定了一个应用程序框架,WAP是一个开放标准,为移动用户提供对电话和信息服务的访问
IrMC    Infrared Mobile Communication    红外移动通信协议    定义可移动通讯终端器的交换对象功能
BNEP    Bluetooth Network Encapsulation Protocol    蓝牙网络封装协议    在个人区域网络配置文件中传输IP数据包

or


(五)、协议规范
蓝牙规范(Bluetooth Profile)是指蓝牙通信在那一种用途下应该使用的通信协议和相关的规范。蓝牙1.1定义的profile有13个。SIG(Special Interest Group)认为蓝牙设备有4个最基本的Profile:

规范    全称    译名    作用
GAP    General Access Profile    通用接入规范    保证不同的Bluetooth产品可以互相发现对方并建立连接
SDAP    Service Discovery Application Profile    服务发现应用规范    描述了应用程序如何使用SDP发现远程设备上的服务
SPP    Serial Port Profile    串行端口规范    定义了如何设置虚拟串行端口及如何连接两个蓝牙设备
GOEP    General Object Exchange Profile    通用对象交换规范    可用于将对象从一个设备传输到另一个设备

(六)、基带纠错
根据报文类型的不同,个别报文可能受到错误校正的保护,例如1/3速率正向错误校正(FEC)或2/3速率正向错误校正(FEC)。此外,带有CRC的数据包将被重传,直到被自动重复请求确认为止。

(七)、建立连接
任何在可发现模式下的蓝牙设备都需要发送以下信息:

设备名(Device name)
设备类型(Device class)
服务列表(List of services)
技术信息(Technical information)(设备特性,制造商,蓝牙规格使用,时钟偏移)
任何设备都可以执行查询以查找要连接的其他设备,并且可以配置任何设备以响应此类查询。但是,如果试图连接的设备知道设备的地址,它总是响应直接连接的请求,并且如果请求的话会发送上面列表中显示的信息。使用设备的服务可能需要配对或由其所有者接收,但连接本身可以由任何设备启动和保持,直到它超出范围。一些设备一次只能连接到一个设备,与它们连接以防其连接其他设备并出现在查询中,直到它们从另一个设备转到另一个设备。

每个设备都有一个唯一48位地址。然而,这些地址通常没有在查询中显示。相反,使用友好的蓝牙名称,这可以由用户设置。当另一个用户扫描设备和配对设备列表时,会出现此名称。在默认情况下,大多数手机都将蓝牙名称设置为手机的制造商和型号。大多数手机和笔记本电脑只显示蓝牙名称,需要特殊程序才能获得更多关于远程设备的信息。(上文是我翻译的,不理解的话可以看原文,链接在最下方,见谅。^^)

(八)、配对和绑定
1、动机
通过蓝牙提供的许多服务可以公开私有数据或让连接方控制蓝牙设备。出于安全原因,有必要识别特定的设备,从而控制哪些设备可以连接到给定的蓝牙设备。同时,蓝牙设备能够在不需要用户干预的情况下建立连接(例如,只要在范围内)是非常有用的。

为了解决这个冲突,蓝牙使用了一个称为绑定的过程,并通过一个称为配对的过程生成一个绑定。配对过程通过触发特定的请求从用户生成一个键(例如,用户显式地请求添加一个蓝牙设备),或者它被触发时自动连接到服务,为了安全目的需要对设备进行(第一次)识别。这两种情况分别称为专用绑定和通用绑定。

配对通常涉及到某种程度的用户交互。这种用户交互确认了设备的身份。当配对成功完成时,两个设备之间就会形成一个键,使得这两个设备在未来可以相互连接,而无需重复配对过程来确认设备身份。如果有需要,用户可以删除绑定关系。

2、实现
在配对过程中,两个设备通过创建一个称为链接关键字(link key)的共享密钥(shared secret)来建立关系。如果两个设备存储相同的链接关键字,则称它们配对或者绑定。
一个只想与绑定设备通信的设备可以用密码方式验证另一个设备的身份,确保它与之前和它配对的设备相同。一旦链接关键字生成,设备之间经过身份验证的异步无连接(ACL,Asynchronous Connection-Less)链路可能会被加密,以保护交换的数据不被窃听。用户可以从任意一个设备上删除链接关键字,这将删除设备之间的连接,因此一个设备可以为一个不再与之配对的设备存储链接关键字。
蓝牙服务通常需要加密或身份验证,因此在允许远程设备连接之前需要配对。一些服务,比如对象推送配置文件,选择不显式地要求身份验证或加密,这样配对就不会干扰与服务用例相关的用户体验。

3、配对机制
蓝牙v2.1引入了安全简单的配对机制,大大改变了配对机制。以下总结了配对机制

(1)、遗留配对(Lagacy pairing)
仅适用于蓝牙v2.0及之前版本。每个设备必须输入PIN码(Personal identification number),且只有双方输入的PIN码相同时才会配对成功。任何16字节的UTF-8字符串都可以用作PIN码。然而,并不是所有的设备都能输入所有可能的PIN码。

有限的输入设备:e.g. 蓝牙免提耳机(Bluetooth Hands-free headset),通常只有固定的PIN码“0000”or“1234”,它们被硬编码到设备中。
数字的输入设备:e.g. 手机(Mobile phones),允许用户输入长度不超过16位的数字值。
字母数字输入设备:e.g. 个人电脑和智能手机(PCs & Smartphones),它们允许用户以PIN码的形式输入完整的UTF-8文本。如果与能力较弱的设备配对,则用户必须了解其他设备上的输入限制;对于有能力的设备,没有可用的机制来确定它应该如何限制用户可能使用的可用输入。
(2)、安全简易配对(Secure Simple Pairing,SSP)
这是蓝牙v2.1所要求的,尽管蓝牙v2.1设备只能使用遗留配对与v2.0或更早的设备进行互操作。安全简单配对使用一种形式的公钥密码学(public key cryptograph),以及一些类型可以有助于对抗中间人或中间人攻击(HITM攻击,man-in-the-middle Attack)。SSP具有以下身份验证机制:

只工作(Just works):顾名思义,这种方法就是只是工作,不需要用户交互。但是,设备可能会提示用户确认配对过程。常用于IO有限的耳机,且比遗留配对的固定PIN码更安全。这种方法不提供中间人(HITM)保护。
数字比较(Numeric comparison):如果两个设备都有显示屏,并且至少有一个设备能接受二进制的yes/no用户输入,那么它们可以使用数字比较。此方法在每个设备上显示6位数字代码。用户应该比较这些数字以确保它们是相同的,如果比较成功,用户应该在能够接受输入的设备上确认配对。这个方法提供了MITM保护,假设用户在两个设备上都确认并正确地执行比较。
密钥输入(Passkey entry):此方法可用于具有显示的设备和具有数字键盘输入的设备(如键盘)之间,或用于具有数字键盘输入的两个设备之间。在第一种情况下,显示器向用户显示一个6位数字代码,然后用户在键盘上输入代码。在第二种情况下,每个设备的用户输入相同的6位数。这两种情况都提供了MITM保护。
带外数据(Out of band,OOB):该方法使用外部通信手段,如近场通信(NFC)来交换配对过程中使用的一些信息。配对是使用蓝牙无线层完成的,但是需要来自OOB机制的信息。这只提供了OOB机制中存在的MITM保护级别。
SSP被认为很简单,原因如下:在大多数情况下,它不需要用户生成密钥。对于不需要MITM保护的用例,可以消除用户交互。对于数值比较,用户可以通过简单的等式比较来实现MITM保护。使用带有NFC的OOB可以在设备接近时进行配对,而不需要很长的发现过程。

中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,并且当今仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
随着计算机通信网技术的不断发展,MITM攻击也越来越多样化。最初,攻击者只要将网卡设为混杂模式,伪装成代理服务器监听特定的流量就可以实现攻击,这是因为很多通信协议都是以明文来进行传输的,如HTTP、FTP、Telnet等。后来,随着交换机代替集线器,简单的嗅探攻击已经不能成功,必须先进行ARP欺骗才行。如今,越来越多的服务商(网上银行,邮箱登陆)开始采用加密通信,SSL(Secure Sockets Layer 安全套接层)是一种广泛使用的技术,HTTPS、FTPS等都是建立在其基础上的。

(九)、关键术语和概念
1、蓝牙profile框架
每个特征属性被UUID(Universally Unique IDentifier,通用唯一标识符)唯一标识 ,UUID是标准128-bit格式的ID用来唯一标识信息。属性被 ATT(attribute profile) 格式化为特征和服务形式进行传送。(服务和特征都是用UUID来唯一标识的)

配置文件(Profile):可以理解为一种规范,一个标准的通信协议,它存在于从机中,规范了设备如何工作在一个特定的应用场景。每个配置文件中会包含多个服务(service),每个服务代表从机的一种能力。

特征(Characteristic): 一个特征包含一个单独的值(value)和0~n个用来描述特征值(characteristics value)的描述符(descriptors)。一个特征可以被认为是一种类型(type),类似于一个类(class)。

描述符(descriptor):描述符是被定义的特征,用来描述一个特征的值。例如,一个描述符可以指定一个人类可读的描述中,在可接受的范围里特征值,或者是测量单位,用来明确特征的值。

服务(service):服务是特征的集合。例如,你可以有一个所谓的心率监测器(Heart RateMonitor)服务,其中包括特征,如心率监测器。你可以在bluetooth.org找到关于一系列基于GATT的协议和服务。

如图所示:蓝牙设备包含多个profile,一个profile有多个service,一个service有多个characteristic,一个characteristic包含一个value和多个的descriptor。

下面这副图就比较形象地描述协议栈:

参考资料:
Wikipedia 蓝牙
Wikipedia bluetooth
百度百科
蓝牙核心技术了解
蓝牙BLE开发指南实例
蓝牙芯片相关知识及原厂信息汇总
蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
 


http://chatgpt.dhexx.cn/article/bV6G6j4m.shtml

相关文章

蓝牙协议分析2---协议架构

转自http://www.wowotech.net/bluetooth/bt_protocol_arch.html 2. 协议层次 蓝牙协议是通信协议的一种,为了把复杂问题简单化,任何通信协议都具有层次性,特点如下: 从下到上分层,通过层层封装,每一层只…

蓝牙协议分析(1)_基本概念

1. 前言 自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个版本的修订后,发展为当前的状况。 说实话…

一篇文章足够你学习蓝牙技术,提供史上最全的蓝牙技术(传统蓝牙/低功耗蓝牙)文章总结,文档下载总结(2020/12/11更新)

本文章目的: 1)给广大蓝牙爱好者提供蓝牙资料下载渠道 2)给广大蓝牙爱好者增加一个蓝牙学习文章导读 我们的蓝牙书以及CSDN蓝牙系列的书籍以及视频有以下计划,大家可以根据兴趣爱好或者工作需要挑选特定的章节来学习&#xff0…

从RRT到RRT*,再到Informed RRT*,路径规划算法怎么写

从RRT到RRT*,再到Informed RRT*,路径规划算法怎么写 1、RRT算法1.1 假设1.2 RRT算法步骤与实现1.3 伪代码 2、RRT*算法3、Informed RRT*算法 做个正直的人 RRT中文名字是“快速搜索随机树”(Rapidly-exploring Random Tree)&#…

【机器人路径规划算法RRT和RRG】

路径规划算法 RRT路径规划RRG路径规划 RRT路径规划 RRT算法:Rapid-exploration Random Tree 快速搜索随机数算法,是一种在完全已知的环境中通过随机采样扩展搜索的算法。 RRT算法是概率完备的,只要规划时间足够长,确实存在一条路…

ROS移动机器人基于RRT(快速探索随机树)算法 rrt_exploration实现真实机器人自主探索建图

仿真机器人加真实机器人功能包下载链接移动机器人项目组项目-机器学习代码类资源-CSDN下载 博主为了图方便,就直接使用了古月老师的仿真包了,博主先和自己的朋友先在真实的机器人上实现了这个功能,再在仿真上来实现了一下。 也可以先去zhang…

RT-Thread 简介

1.RT-Thread 概述 RT-Thread,全称是Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统, 基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。 事实上&#xff…

路径规划 | 随机采样算法:PRM、RRT、RRT-Connect、RRT*

基于图搜索的路径规划算法主要用于低维度空间上的路径规划问题,它在这类问题中往往具有较好的完备性,但是需要对环境进行完整的建模工作,在高维度空间中往往会出现维数灾难。为了解决这些问题,本文将介绍基于随机采样的路径规划算…

基于matlab的RRTRRT*算法实现以及可视化

学习记录-基于采样的路径规划算法 内容来源RRT主要步骤动态效果展示优缺点:自己进行的改进尝试 RRT*主要步骤NearCChooseParentrewire总结及动态效果图 Informed RRT*其他优化RRT的方式总结 内容来源 记录学习深蓝路径规划课程-基于采样的路径规划一节的作业和笔记…

RRT基本概念

原文地址 快速探索随机树(RRT)是一种通过随机构建空间填充树来有效搜索非凸,高维空间的算法。树是从搜索 空间中随机抽取的样本逐步构建的,并且本质上倾向于朝向大部分未探测区域生长。 RRT由Steven M. LaValle 和James J. Kuf…

SQLSERTVER安装教程

很久没有安装过这个了,今天安装有点生疏了,这里记录一下分享 分为三块块1、下载地址,2、安装图解 ,3、安装失败问题 1、sqlserver 2008 r2 百度下载地址链接:下载 cn_sql_server_2008_r2_enterprise_x86 Microsoft…

sqlserver安装目录_SQL Server 2016数据库安装

SQL SERVER 2016较之前的SQL安装有些不同,下面详细介绍如何将SQL SERVER 2016安装到Windows的服务器。 一、第一阶段,SQL安装 1.首先具备SQL SERVER 2016的安装介质。一般可能是下载的为ISO光盘镜像文件。在Windows Server 2016操作系统和Windows 10的系统中可以使用鼠标的右…

Sql Server安装时遇到polybase问题

错误:以域格式(域\用户名)指定账户。对于本地用户,请采用(本地主机\用户名)格式。 在安装时选了polybase,需要手动输入账户,如果不需要该服务或没有账户,可以不要勾选po…

SQL Server 安装教程

目录 第一阶段:安装SQL Server向导 第二阶段:安装SQL Server 第三阶段:安装SQL Server管理工具 运行SSM 参考链接 第一阶段:安装SQL Server向导 以下以中文版为例: 中文版官网:https://www.microsoft.com/…

SQL Server 基础操作(一)安装数据库

Windows server 2012 R2系统 安装SQL Server 2008数据库 1.创建虚拟机---安装Windwos server 2012 R2 操作系统 2.安装windows server 2012 R2系统完成后,更换SQL Server 2008 iso镜像 3.安装.NET Framework 3.5,一直点击下一步在.NET Framework 3.5选项…

sqlserver 2016 安装

1、环境介绍 操作系统:windows server 2016 sqlserver版本: sqlserver 2016 下载地址: https://msdn.itellyou.cn/ 2、双击下载下来的镜像,打开setup开始安装 3、选择全新安装 4、选择输入秘钥,下一不 5、接受许可…

SQLserver的安装

SQLserver的安装 一、SQLserver的安装步骤 1.SQLserver的下载:官网下载网址 下载Developer版本即可。 2.运行完成后安装类型选择“基本” ,之后选择合适的语言和安装位置。 3.显示“成功完成安装”后,不急于点击完成退出,应点…

SQL Server无法安装问题

SQL Server无法安装问题 一、软件安装“无法使用此产品的安装源,请确认安装源存在并且你可以访问它安装过程中遇到无法访问您试图使用的功能所在的网络位置问题一、软件安装“无法使用此产品的安装源,请确认安装源存在并且你可以访问它 原因:之前版本卸载没有卸载干净(主要…

mysql 2005 安装教程_sql2005 安装教程 图文

SQL2005安装安装步骤 安装Microsoft SQL Server 2005 数据库步骤: 第一步:将Microsoft SQL Server 2000安装光盘放入光驱中,在光驱目录下,点击Setup.exe安装程序开始安装过程, 或使用镜像安装文件。选择“基于X86的操作…

SQLserver2005 安装

解压cs_sql server_2005_ent_x64_dvd.iso镜像文件。打开Servers文件夹找到setup.exe双机点击安装。出现程序兼容助手提示,点击运行程序。 3、用户许可协议,选择我接受,点击下一步。 4、安装必要组件,点击安装。 5、安装必要组件&a…