MQTT-----控制报文格式

前言

最近回顾了MQTT协议,更深入的了解到了它的数据发送过程,在此记录一下

CONNECT数据组成

固定报头+可变报头+有效载荷

固定报头

每个MQTT控制报文都包含一个固定报头。一般情况下为:10 ??

Bit76543210
byte 1MQTT控制报文的类型用于指定控制报文类型的标志位
byte 2...剩余长度

 可变报头

某些MQTT控制报文包含一个可变报头部分。它在固定报头和负载之间。可变报头的内容根据报文类型的不同而不同。可变报头的报文标识符(Packet Identifier)字段存在于在多个类型的报文里。一般情况下为:00 04 4D 51 54 54 04 C2 00 64

Bit7 - 0
byte 1报文标识符 MSB
byte 2报文标识符 LSB

有效荷载

某些MQTT控制报文在报文的最后部分包含一个有效载荷。它是我们需要关注的核心内容,也是我接下来要说明的:

1、阿里云注册设备

2、获取设备证书

{
  "ProductKey": "k0av3***Y9",
  "DeviceName": "bigfly",
  "DeviceSecret": "18e***fd1045f825fac2e0360237173"
}

* 表示设备名称:DeviceName

# 表示密钥:ProductKey

客户端ID : *|securemode=3,signmethod=hmacsha1|
用户名 : *&#
密码 :clientId * deviceName * productKey#

(1)带入数据,转十六进制

客户端ID:bigfly|securemode=3,signmethod=hmacsh1|

十六进制:00 27 62 69 67 66 6C 79 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 31 7C 

用户名:bigfly&k0av3pYS9Y9

十六进制:00 12 62 69 67 66 6C 79 26 6B 30 61 76 33 70 59 53 39 59 39 

hmacsha1哈希加密:2c904a85684b6df0a83cbb75c3b557bac4e98e27
十六进制:00 28 32 63 39 30 34 61 38 35 36 38 34 62 36 64 66 30 61 38 33 63 62 62 37 35 63 33 62 35 35 37 62 61 63 34 65 39 38 65 32 37 

前面两个字节是为了遵循规则UTF-8:表示后面的字节数

(2)整合数据

客户端ID+用户名+hmacsha1哈希加密

00 27 62 69 67 66 6C 79 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 31 7C 
00 12 62 69 67 66 6C 79 26 6B 30 61 76 33 70 59 53 39 59 39 
00 28 32 63 39 30 34 61 38 35 36 38 34 62 36 64 66 30 61 38 33 63 62 62 37 35 63 33 62 35 35 37 62 61 63 34 65 39 38 65 32 37 

CONNECT控制报文

1、固定报头+可变报头+有效载荷

10 ??  +  00 04 4D 51 54 54 04 C2 00 64 + 00 27 62 69 67 66 6C 79 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 31 7C 00 12 62 69 67 66 6C 79 26 6B 30 61 76 33 70 59 53 39 59 39 00 28 32 63 39 30 34 61 38 35 36 38 34 62 36 64 66 30 61 38 33 63 62 62 37 35 63 33 62 35 35 37 62 61 63 34 65 39 38 65 32 37 

??:剩余长度  ?后面还有几个字符

0X71

10 71 00 04 4D 51 54 54 04 C2 00 64 00 27 62 69 67 66 6C 79 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 31 7C 00 12 62 69 67 66 6C 79 26 6B 30 61 76 33 70 59 53 39 59 39 00 28 32 63 39 30 34 61 38 35 36 38 34 62 36 64 66 30 61 38 33 63 62 62 37 35 63 33 62 35 35 37 62 61 63 34 65 39 38 65 32 37 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一口气吃不成胖子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值