【Android】蓝牙协议栈到底是什么?

1,620 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 5 天,点击查看活动详情

前言

看到蓝牙协议栈,蓝牙协议,蓝牙规范,就开始头疼,再看看 RFCOMM, GAP, GATT, L2CAP, A2DP, HDP, HID 就更加头痛欲裂了。

那本文旨在,梳理清楚他们之间的关系,使得我们对蓝牙协议,有个清晰的框架,再去看 Android 官方有关蓝牙的文档,就可以做到心中有谱了。

网络协议

首先,让我们回顾一下,什么是协议栈?我们先看看网络协议栈。

上面是我们常见的 OSI模型(七层协议模型)与 TCP/IP 模型(四层协议模型)。而在每一层上,都会有对应的协议。如应用层中的 HTTP, DNS等。

image.png

蓝牙协议栈

同样,在蓝牙协议栈上也是相似的结构。

在此之前,我们先了解一下蓝牙架构实现方案之一——双芯片标准架构(Host & Controller)

image.png

蓝牙主机包括 HCI, 高层协议和应用程序;

蓝牙模块包含无线射频单元(负责数据和语音的发送与接收),基带与链路控制单元(信号的转化),链路管理单元(链路的建立,验证与配置等),主机控制器和蓝牙音频五个功能模块。

那其中每一层都涉及到,哪一些协议呢?我们换一个视角来看看

image.png

(图源自阿里云开发者社区@游客z6s77mfckwdx4)

通过对比蓝牙官网有关文档,我认为这是合理的。(例如:核心规范 - www.bluetooth.com/specificati…),因为网上有别的说法 —— 只有 Host 层才是蓝牙协议栈。

上图所有的内容,都是规范(Specifications),规范又包含了不同类型,一些是 protocol,一些是 profile (重点)的 ,而一整个我们称为。

结论

image.png

蓝牙协议栈中有很多规范(Specifications),规范又分为:核心规范(eg:HCI, SDP, GATT, ATT, LMP等),protocol 规范(eg:RFCOMM, AVDTP等),profile 规范(eg:HFP, AVRCP等),mesh 规范。后续的文章将会对这些规范进行详细的讲解。

参考

developer.aliyun.com/article/752…

www.cnblogs.com/shaobojiao/…