抓包后MESH消息的解析
包解析 Network PDU的结构定义如上图所示: (1)IVI是 用来认证加密Network PDU的IV Index的最低位。 (2)NID域包含一个7bit的 network identifier,用来提供一种简单的方式查找加密认证Network PDU所使用的Encryption Key和Privacy Key。NID是派生于Network Key,与Encryption Key和Privacy Key关联。 (3)CTL位判断消息是否是控制消息,当该位是1时,表示消息是control message。该位为0,则表示消息位access message。 当CTL为0时,NetMIC是32-bit的值,下传输层包含access message。 Access Message:该类消息与model挂钩。 当CTL为1时,NetMIC是64-bit的值,下传输层包含control message。 Control Message:与蓝牙mesh网络操作有关的消息,例如心跳(heartbeat)和friend的请求消息。 (4)TTL是一个7-bit的值,表示消息跳转的次数。 0=没有被中继且不会被中继。 1=已经被中继过,不会再次中继 2~126 = 可能被中继过,仍将继续中继 127= 没有被中继,可以被中继 (5)SEQ:该成员是一个24-bit的值,与IV index联合使用,对于每一个network PDU来说,这是一个由节点产生的唯一的值。 (6)SRC:源地址,必须是unicast address。可以根据源地址识别产生该消息的element。 源地址由产生该消息的element设置,并且在传输过程中不会被中继节点接触(可以理解为对中继节点不可见)。 (7)DST:目的地址,16-bit值,可以时unicast address、virtual address、group address。 在传输过程中,不会被中继节点的网络层接触(理解为对中继节点网络层不可见)。 (8)Transport PDU:传输的字节数据,当CTL设置为1时,该域最大96 bit。当CTL为0时,最大长度为128 Bits。Transport PDU 是被产生该消息的下传输层设置,不能被网络层改变。 (9) NetMIC:该域长度取决于CTL,当CTL为0时,该域为64-bit;当CTL为1时,该域为32-bit。 NetMIC用于确认DST和Transport PDU没有被破坏。 NetMIC会被每一个传输、中继该消息的节点的网络层设置。
|