阿里云物联网——MQTT协议---CONNECT

什么是MQTT

1.1简介

MQTT的中文含义:消息队列遥测传输
MQTT的英文:Message Queuing Telemetry Transport
它是基于TCP/IP协议,为硬件性能低下的远程设备和网络情况糟糕的情况下设计发布的发布/订阅型消息协议。MQTT在空间和时间上,将接受者和发送者分离。

想要深入了解MQTT的 MQTT的中文文档

1.2 Connect连接报文

固定报头+可变报头+有效载荷
固定报头:必须存在,用于描述报头的类型,等级
可变报头:不一定存在,看报文类型
有效载荷:通信信息的存放地,会存放额外信息,如ID

1.2.1固定报头

固定报头的格式
在这里插入图片描述一共两个字节
控制报文的类型
控制报文的类型
当控制报文类型为CONNECT是固定报头的10进制表示为 1 0
1 指控制报文的类型,0 指标志位为零
控制报文类型的标志位
控制报文类型的标志位在这里插入图片描述PUBLISH使用的 DUP,QoS,RETAIN 后面会详细说明

1.2.2 可变报头

协议名(Potocol Name) 6个字节

MSBLSBMQTT
00044D515454

MSB,LSB 报文标识符

协议级别 1个字节
04
连接标志 1个字节
C2
保持连接(以秒表示为一个16位的字为单位的时间间隔)2个字节
00 64
在这里插入图片描述

是否需要可变报头
在这里插入图片描述

1.2.3 有效载荷

客户端标识符 Client Identifer
用户名 User Name
密码 Password

以阿里云物联网为例
客户端IDDeviceName|securemode=3,signmethod=hmacsha1|
客户端ID:MQTT_Devicel|securemode=3,signmethod=hmacsha1|
将转化为16进制
4D 51 54 54 5F 44 65 76 69 63 65 6C 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 61 31 7C
(46)0X2E(一共46个字节)

用户名DeviceName&ProductKey
用户名:MQTT_Devicel&a1n。。。。。。。
在这里插入图片描述
将其转化为16进制
4D 51 54 54 5F 44 65 76 69 63 65 6C 26 61 31 6E 64 73 55 31 45 6B 49 6B
(一共24个字节) 将其转化为16进制为 0x18

密码clientIddeviceNameproductKey#
(*表示DeviceName,#表示ProductKey)
在这里插入图片描述利用在线解码工具进行解码
在线解码工具
密码是由 HmacSHA1加密过的
在这里插入图片描述
将密钥复制下来
在这里插入图片描述将最后生成的密码转化为16进制
34 64 39 31 30 32 34 32 61 36 37 36 32 61 66 65 63 34 62 30 61 38 33 32 38 37 37 64 36 64 30 33 61 61 66 34 64 39 36 64 (40)0x28

最后的有效报头
00 2E 4D 51 54 54 5F 44 65 76 69 63 65 6C 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 61 31 7C 00 18 4D 51 54 54 5F 44 65 76 69 63 65 6C 26 61 31 6E 64 73 55 31 45 6B 49 6B 00 28 34 64 39 31 30 32 34 32 61 36 37 36 32 61 66 65 63 34 62 30 61 38 33 32 38 37 37 64 36 64 30 33 61 61 66 34 64 39 36 64

最终:固定报头+可变报头+有效载荷
10 7E 00 04 4D 51 54 54 04 C2 00 64 00 2E 4D 51 54 54 5F 44 65 76 69 63 65 6C 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 61 31 7C 00 18 4D 51 54 54 5F 44 65 76 69 63 65 6C 26 61 31 6E 64 73 55 31 45 6B 49 6B 00 28 34 64 39 31 30 32 34 32 61 36 37 36 32 61 66 65 63 34 62 30 61 38 33 32 38 37 37 64 36 64 30 33 61 61 66 34 64 39 36 64

7E表示可变报头和有效载荷的最终长度

在这里插入图片描述返回
CONNACK 20 02 00 00 表示连接成功
20 表示服务器到客户端,是固定报头,02是剩余长度
00 为连接确认标志
00 表示连接已被服务器接收
阿里云平台对应的设备同时会显示在线

CONNECT 已完成 完结 撒花。。。。欢迎讨论。。。

(有需要网络调试助手的朋友,可以评论,留下邮箱)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值