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/