概述
什么是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个字节
MSB | LSB | M | Q | T | T |
---|---|---|---|---|---|
00 | 04 | 4D | 51 | 54 | 54 |
MSB,LSB 报文标识符
协议级别 1个字节
04
连接标志 1个字节
C2
保持连接(以秒表示为一个16位的字为单位的时间间隔)2个字节
00 64
是否需要可变报头
1.2.3 有效载荷
客户端标识符 Client Identifer
用户名 User Name
密码 Password
以阿里云物联网为例
客户端ID:DeviceName|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 已完成 完结 撒花。。。。欢迎讨论。。。
(有需要网络调试助手的朋友,可以评论,留下邮箱)
最后
以上就是重要小猫咪为你收集整理的阿里云物联网——MQTT协议---CONNECT什么是MQTT的全部内容,希望文章能够帮你解决阿里云物联网——MQTT协议---CONNECT什么是MQTT所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复