MQTT协议中信息长度MSG len字段分析


截图自:

主要是说数据字节长度的计算:

每个字节由1个持续位和7个数据位组成:如果持续位为1,表示接下来的一个字节仍然表示长度的一部分

7个数据位表示的数据     0-127   共计128个数字

所以如上图的表格所示 1个字节,2个字节,3个字节,4个字节的数据范围

切记:MQTT长度的表示范围 最多使用4个字节  故这里存在着数据长度的限制  (不过真心牛掰! 试试QQ你就知道,QQ能一次性传送的长度真没多长,有一次传了个代码,直接告诉我太长了,太,长,了`````) 256MB够你嗨的一塌糊涂了!  ibm开发的挺不错的协议!

然后举个栗子,比如信息数据的长度是367

367/128=2....111

111+128=239---》0xEF  (因为之后还有一个字节数据 2 ,所以需要加上128  mqtt采用的大端字节序)

2---》0x02

所以367--->0xEF 0x02

其实刚开始没写这篇博文的时候有点疑惑

大端字节序应该高位数据放在低地址啊   但是为什么0xEF写在低位,后面是0x02 ?

之后想明白了  367先是运算转换成0xEF02  这样来看的话  0xEF  不就是在高位么  写在低位不是正确的大端字节序表示么!!!

典型的逆向思维 先假设这是正确的 再倒退过程!:)


附注:解析一个叫织图的app有所收获  整理如上!

附下载链接:http://mqtt.org/




posted @ 2016-10-11 21:08  cloudren2020  阅读(961)  评论(0编辑  收藏  举报