蓝牙----蓝牙协议栈L2CAP

2024-01-26 09:12
文章标签 协议 蓝牙 l2cap

本文主要是介绍蓝牙----蓝牙协议栈L2CAP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蓝牙协议栈----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入门教程》

这篇关于蓝牙----蓝牙协议栈L2CAP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646308

相关文章

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有