mqtt协议详解_阿里云物联网平台使用心得(16)MQTT协议详解CONNECT负载

1f7e7a5893c32d62e8f2c1b92956385c.png

题目

大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖。上一篇文章,超子给大家介绍了,如何在阿里云物联网平台上建立产品和设备,以及获取三元组信息的方法,那么今天超子就详解下CONNECT报文中的负载。

物联网平台的官方说明都在左侧导航产品文档下物联网设备与接入中,内容非常多,基本涵盖了物联网平台使用中的方方面面,在介绍负载的时候,我把相关的信息总结一下,因为产品介绍文档中比较分散,所以就不带着大家看产品文档了,有兴趣的话,大家可以自己去看看。

(1)产品文档中介绍了阿里云物联网平台的域名和端口号,超子总结如下

域 名: *.iot-as-mqtt.cn-shanghai.aliyuncs.com

端口号: 1883

其中*号需要替换成自己三元组中的ProductKey

373ad1f0af653e1699abe6dff8e9fc4d.png

三元组信息

那么按上图三元组中的信息,域名就是 a12dTIroTJC.iot-as-mqtt.cn-shanghai.aliyuncs.com

(2)接下来是客户端ID的构成,超子总结如下

客户端ID :*|securemode=3,signmethod=hmacsha1|

其中*号需要替换成自己三元组中的DeviceName ,按上图三元组中的信息进行替换

客户端ID就是:D001|securemode=3,signmethod=hmacsha1|

长度共计38字节,实验的时候我们需要发16进制的数据。并且简化书写,去掉0x,然后还要在最前面加上两个字节,表示客户端ID 的长度,最终结果如下

00 26 44 30 30 31 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

(3)接下来是用户名的构成,超子总结如下

用户名 : * (注意不要把&符号丢了)

其中*号需要替换成自己三元组中的DeviceName ,其中#号需要替换成自己三元组中的ProductKey

那么按上图三元组中的信息替换 ,用户名就是 : D001&a12dTIroTJC

长度共计16字节,我们还是简化书写16进制,并且最前面加入表示长度的两个字节,最终结果如下

00 10 44 30 30 31 26 61 31 32 64 54 49 72 6F 54 4A 43

(4)接下来是密码的构成,超子总结如下

密码需要进行一次hmacsha1加密 ,用三元组中的DeviceSecret做为秘钥对clientId*deviceName*productKey#加密

其中*号需要替换成自己三元组中的DeviceName ,其中#号需要替换成自己三元组中的ProductKey

那么按上图三元组中的信息替换 ,结果如下

clientIdD001deviceNameD001productKeya12dTIroTJC

然后DeviceSecret是jBiRd3INpmL0zrb8XgURzP6JJOmFWMdJ,网上找个在线加密网站,进行一次hmacsha1加密 ,如下图所示

34457ed0d93e864cbd701b9f08546c08.png

加密

加密后的结果简化书写16进制,并且最前面加入表示长度的两个字节,密码的最终结果如下:

00 28 35 33 66 65 37 33 36 65 64 37 35 34 38 32 34 39 32 33 34 64 37 38 64 33 38 33 66 34 66 38 31 38 64 63 64 39 36 61 37 65

到此负载中的3个信息都构建好了,那么把3个信息按顺序,先是客户端id,然后是用户名,最后是密码,组合在一起,最终数据,简化书写16进制如下

00 26 44 30 30 31 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 10 44 30 30 31 26 61 31 32 64 54 49 72 6F 54 4A 43 00 28 35 33 66 65 37 33 36 65 64 37 35 34 38 32 34 39 32 33 34 64 37 38 64 33 38 33 66 34 66 38 31 38 64 63 64 39 36 61 37 65

总共100个字节,到此为止,CONNECT报文的负载,也算是完成了,那么下篇文章,超子就用网络调试助手软件,实际测试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值