BT-4の蓝牙技术原理のBT协议の蓝牙核心协议の逻辑链路控制和适配协议(L2CAP)

本文深入解析蓝牙技术中的L2CAP协议,涵盖其在蓝牙核心协议中的作用、基本操作如信道标识符与分段重组、状态机运作、数据分组格式、信令及配置参数选项等内容。

书上这部分的小节逻辑性有点不强。。。

0. Overview

L2CAP主要负责高层协议复用,分段与重组,组管理,以及终端设备之间服务质量的传输。

  • L2CAP允许高层的协议和应用传输的L2CAP数据分组的最大长度为64K。
  • L2CAP只支持ACL一种链路类型,不支持SCO链路。
  • L2CAP依靠基带层上的完整性检查来保护传输的信息。且禁用ACL链路上的AUX1分组 ( 因其不支持完整性检查 )。
  • L2CAP具有其他通信协议的接口(如SDP, RFCOMM, TCS等),下图给出了L2CAP与其他协议的关系。
  • 若需提供可靠的传输,广播分组在L2CAP中是禁用的 ( 注意前提条件 ) 。
    在这里插入图片描述

1. 基本操作

两个蓝牙设备单元之间的ACL链路通过链路管理器来建立。基带协议保证了数|据分组传输的有序性,也提供了全双工的信道。但是并不是所有的L2CAP的通信都是双向的。组播和非双向业务(如视频业务)只需要单工信道而不需要双工信道。

L2CAP通过基带层定义的一些机制,为数据传输提供了一条可靠的信道。基带协议中规定信道的可靠性通过以下一些机制来保证:

  • 如果接收到请求,可以对数据进行完整性检查;可以对数据分组进行重发,直到接收到确认分组或者重发超过了一定的时限。由于有时候确认分组也可能会丢失,因此设置重发与超时是有必要的。
  • 如果需要提供可靠的传输,广播分组在 CAP中是禁用的,因为基带协议中使用1位的序列码(SEQN)来滤除重复的分组,而所有包含 L2CAP分组第一段的广播分组中该序列比特都是相同的。

1.1 信道标识符

L2CAP是建立在"信道"概念的基础之上。信道标识符(CID)表示的是一条L2CAP的逻辑信道端点的名称。每条 L2CAP逻辑信道的每个端点都由一个信道标识符来标识。下表中给出了信道标识符的说明。从 0x0001 到 0x003F 的标识符保留用作特殊的L2CAP功能,如:

  • 0x0001用于信令,用来创建一条面向连接的数据信道以及协商更改这些信道的特性;
  • 0x0002用于所有输入的无连接数据业务;
  • 空标识符0x0000被定义为一个非法标识符并不得用于任何目标端点;
  • 其他的标识符可以根据实际应用的需要,由这些应用来自由管理。

在本地设备和远端设备之间同时存在多条L2CAP信道的情况下,本地设备中这些不同的L2CAP信道端点将对应不同的CID。
CID的分配与特定设备有关,即使与一个本地设备相连的多个远端为各自信道端点分配了相同的 CID 值,该本地设备仍然能够区分这些设备和信道。
【这两句话注意区分:第一句是说在设备A,远端设备B之间存在a,b,c,d四条L2CAP信道,那么a,b,c,d信道端点在设备A中将有不同的CID;第二句话意思是设备A与远端设备A, B,C,D四个设备相连,那么在设备B,C,D中,其信道端点的CID相同,那么此时设备A仍然可以识别出B,C,D设备和他们与设备A之间的信道。】
在这里插入图片描述

1.2 分段和重组

为了提高传输效率,在 L2CAP中定义了分段和重组(SAR)的操作。

SAR 支持最大传输单元(MTU)的传输,该传输单元的长度要比基带分组的最大长度还要大。通过把包含高层协议的分组分配到多个基带分组上传输,可以降低系统开销。所有的L2CAP分组都可以分段在基带数据分组上传输。L2CAP本身并不执行分段和重组的操作,但是L2CAP分组的格式可以支持将分组调整到较小的物理帧的长度。

在发送端,高层协议分组被分成多个较小的数据块,这些数据块通过主机控制器接口(HCL)被传送到链路管理器。
在接收端,根据HCI提供的或者分组头中包含的信息,分段的数据被重新组合成完整的L2CAP。

其实分段和重组只使用了基带分组的开销很小。基带分组中,ACL链路数据分组的 有效荷载头 中的 L_CH 字段表明了该有效荷载 为 L2CAP 分组的开始段或者后续段。

(1)分段

  • 高层协议负责发往L2CAP层的分组长度在MTU之内;

  • L2CAP负责把这些分组分段,组成协议数据单元 (PDU) 发给下面协议层;

  • 若 L2CAP 直接运行在基带协议基础上,那 L2CAP 应用将把高层协议分组分段组成基带协议,便于无线信道来传输。

  • 若L2CAP运行在HCI上 ( 一般是这样 ),L2CAP应用将把已分段的数据块发送到主机控制器,然后这些数据块将被转换为基带分组。

注意!!!在与同一个L2CAP分组相关的所有L2CAP分段都被发送到基带层之前,不得再向同一个目的设备发送新的L2CAP分组。

(2)重组

基带协议对ACL分组的发送是按顺序的,并且通过16位 CRC 来确保数据的完整性。

通过自动重复请求(ARQ)机制,基带协议支持可靠的连接。基带控制器接收到ACL分组时,它或者在每个分组到达时即通知L2CAP层,或者在接收缓冲区已满或定时器超时时,将分组到达的消息通知L2CAP层。

L2CAP应用通过分组头中的长度字段来进行一致性校验,并舍弃那些与长度字段不相符的分组。如果对信道的可靠性没有要求,那么只需将长度不符的分组丢弃; 如果对信道可靠性有要求,还需要向更高的协议层通报

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值