MQTT协议-CONNECT报文介绍

MQTT协议-CONNECT报文介绍

参考MQTT协议中文笔记:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html

Connect报文主要用于客户端连接服务器的,未涉及具体数据的传输,可以使用网络调试助手来连接阿里云平台,用十六进制格式发送这一串报文,来连接平台上的一个设备,使其显示在线

阿里云平台名词解释

在这里插入图片描述

CONNECT控制报文

报文由固定报头+可变报头+有效载荷组成,这个格式适合MQTT的大部分协议

在这里插入图片描述

在单片机中要发送CONNECT报文,需要转为十六进制再发送,下面是假设要发送的数据

在这里插入图片描述

固定报头

固定报头一般由两个字节组成,byte1和byte2

byte1的高4位为MQTT报文类型,低4位为用于指定控制报文类型的标志位

byte2为剩余长度,暂时不知

在这里插入图片描述

在这里插入图片描述

报文类型

在这里插入图片描述

可变报头

可变报头由协议名(Procotol Name)+协议级别(Procotol Level)+连接标志(Connect Flags)+保持连接(keep Alive)四个部分组成

1、协议名

已经固定好是MQTT,byte1和byte2表示协议名长度,为4个字节

在这里插入图片描述

2、协议级别

也已经固定好,十六进制为04

在这里插入图片描述

3、连接标志

占一个字节,只有最低位固定为0,其他位不固定,像用户名称User Name和密码Password这些一般都要的,所以可预设为1,则二进制可表示如下,转为十六进制是C2
在这里插入图片描述

4、保持连接

占两个字节,假如设置为100秒,则十六进制为00 64

在这里插入图片描述

可变报头的字符组合起来,则就为 00 04 4D 51 54 54 04 C2 00 64 ,共十个字节,基本固定

有效载荷

有效载荷由客户端标识符(Client Identifier)+用户名(User Name)+密码(Password)组成

在这里插入图片描述

设备名称和ProductKey可以在云平台的设备里获得,如

在这里插入图片描述

将设备名和ProductKey直接代入,可得

客户端ID:

在这里插入图片描述

用户名:

在这里插入图片描述

密码:

在这里插入图片描述

密码需要经过哈希加密,在线加密平台:http://encode.chahuo.com/

粘贴密码字符串后,点击HmacSHA1加密,需要输入密钥,该密钥可在云平台设备的三元组信息里获得

在这里插入图片描述

客户端ID进行发送要转为十六进制,需要在头部加上数据的长度,因为官方规定用户名必须是UTF-8编码字符串,而UTF-8编码规定:每一个字符串都有一个两字节的长度字段作为前缀,因此客户端ID头部加上的是 00 27,而不是单单的27

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将客户端ID、用户名和密码组合在一起,就得到了如下的数据,这是有效载荷的部分

在这里插入图片描述

将固定报头、可变报头和有效载荷组合在一起

在这里插入图片描述

整理过后就还有固定报头的剩余长度没有数据

在这里插入图片描述

剩余长度有复杂的规定,会出文章单独介绍,但这里可以简单的认为是该位置后面有多少个字节长度,经过计算,后面共有112个字节,转为十六进制是70,因此剩余长度可以填70,这样,Connect报文就组装好了,可通过此报文与阿里云平台连接

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MQTT中的CONNECTMQTT协议中的一种报文结构。它是客户端与服务器之间建立连接的第一个步骤。CONNECT报文包含了一些必要的参数,如协议版本号、客户端ID、保持连接时间等。通过发送CONNECT报文,客户端可以向服务器发起连接请求,并建立起持久化的连接。 CONNECT报文MQTT协议中扮演着非常重要的角色,它为客户端与服务器之间的通信打下了基础。通过CONNECT报文,客户端可以告知服务器自己的身份以及一些连接参数,如心跳间隔时间等。这样,服务器就可以根据这些信息来做相应的处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MQTT协议-CONNECT报文介绍](https://blog.csdn.net/weixin_46251230/article/details/129392102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MQTT - CONNECT报文](https://blog.csdn.net/weixin_52672120/article/details/112308318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [kafka-connect-mqtt:Kafka Connect MQTT连接器](https://download.csdn.net/download/weixin_42165508/18686527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值