文档章节

关于MQTT协议的说明

xiaocui911
 xiaocui911
发布于 2017/04/01 12:05
字数 644
阅读 45
收藏 0

我们知道,QQ物联网是基于一种发布和订阅的一种通信协议,在我看来这或者就是MQTT协议,虽然我并没有去了解他。 首先,发布所在的平台一般是服务器端,而订阅的平台一般是设备端。他们主要是通过网络而发送消息的一种通信协议。server 端和client 端建立起来的连接统称会话(session),各种平台可以通过主题(TOPIC)来建立不同的通信。这些基本的先解释下,下面有关的术语就不再叙述。 1,数据格式 数据包的前两个字节表示这个包的大小,后面紧接着是UTF-8编码的内容。输入图片说明 2,MQTT控制包格式 他主要分为三个部分:固定的头部、可变的部分、以及负载。 2.1固定的头部 他主要包括控制包的类型以及相应的标记,剩下的就是保留部分。这里控制包类型主要是如下图所示: 输入图片说明 控制包的类型只是占了一个字节的高四位,而低四位主要是标记,这个标记主要是为了以后扩展用。 后面的字节就是保留字节了,主要是可变部分以及负载。 2.2可变部分 这一部分可变主要是MQTT协议对这一部分没有也是能正常通信的。变量的内容取决于数据包类型。可变报头的分组标识符字段在几种分组类型中是常见的。他们主要是:PUBLISH (where QoS > 0), PUBACK, PUBREC, PUBREL, PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK. SUBSCRIBE,UNSUBSCRIBE和PUBLISH(在QoS> 0的情况下)控制包必须包含非零16位数据包标识符。每当客户端发送这些类型之一的新数据包时,它必须为其分配一个当前未使用的数据包标识符。如果客户端重新发送特定的控制分组,则它必须在该分组的后续重新发送中使用相同的分组标识符。在客户端处理相应的确认分组后,分组标识符变得可用于重用。如下图所示:输入图片说明 2.3负载部分 如下图所示,列出了有效载荷包: 输入图片说明

今天就先写一部分,剩下的部分比较重要,需要再多揣摩几次再发吧。

© 著作权归作者所有

共有 人打赏支持
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
私信 提问
MQTT协议的初浅认识之连接建立

MQTT百科 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布...

亚林瓜子
2018/09/20
0
0
centos-MQTT服务器搭建-mosquitto1.4.14

centos-MQTT服务器搭建-mosquitto1.4.14 Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流2017-12-251 阅读 linux Mosquitto mosquitto是一款实现了 MQTT v3.1 协议的开源的消息代理服务...

Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流
2017/12/25
0
0
MQTT协议的初浅认识之推送订阅

背景 了解MQTT怎么建立连接之后,现在重点来了解MQTT怎么推送,订阅两个方面。 概念 先见一张图: 这张图是依旧借鉴HiveMQ的图,来讲述MQTT协议的推送和订阅的过程。推送和订阅,我们很容易理...

亚林瓜子
2018/09/21
0
0
MQTT协议-MQTT协议简介及协议原理

MQTT协议-MQTT协议简介及协议原理 Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流2017-12-261 阅读 原理 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种...

Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流
2017/12/26
0
0
搭建IM服务 so easy

现在很多网站、APP都通过IM服务来实现消息推送及数据即时同步功能,即时通讯组件逐渐成为产品的标配。目前国内有很多成熟稳定的第三方即时通讯服务厂家,比如:融云。使用这些专业的服务可以...

一等兵
2016/03/22
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
11分钟前
0
0
Apollo配置详细步骤(Windows环境)

一. 准备工作 1.下载 apollo 安装包 下载链接:http://activemq.apache.org/apollo/download.html 2.下载 java JDK 安装包 ( apollo 依赖 java 环境) 下载链接:http://www.oracle.com/techn......

morpheusWB
32分钟前
0
0
聊聊flink的AsyncWaitOperator

序 本文主要研究一下flink的AsyncWaitOperator AsyncWaitOperator flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/operators/async/AsyncWaitOperator.java ......

go4it
58分钟前
1
0
Java并发编程基础(四)

ThreadGroup 在主线程创建得线程,如果没有给他指定线程组,那么创建的线程,默认和主线程同一个线程组。线程组可以底下可以是线程,也可以实线程组。 构建线程组的方法: private ThreadGr...

chendom
今天
2
0
Scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部