概要:
逻辑链路控制和适配协议(L2CAP),支持高层协议多路复用、数据分段和重组,并且支持传送服务质量信息。
本文件主要针对协议状态自动机、分组格式及构成相关内容进行描述
一、下面介绍L2CAP的几大功能:
1.协议复用
L2CAP应支持协议复用,因为基带协议不支持任何 ‘类型’ 域,而这些类型域则用于标识要复用的更高层协议。
L2CAP必须能够区分高层协议,例如,服务搜索协议,RFCOMM,和电话控制等。
2.分段与重组
与其它有线物理介质相比, 由基带协议定义的分组在大小上受到限制。输出与最大基带有效载荷(DH5分组中的341字节)
关联的最大传输单位( MTU )限制了更高层协议带宽的有效使用,而高层协议要使用更大的分组。
大 L2CAP分组必须在无线传输前分段成为多个小基带分组。
同样,收到多个小基带分组后也可以重新组装成大的单一的 L2CAP 分组。
在使用比基带分组更大的分组协议时,必须使用分段与重组( SAR )功能。
3.服务质量
L2CAP 连接建立过程,允许交换有关两蓝牙单元之间服务质量的信息。每个L2CAP设备必须监视由协议使用的资源并保证服务质量(QoS)的完整实现
。
4.组
许多协议包括地址组的概念。基带协议支持微微网, 微微网为能够使用同一时钟进行同步工作的一组设备。L2CAP 组概念可以实现在微微网上的有效协议映射。如果没有组概念,为有效管理组,高层协议就必须直接与基带协议和链路管理器打交道。
L2CAP适用范围:
1.L2CAP 不传输由 SCO链路所指定的音频数据。
2.L2CAP 不能进行可靠信道传输或保证数据完整性,即:L2CAP不会重发或数据校验。
3.L2CAP 不支持具有可靠性的广播信道。
4.L2CAP 不支持一个全局组名的概念。
二、 L2CAP主要操作
逻辑链路控制与适配协议(L2CAP)是以信道概念为基础的。每个L2CAP信道的端点有信道标识符(Channel Identifier,CID)来表示。
2.1 信道标识符
不同蓝牙设备的L2CAP层之间通信时建立在逻辑链路的基础上,这些逻辑链路被称为信道(channel),每条信道的每个端点都被赋予了一个信道标志(Channel Identifier,CID).CID是表示逻辑信道本地端设备的名字.从0x0001到0x003F的标志符保留用于特定的L2CAP功能,空标识符(0x0000)则定义为一个非法标识符,并且不得用于目标端,在本地设备与多个远端设备存在多个并发L2CAP信道的情况下,同一CID不得重新用作本地L2CAP信道端。
CID的分配与特定设备有关,一台设备可以独立于其他设备指定CID。L2CAP信道有三种类型:面向连接(Connection-Oriented,CO)信道,用于两个连接设备之间的双方通信;无连接(Connection-Less,CL)信道,用来向一组设备进行广播式的数据传输,为单项信道;信令(Signaling)信道,用于创建CO信道。
2.2 设备间操作
下图说明了不同设备之间的L2CAP实体间通信的使用方式.面向连接的数据信道提供了两设备间的连接,而CID则用于标识信道的每一端。无连接信道限制数据向单一方向的流动。这些信道用于支持一个信道”组”,在该信道组里发送端CID用于表示一个或多个远程设备。
面向连接的数据信道提供了两设备间的连接,而CID则用于标识信道的每一端。无连接信道限制数据向单一方向的流动。这些信道用于支持一个信道“组”,在该信道“组”里发送端CID用于表示一个或多个远程设备。因此保留了一些CID以备将来特殊用途使用。信号信道是一个保留信道的实例,固定的CID=0x0001。该信道用于创建和建立面向连接的数据信道,并可对这些信道的特性变化进行协商。L2CAP实体必须支持信号信道。另一CID则保留用于呼入的无连接数据通信,无连接的接收信道CID=0x0002.
建立不同类型的L2CAP连接的CID规则如下:
2.3 连接和运行模式
L2CAP Channels可运行在以下模式之一(1是默认模式)
1 基本L2CAP模式(Basic L2CAP Mode)
2 流量控制模式(Flow Control Mode)
3 重传模式(Retransmission Mode)
4 加强版重传模式(Enhanced Retransmission Mode)
5 流模式(Streaming Mode)
此外,L2CAP有以下几种连接类型:
A:CONNECTION-ORIENTED CHANNELS in basic L2CAP mode(面向连接,采用基本L2CAP模式)
B: CONNECTIONLESS DATA CHANNEL in basic L2CAP mode(无连接的,采用基本L2CAP模式)
C:CONNECTION-ORIENTED CHANNELS的连接类型分为:BASIC L2CAP MODE和RETRANSMISSION/FLOWCONTROL/STREAMING MODES这两种(面向连接,重传/流量控制/流模式)
这里只介绍模式 A :采用的是B-Frame(我们主从设备连接就是这个模式)
Length: 2 bytes,
Channel ID: 2 bytes, 对端目的信道
Information payload: (对应上层协议数据单元23个字节)
This contains the payload received from the upper layer protocol (outgoing
packet), or delivered to the upper layer protocol (incoming packet). The MTU
for channels with dynamically allocated CIDs is determined during channel
configuration . The minimum supported MTUvalues for the signaling PDUs。
看一个完整的数据抓包: