| SERAIL |
|
|
SDP | RFCOMM | ATT | SMP |
L2CAP | |||
HCI | |||
LMP、LLCP | |||
调制、解调 |
LLCP:是BLE的链路管理。其中利用信道来区分是ADVERTISING、DATA。
其中ADVERTISING 参考Version 4.2 [Vol 6, Part B]2.3 ADVERTISING CHANNEL PDU。描述了广播信道的PUD , 主要是广播、扫描请求。扫描应答、连接请求。
其中DATA参考Version 4.2 [Vol 6, Part B]2.4 DATA CHANNEL PDU。对于DATA的PDU又按照报文头的标识分为Data和Control。
Data报文将透传到L2CAP中,使用的HCI的CAL Data的格式进行上报。
其他的事件借用HCI中的BLE事件数据包、命令数据包、命令控制来完成交互。
其中包括5个工作模式。工作模式之间的转化见下图:从而保证了BLE的单链接。
对于BLE的面向连接的思想从而而来,对于后续的链路均不需要进行连接就可以直接进行通讯,这是相对BREDR差距较大的地方。
LMP:是BERDR的链路管理单元,负责连接的连接和简单配对的流程。参考Version 4.2 [Vol 2, Part C] 。值得关注的是经典蓝牙的配对基本流程都是在这个层完成的。对于蓝牙的配对安全等问题都在这里完成,对于PINCODE码配对中未使用了椭圆曲线的非对称密钥对,所以在空口报文可以进行暴力破解,而其他的方式空口报文无法进行暴力破解。
工作模式分为3中分别是待机、休眠、连接。
HCI:FLOW CONTROL、DATA FORMATS、COMMANDS 、 EVENTS。4中类型的报文,参考Version 4.2 [Vol 2, Part E]。
Data Formats 是透传给L2CAP报文的。
Commands:分为BREDR、BLE两种,主要是一些控制指令。
Events:分为BREDR、BLE两种,是对命令执行结果或者事件的上报。
L2CAP:是对上层业务的分类进行ID定义,参考Version 4.2 [Vol 3, Part A]。其中一个关键的信息是就是信道,参考Version 4.2 [Vol 3, Part A]2.1 CHANNEL IDENTIFIERS,对于信道的描述,值得注意的是BREDR的连接方式都需要先对信道信道连接后才可以方式L2CAP以上的服务,每一个连接对应一个上层服务。而BLE采用的是单链接固定信道设计,所以可以直接通过几个固定的信道访问上层服务。
需要注意的是信道0x0001和信道0x0005分别是BREDR和BLE的信令信道,用于L2CAP的自身操作。
RFCOMM:使用到经典蓝牙的范畴是采用TS07.10进行简单的修改完成了。其中主要是链路的控制和抽象,从而实现多连接的操作。一个有效的数据交互需要先建立连接->数据交互->断开连接。
SDP:使用到经典蓝牙的范畴目前从官方的文档来看是实现服务查询。其中服务氛围属性和值。可以值查询属性也可以查询值,也可以两者同时查询,从中属性利用ID进行标识,ID的来源需要参考蓝牙的网站获取。值的类型份多种,详情参考Version 4.2 [Vol 3, Part B]3 DATA REPRESENTATION。
ATT:使用在BLE范畴中,主要是对服务的查询和数据的收发,值得一提的是BLE的数据收发专业术语统称为数据库的读写,至于数据可以是如何读写的请阅读官方的文档。
SMP:是在用在BLE的配对,这是BLE的配对和核心,由于BLE是面向连接的所以在使用BLE连接成功之后是采用SMP要进行秘钥的交互。值得一提的是BLE的4.0和4.2的差别是引入了非对称秘钥的计算,从而保证了加密的安全性。对于预防中间人攻击的问题请阅读其他的文档。请参考Version 4.2 [Vol 3, Part H]