【MTQQ】剩余长度总结及协议抓包分析

1、剩余长度总结

如下图,MQTT固定协议头中,从第二字节开始是剩余长度。
1)剩余长度表示哪部分的长度:可变报头(如果有)+ 有效载荷区域(如果有);
2)剩余长度用那几个字节表示:从第二个字节开始,最多4个字节,它是变长的;
在这里插入图片描述
3)剩余长度如何实现变长:
剩余长度字段使用一个变长度编码方案,对小于128的值它使用单字节编码;
而对于更大的数值则按下面的方式处理:每个字节的低7位用于编码数据长度,最高位(bit7)用于标识剩余长度字段是否有更多的字节,且按照大端模式进行编码,因此每个字节可以编码128个数值和一个延续位,剩余长度字段最大可拥有4个字节。

例如:两个字节最为表示为0xFF、0x7F,换算方法为:高字节0xFF中最高位(bit7)为标志位,去掉后为0x7F,低字节最大为0x7F,即0~0x7F共128个数,计算方法0x7F*128+0x7f=16383。
通用的计算公式为:(高字节-0x80)*128+低字节

4)剩余长度最大可以是多大:
在这里插入图片描述
剩余长度字段使用一个变长度编码方案,且按照大端模式进行编码
当使用1个字节时,其取值范围为0(0x00)~127(0x7f)。
当使用2个字节时,其取值范围为128(0x80,0x01)~16383(0xff,0x7f)。
当使用3个字节时,其取值范围为:16384(0x80,0x80,0x01)~2097151(0xFF,0xFF,0x7F)。
当使用4个字节时,其取值范围为2097152(0x80,0x80,0x80,0x01)~268435455(0xFF,0xFF,0xFF,0x7F)。
理论上可以发送最大256M的报文

最大值计算:268435455 = (0xFF-0x80)128128*128+ (0xFF-0x80)128128+ (0xFF-0x80)*128+127

通用的计算公式为:
2个字节:(Byte1-0x80)*128 + Byte0
3个字节:(Byte2-0x80)128128 + (Byte1-0x80)128 + Byte0
4个字节:(Byte3-0x80)128128
128 + (Byte2-0x80)128128 + (Byte1-0x80)*128 + Byte0

2、抓包分析

2.1 过滤出mqtt

在这里插入图片描述

2.2 Connect命令抓取

在这里插入图片描述

2.3 Publish命令抓取

在这里插入图片描述

对应:PUBLISH-发布消息
在这里插入图片描述

2.4 Subscribe命令抓取

在这里插入图片描述

2.5 Disconnect命令抓取

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭老二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值