(LL)链路层之设备发现(数据通信)

在一个连接里,设备通过在连接事件中发送数据包来相互通信。

广播报文和数据报文的最大差别在于报头的格式和净荷的长度。

数据报文的净荷可以为0~31字节不等。但传给控制器的未加密数据包最多只能携带27字节的数据。

一、数据报头

(LL)链路层之设备发现(数据通信)

1.逻辑链路标识符(LLID)用于判断数据报文属于下列哪种类型:

①链路层控制报文(11)        用于管理连接

②高层报文开始(10)            也用于一个完整报文(即传输数据小于27个字节)

③高层报文延续(01)

(LL)链路层之设备发现(数据通信)

2.***(SN)

为了使数据传输变得可靠,所有的数据包均带有***。

连接建立后,第一个数据包的序号为0;每次发送新的数据包时,其***与上个数据包不同,该值在0和1之间交替。

3.下一个预期***(NESN)

NESN的发送方用其通知对方自己期望接受的数据包的***。

可以将NESN作为一个标志来判断数据包是被正确接受还是需要重传。

(LL)链路层之设备发现(数据通信)

4.更多数据位(MD)

用来通知对端设备自己还有其他的数据准备发送。

把更多数据位设为0,设备可以快速、优雅地结束连接事件,从而节省能量。

二、加密(AES)

在连接时,可以对净荷中的数据进行加密,确保数据的机密性,从而抵御攻击者。

加密数据包还包含一个数据包计数器,用来防止重放攻击。

数据包计数器是一个39位的数,在启用加密时,包计数器总是从零开始,每发送一个新的非空数据包就增加1。

当发送加密的净荷时,将针对密文净荷计算CRC。数据包的报头和长度不会被加密。

三、消息完整性校验(MIC)

消息完整性校验用于验证数据包的发送者。

(LL)链路层之设备发现(数据通信)