蓝牙协议栈----L2CAP
- L2CAP的功能
- 术语介绍
- L2CAP信道
- L2CAP的工作模式
- 经典蓝牙的分段和分解过程
L2CAP—逻辑链路控制和适配层协议
L2CAP的功能
- 经典蓝牙的L2CAP层实现了协议复用、数据分段与重组、封装调度等操作。
- BLE的L2CAP层是经典蓝牙L2CAP层的简化版本:
在基础模式下,不执行分段和重组,不涉及流程控制和重传机制,仅使用固定信道进行通信,
在LE令牌流程控制模式下,实现了流程控制,执行数据分段和重组,使用动态信道进行通信。
包括资源管理器和信道管理器
资源管理:
分段和重组:对APP层的消息(SDU)进行分段,传输到L2CAP。
重传和流控制
封装与调度
分段和重组:对PDU进行分组,传输到HCI层。
通道管理:
用逻辑通道来区分,使用相同物理信道的是哪个上层协议
术语介绍
- SDU:服务数据单元,L2CAP与上层交换的数据包。
- MTU:表示L2CAP层的最大可传输单元,代表L2CAP与上层交换的数据包
限制了应用层与L2CAP层之间传输数据的最大长度
普通L2CAP模式时:SDU(MTU位)+L2CAP头(4位)组成PDU的Payload最大的长度 默认23+4=27 - PDU:协议数据单元,包含L2CAP协议信息字段、控制信息、上层信息数据的数据包,代表L2CAP与下层交换的数据包
- MPS:L2CAP层PDU的有效数据Payload最大长度,该参数限制了单个PDU的长度(最大的PDU)
BLE的L2CAP层在基础模式下通常不执行分段和重组机制原理为:
PDU被设计为较小的固定大小,通常等于链路层的最大传输单元(MTU),因此不需要对上层应用层数据进行分割或重组。
L2CAP信道
CID | 代表高层协议 | 信道功能 | 信道类型 |
---|---|---|---|
0x0004 | 属性协议信道 | 用于收发属性协议层的数据,代表BLE应用层通信所传输的数据 | 固定信道 |
0x0005 | 信令信道 | 处理应用层发送的命令 | 固定信道 |
0x0006 | 安全管理协议信道 | 处理加密、配对和绑定数据 | 固定信道 |
0x0020 - 0x0003E | 蓝牙官方编码信道 | 固定信道 | |
0x0040 - 0x0007F | 令牌连接模式的通信信道 | 用于L2CAP的LE令牌流程控制工作模式 | 动态信道 |
其中广播数据不适用于任何一个L2CAP信道
对于密令信道而言BLE只支持连接参数的更新,以及COC连接和断开(COC是使用在LE令牌流程控制模式时使用的)
L2CAP的工作模式
工作模式 | 适用蓝牙 |
---|---|
默认工作模式 | 传统蓝牙、BLE |
流程控制模式 | 传统蓝牙 |
重传模式 | 传统蓝牙 |
增强型重传模式 | 传统蓝牙 |
数据流模式 | 传统蓝牙 |
LE令牌流控制模式 | BLE |
• 基础模式为默认工作模式,L2CAP层不执行流程控制,对数据不执行分段和重组操作,
• 其他五种模式均使用了流程控制或重传机制,需要执行分段和重组操作。
不同的工作模式,其数据帧格式略有不同
经典蓝牙的分段和分解过程
当出现MTU大于MPS时候,需要L2CAP层对上层SDU进行拆包成一个个小PDU,这是传统蓝牙的分段和分解功能。
• SDU(APP层的信息)被分割成MTU大小的若干段,传入L2CAP,加入L2CAP的Header,组成PDU。
• PDU(L2CAP层)被分割成MPS大小的若干段,传入HCI。
学习参考:
认识BLE 5协议栈 —— 逻辑链路控制与适配协议层 – Hey, You (sunyouqun.com)
Bluetooth技术学习笔记 ——L2CAP之概述_l2cap的分段与重组-CSDN博客
BLE中L2CAP层基本功能分析 - 不回本不改名 - 博客园 (cnblogs.com)
谷雨《CC2640R2蓝牙5.0入门教程》