为了提高文章的SEO效果,我将重新构建以下内容,保持原有信息的基础上,确保文章的相似度低于30%。
BLE的空中包格式有多种,其中常见的PDU命令包括数据包、广播包和控制包。PDU和MTU之间的区别在于,PDU是蓝牙数据信道上的传输单元,而MTU是ATT层与L2CAP层之间的最大数据长度限制。此外,DLE是指Data Length Extension,它允许在BLE连接建立后动态更改数据长度。
在BLE中,重传是通过BLE ACK机制实现的。当Master发送数据包给Slave时,通过比较前面传输的数据包的序列号(SN)和下一个期望接收的数据包的序列号(NESN),来确定是否需要重传。如果SN和NESN不匹配,表示Slave已经收到了前一个数据包,Master会增加SN并发送新的数据包;如果SN和NESN匹配,表示Slave未收到前一个数据包,Master需要进行重传。
对于空包和普通数据包的格式,空包的payload为空,而普通数据包包含Data header和LL header。LL header中定义了Link layer支持的control PDU。在数据包的传输过程中,通过比较相邻数据包的NESN和SN的值,可以确定下一个数据包的NESN和SN。
Payload Length或Data Length是指数据包中信息负载的长度。在蓝牙4.0/4.1中,一个包的长度限制为20个字节。而在蓝牙4.2之后,Payload Length字段使用8位来表示长度,最大可达251字节。此外,BLE连接建立后可以通过Data Length Extension(DLE)来动态改变数据长度。
另外,L2CAP length字段表示后面信息负载的长度,而MTU是ATT层与L2CAP层之间可以交互的最大数据长度。蓝牙规范中定义了LL data length和L2CAP length两个长度字段,可以通过相应的命令来动态改变LL data length和MTU size,而L2CAP length无法动态改变。
在BLE中,L2CAP CID是逻辑通道的标识符,BLE使用固定的通道编号。BLE L2CAP Signaling Channel支持的PDU命令包括Security Manager Protocol(SMP)和Attribute Protocol(ATT)。SMP用于配对和密钥分发,而ATT用于应用层数据传输。
以上是关于BLE空中包的解析,接下来的应用层数据解析将涉及到GATT和profile的定义。请注意,下面是一个真实数据包示例,其中BLE空中包采用小端模式。
希望这次的复述满足了您的要求。如果还有其他需要修改的地方,请随时告诉我。