TCP连接MQTT

MQTT TCP/IP
liguilini
发布时间: 2018-10-17
阅读: 2384

一、MQTT简介

首先我们需要知道MQTT是什么,全称Message Queuing Telemetry Transport,即消息队列遥测传输协议。是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。


二、MQTT消息结构1.jpg

1、         固定头部两字节,16bit,其中byte1用于控制报文类型,byte2表示剩余长度,包含可变头部和消息体。DUP flag位是打开标志,保证消息可靠传输,默认0只占用一位。QoS占用两位,可以表示MQTT消息的等级,即0至多一次1至少一次2只有一次。RETAIN位表示消息是否需要持久保存,需要保证后来者收到消息时使用持久化,使该位为1即可,否则置零。如下,是MQTT中的14种消息事件类型

2.jpg

2、         可变头部包含协议名称、版本号、连接标志、用户、保持时间等,协议名称MQTT V3的名称是MQIspd。

3、         Payload是消息体,客户端ID、用户名、密码等信息在payload


三、TCP连接MQTT

在开启了用户名登录的MQTT服务器上,连接消息的结构为固定头部+可变头部+payload。V3版本的为Header Flags + Msg Len + Protocol Length + Protocol Name + Version + Connect Flags + Keep Alive + Client ID Length + Client ID + User Name Length + User Name + Password Length + Password,换成16进制就是10 长度 00 06 4d 51 49 73 64 70 03 c2 01 2c 客户端ID长度 客户端ID 用户名长度 用户名 密码长度 密码。即可连接成功。其他的消息类似即可在支持TCP的设备上完成MQTT的连接和消息发送





原创作品,未经权利人授权禁止转载。详情见转载须知 举报文章

点赞 (0)
liguilini
评论(0)

登录后可评论,请 登录注册

相关文章推荐
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回

我要举报该内容理由

×
请输入您举报的理由(50字以内)