[4] MQTT,mosquitto,Eclipse Paho---MQTT消息格式分析概述

原创 2015年06月12日 12:51:14

我们知道MQTT是一个物联网协议的一个规范,MQTT的协议最新的两个版本是:3.1.1和3.1.0

(1) 3.1.0的规范如下
http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

(2) 3.1.1的规范如下
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718029

规范3.1.0和3.1.1还是有不少的区别。比如可变头部中,在3.1.0的规范中,其关键字是,“MQISdP”

表1. MQTT V3.1规范可变消息头的前8个字节

  Description 7 6 5 4 3 2 1 0
Protocol Name
byte 1 Length MSB (0) 0 0 0 0 0 0 0 0
byte 2 Length LSB (6) 0 0 0 0 0 1 1 0
byte 3 'M' 0 1 0 0 1 1 0 1
byte 4 'Q' 0 1 0 1 0 0 0 1
byte 5 'I' 0 1 0 0 1 0 0 1
byte 6 's' 0 1 1 1 0 0 1 1
byte 7 'd' 0 1 1 0 0 1 0 0
byte 8 'p' 0 1 1 1 0 0 0 0

而在MQTT V3.1.1的规范中,其可变消息的头的协议名称的关键字是“MQTT”.如下图所示意.

表2. MQTT V3.1.1可变消息头的前6个字节

 

描述

7

6

5

4

3

2

1

0

协议名称

byte 1

Length MSB (0)

0

0

0

0

0

0

0

0

byte 2

Length LSB (4)

0

0

0

0

0

1

0

0

byte 3

‘M’

0

1

0

0

1

1

0

1

byte 4

‘Q’

0

1

0

1

0

0

0

1

byte 5

‘T’

0

1

0

1

0

1

0

0

byte 6

‘T’

0

1

0

1

0

1

0

0

Protocol Level

 

描述

7

6

5

4

3

2

1

0

byte 7

Level (4)

0

0

0

0

0

1

0

0


规范主要描述了消息的通用格式,消息的命令,消息流动等等的规范和规则。在前面的四个章节,我们对MQTT有了一个感性的大概认识,在接下来的系列文章,我将带大家把MQTT的下面14种命令消息通过抓包软件(WireShark)并结合具体的规范和大家全部过一遍。 注意,因为我用的Eclipse Paho API的java库,支持MQTT 3.1.1 的版本,且mosquitto也支持3.1.1的版本,所以本系列所有的抓包都会是基于MQTT 3.1.1的规范,而不是MQTT 3.1的规范,请大家注意。下面的表格描述了MQTT的14中不同的消息类型。

表3. MQTT的14种消息类型(Command message)

名字

信息流方向

描述

Reserved

0

Forbidden

Reserved

CONNECT

1

Client to Server

Client request to connect to Server

CONNACK

2

Server to Client

Connect acknowledgment

PUBLISH

3

Client to Server

          or

Server to Client

Publish message

PUBACK

4

Client to Server

          or

Server to Client

Publish acknowledgment

PUBREC

5

Client to Server

          or

Server to Client

Publish received (assured delivery part 1)

PUBREL

6

Client to Server

          or

Server to Client

Publish release (assured delivery part 2)

PUBCOMP

7

Client to Server

          or

Server to Client

Publish complete (assured delivery part 3)

SUBSCRIBE

8

Client to Server

Client subscribe request

SUBACK

9

Server to Client

Subscribe acknowledgment

UNSUBSCRIBE

10

Client to Server

Unsubscribe request

UNSUBACK

11

Server to Client

Unsubscribe acknowledgment

PINGREQ

12

Client to Server

PING request

PINGRESP

13

Server to Client

PING response

DISCONNECT

14

Client to Server

Client is disconnecting

Reserved

15

Forbidden

Reserved


在接下来的章节我们将会逐一个给大家用WireShark抓包,并给大家一个一个分析其协议,敬请期待和关注,谢谢。

版权声明:本文为博主原创文章,未经博主允许不得转载。

MQTT基础——Part 2. 发布/订阅模式

MQTT基础——Part 2. 发布/订阅模式作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs本文是《MQTT基础》系列博...
  • chszs
  • chszs
  • 2016年06月21日 18:25
  • 9129

MQTT协议之使用Future模式订阅及发布(使用fusesource mqtt-client实现)

fusesource提供三种mqtt client api: 阻塞API,基于Futur的API和回调API。其中,回调API是最复杂的也是性能最好的,另外两种均是对回调API的封装。 我们下面就简单...
  • tianwei7518
  • tianwei7518
  • 2015年01月21日 19:59
  • 6116

MQTT协议实现Eclipse Paho学习总结一

原链:http://blog.csdn.net/yangzl2008/article/details/8861069 一、概述 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息...
  • zhangsheXIN_
  • zhangsheXIN_
  • 2014年12月01日 11:41
  • 1431

酷炫MQTT实现消息推送

首先在实现本功能之前我们需要储备一下预备知识,大家可以看我的前两篇文章以及官网,了解MQTT的基本常识: MQTT入门篇MQTT服务器Mosquitto安装及使用MQTT官网在步入正题之前先给大家发...
  • github_33304260
  • github_33304260
  • 2017年06月24日 22:50
  • 5309

MQTT mosquitto的初步学习

一、安装mosquitto服务
  • kuailebeihun
  • kuailebeihun
  • 2014年05月07日 22:44
  • 2817

[8] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之SUBSCRIBE(消息订阅)消息分析

我们在上几节的协议分析中,发送连接的请求用的是Eclipse Paho MQTT工具,那么笔者这一次改一下,咱们这次用代码来发送Subscribe的MQTT消息,请注意,下面的代码是基于Eclipse...
  • chancein007
  • chancein007
  • 2015年06月16日 12:36
  • 6304

[9] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之SUBACK(消息订阅应答)消息分析

在上一节中(MQTT消息格式之SUBSCRIBE(消息订阅)消息分析),客户端发送了订阅的消息,这个时候,服务器端收到订阅主题的MQTT消息之后,肯定需要给一个应答,这个应答信息就是SUBACK(消息...
  • chancein007
  • chancein007
  • 2015年06月17日 22:51
  • 2741

[5] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNECT消息格式分析

在“[3] MQTT,mosquitto,Eclipse Paho---如何使用 Eclipse Paho MQTT工具来发送订阅MQTT消息?”一文中我已经和大家简单讲述了如何使用Eclipse P...
  • chancein007
  • chancein007
  • 2015年06月12日 23:20
  • 4045

[10] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之Publication(消息发布)之QoS==0

在MQTT协议中,消息的发布相对来说比较复杂一些,因为里面牵涉到了QoS(服务质量)和Retained(是否正服务器端存储消息)已经Persistence(当网络故障,在本地客户端存储信息)。其中最为...
  • chancein007
  • chancein007
  • 2016年07月05日 00:23
  • 2203

使用org.eclipse.paho.client.mqttv3实现mqtt 消息队列

  • 2017年12月15日 18:25
  • 7KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[4] MQTT,mosquitto,Eclipse Paho---MQTT消息格式分析概述
举报原因:
原因补充:

(最多只允许输入30个字)