Logical Link Control and Adaptation Layer Protocol (L2CAP)
L2CAP 运行在 HCI 之上的 Host ,实现 Host 更高层(GAP、GATT、APP)和低层协议栈之间传输数据。
该层负责在 Host 和协议栈之间把交换的数据进行分割( segmentation )和重组( reassembly )以提供协议的多路处理能力。L2CAP 允许更高级别的协议和应用程序发送和接收高达 64KB(实际受限于蓝牙设备实际内存)的上层数据包(L2CAP 服务数据单元,SDU)。
图1. L2CAP 层数据传输示意图
蓝牙低功耗协议栈支持在链路层将 L2CAP PDU 分割( segmentation )和重组( reassembly )。这种分段允许 L2CAP 和构建在 L2CAP 之上的更高级协议(如属性协议 ATT )使用更大的有效负载,从而减少与较大数据传输不断拆分开销。当使用分片时,较大的数据包直接被分割成多个链路层数据包,并由对等设备的链路层重新组合。
图2. L2CAP 分割重组数据包
L2CAP PDU 的大小决定了属性协议最大传输单元( Attribute Protocol Maximum Transmission Unit ( ATT_MTU ))。默认情况下,LE 设备 L2CAP PDU 的大小为 27 字节,意味着在单个连接事件数据包可以传输的 LE 数据包的最大字节。在这种情况下,L2CAP 协议头为 4 字节,ATT_MTU...