目录
一.seq number和IV index的关系
根据上一篇文章的介绍可知,蓝牙mesh消息的network层pdu包含了三字节的seq number字段。seq number标识了是此条mesh消息的唯一性,用于防止重放攻击,每发送一条新mesh消息,seq number + 1。那么问题来了,seq的大小只有三字节,sig spec提到过,每5s发送一条mesh消息的话,那么2.6年之后,seq number就用满了,这个时候就需要给seq number进行“扩容”,可以理解为向上进一位,向上进位的部分就是IV index,IV index是4字节,因此用于保证消息唯一性的“标识”就由3字节变为了7字节,用户正常使用,5万亿年也用不满。那么sig mesh在设计时,为什么不将IV index直接设置到network pdu中呢?因为mesh是基于ble的广播信道,4.2协议基础上的广播信道的数据长度有限。IV index为4字节长度,对于mesh来说,每一包消息都带着完整的IV index太重了,没有那么多的可用长度留给IV index用,因此在network层的pdu上只包含了IV index的最低有效位,叫做IVI字段。
图1