文章目录

  • 一、Bluetooth
    • (一)、蓝牙分类
    • (二)、蓝牙原理及应用
      • 1、工作方式
      • 2、应用
    • (三)、发展历史
    • (四)、蓝牙协议堆栈
    • (五)、协议规范
    • (六)、基带纠错
    • (七)、建立连接
    • (八)、配对和绑定
      • 1、动机
      • 2、实现
      • 3、配对机制
        • (1)、遗留配对(Lagacy pairing)
        • (2)、安全简易配对(Secure Simple Pairing,SSP)
    • (九)、关键术语和概念
      • 1、蓝牙profile框架

一、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开发指南实例
蓝牙芯片相关知识及原厂信息汇总
蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

各种无线传输协议汇总(一)- Bluetooth相关推荐

  1. 最全面的智能锁领域常见的无线传输协议类型

    最全面的智能锁领域常见的无线传输协议类型 "物联网"概念在1999年美国麻省理工学院首次被提出,狭义的物联网指的是"物-物相连的互联网",这里相连的主体既包括物 ...

  2. xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习

    一.美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2.PLC3.PLC5.SLC500.ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PL ...

  3. 112.局部变量和全局变量在内存中是怎样存储的?113.WLAN无线传输协议

    动态申请数据:堆 局部变量:栈 全局变量:静态区 网络传输介质:是指网络中发送方和接收方之间得到物理通路. 常见的有同轴电缆.光纤.双绞线. 无线网络协议 (Wireless Local Area N ...

  4. arp协议的主要功能是_程序员需要掌握的一些网络协议汇总

    今天我们来看下各层的网络协议,虽然开发过程中写代码不会直接涉及,但是理解好网络协议对编程和理解系统的整个运行过程是非常有帮助的哦. 一.应用层协议 1.HTTP HTTP(HyperText Tran ...

  5. ble mac地址 协议_BLE(bluetooth low energy)协议栈介绍

    大家好,今天开始给大家介绍一下蓝牙BLE技术,整个蓝牙技术其实从技术上分经典蓝牙和BLE蓝牙,而从技术模式上分三种:单模(only BLE),双模(BLE和经典都有,如手机),经典蓝牙BR/EDR.蓝 ...

  6. UART、I2C、USB、SPI、CAN、Jtag、PCI/PCIE协议汇总

    协议 通信方式 UART 串行全双工 I2C SPI是串行外设接口(Serial Peripheral Interface)的缩写.SPI是一种高速的.全双工.同步的通信总线,并且在芯片的管脚上只占用 ...

  7. 目录服务器的互联网协议是,各个网络协议汇总(01)

    协议简介 1. TCP  (Transmission Control Protocol)  传输控制协议 它完成第四层传输层所指定的功能,TCP层是位于IP层之上,应用层之下的中间层.不同主机的应用层 ...

  8. 常用音视频传输协议汇总

    参考 https://github.com/aggresss/spec ISO/IEC ISO/IEC 13818 Part 1: Systems Part 2: Video Part 3: Audi ...

  9. 计算机网络重要协议汇总及解释笔记

    TLS 安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性. 该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake). T ...

  10. 网络协议汇总与终极详细解析

    OSI七层协议 比较完整,但是既复杂又不实用. TCP/IP协议 则不同,他现在已经得到了非常广泛的应用. 五层协议 采用折中的的办法,既简介又能将概念阐述清楚. OSI层 功能 协议 应用层 文本传 ...

最新文章

  1. 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第1课1.2节使用工具
  2. 移动端取消button点击出现阴影效果
  3. 比特币市场价格一直下跌,未来的市场价值归零的可能性大吗?
  4. Java中实现按字符串位数在前面补0
  5. 大学计算机基础网络配置实验报告答案,大学计算机基础实验报告2.doc
  6. python中怎么求标准差_python 标准差计算的实现(std)
  7. 终于承认!马斯克证实特斯拉在造AI芯片,而且是世上最好的AI硬件
  8. [Python] 进制转换
  9. 微博视频下载去水印 视频消重
  10. python画点位变化向量图
  11. STM32中RTC唤醒停止模式
  12. php网站模板上传教程视频教程,网站模板怎么用
  13. linux命令chmod什么意思,Linux中chmod命令起什么作用呢?
  14. Tushare财经数据调取方法(行情数据)
  15. css修改鼠标指针的样式
  16. 元气骑士+蒲公英联机平台联机教程
  17. HDLBits—Lemmings3
  18. Linux命令:netstat【监控TCP/IP网络,可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息】【TCP的11种状态】
  19. Pr 入门教程如何创建动画开头标题?
  20. 二元逻辑回归 · 数学推导过程及代码实现完全解析

热门文章

  1. CentOS8 Docker 端口映射
  2. Android模仿通讯录
  3. matlab二维正态分布图,MATLAB二维正态分布图
  4. 从细菌GFF文件提取CDS序列并转换为氨基酸序列
  5. 夜神/逍遥/雷电/51/网易MUMU/腾讯手游助手等模拟器多开模拟器分配不同ip的办法
  6. 电脑安装系统时提示“找不到硬盘”如何解决
  7. 超干货|城市信息模型介绍CIM1-CIM7级
  8. element中el-autocomplete实现中英文搜索功能
  9. Windows 10 专业版安装Docker Desktop
  10. 坚果pro2刷原生android,坚果Pro2普通版(U3 Pro)魔趣OS 安卓10 纯净完美 原生极简 纯净推荐...