[7] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNACK消息分析

原创 2015年06月14日 11:55:09

在上节中( [6] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNECT消息格式分析)我们分析了CONNECT消息格式,我们知道CONNECT消息是客户端发送出去的,作为对客户端的连接请求,服务器端同样会有一个消息的返回,这个消息就是CONNACK的消息。我们在发出去CONNECT消息后,如果WireShark抓包工具依然开启的话,将会抓到类似于下面的TCP消息,其16进制为:20 02 00 00,那么其代表什么意思呢?




首先我们来看CONNACK的消息格式。CONNACK消息没有消息负载(Payload),只有消息头:2个字节的固定消息头和2两个字节的可变消息头。总共4个字节

1. 固定消息头(Fixed Header): 16进制数据为:20 02

具体的协议格式,请见下面的表1

表1 – 固定消息头(Fixed Header)的格式

Bit

7

6

5

4

3

2

1

0

byte 1

MQTT Control Packet Type (2)

Reserved

 

0

0

1

0

0

0

0

0

byte 2

Remaining Length (2)

 

0

0

0

0

0

0

1

0


20表示是其当前的消息类型是:CONNACK
02 表示后面将跟着2个字节.


2.可变消息头(Variable Header): 16进制数据为:00 00

具体的协议格式,请见下面的表2

表2 – 可变消息头(Variable Header)的格式

 

描述

7

6

5

4

3

2

1

0

连接应答标志位

保留(没有使用)

SP1

byte 1

 

0

0

0

0

0

0

0

X

连接结果返回

byte 2

 

X

X

X

X

X

X

X

X



下面我们来分析其可变头的2个字节: 00 00

其中第一个00,目前没有什么特别的含义,是MQTT协议的保留字段,也许在将来的协议版本中会用到。

第二个字节的00 表示连接成功。MQTT协议对于返回的结果总共定义了6种类型(请见下面的表3): 连接接受,连接拒绝(不可接受的版本),连接拒绝(Client ID服务器不允许),连接拒绝(服务器不可达),连接拒绝(错误的用户名和密码),连接拒绝(客户端没有通过授权认证)。

表3 – 连接应答返回码值的含义

返回的连接码

描述

0

0x00 连接接受

连接接受

1

0x01 连接拒绝(不可接受的版本)

服务端不支持所连接的MQTT的协议

2

0x02 连接拒绝(Client ID服务器不允许)

Client ID符合UTF-8的标准,但是服务器不允许这个Client ID

3

0x03 连接拒绝(服务器不可达)

MQTT 服务器不可达

4

0x04 连接拒绝(错误的用户名和密码)

错误的用户名和密码

5

0x05 连接拒绝(客户端没有通过授权认证)

客户端没有通过授权认证

6-255

 

未来保留字段




这个消息格式简单吧,嘿嘿恭喜你在学习MQTT消息格式的旅途中又往前快速前进了一步,下章节,笔者将会继续讲解SUBSCRIBE消息格式,敬请关注和期待,谢谢.



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

Mqtt之连接确认消息ConnAck

可变报头当前会话Session Present功能:客户端确认服务端是否持有会话,从而保持会话状态的一致; 连接返回码ConnectReturnCode Netty实现类MqttConnAckVa...
  • yangguosb
  • yangguosb
  • 2017年11月27日 20:06
  • 57

MQTT协议详解,非常易懂

MQTT协议详解一 协议地址:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html...
  • y281252548
  • y281252548
  • 2016年02月18日 11:37
  • 32467

[2] MQTT,mosquitto,Eclipse Paho----mosquitto使用扫盲

既然要说后续系统都是围绕MQTT,mosquitto,Eclipse Paho展开,则在这里有必要先给大家简单说一下mosquitto的基本使用,扫一下盲。给大家简单介绍一下mosquitto在win...
  • chancein007
  • chancein007
  • 2015年06月01日 23:33
  • 4226

Android ReallySmall MessageBroker(基于MQTT)

原文地址:http://blog.sina.com.cn/s/blog_6c762bb30101bkfp.html 一、下载RSMB全称是ReallySmall MessageBroker。点击...
  • boonya
  • boonya
  • 2016年05月16日 16:09
  • 597

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

我们知道MQTT是一个物联网协议的一个规范,MQTT的协议最新的两个版本是:3.1.1和3.1.0 (1) 3.1.0的规范如下 http://public.dhe.ibm.com/software/...
  • chancein007
  • chancein007
  • 2015年06月12日 12:51
  • 3623

[3] MQTT,mosquitto,Eclipse Paho---如何使用 Eclipse Paho MQTT工具来发送订阅MQTT消息?

在上两节,笔者主要介绍了 MQTT,mosquitto,Eclipse Paho的基本概念已经如何安装mosquitto. 在这个章节我们就来看看如何用 Eclipse Paho MQTT工具来发送接...
  • chancein007
  • chancein007
  • 2015年06月10日 22:47
  • 12363

MQTT协议初接触

MQTT是IBM推出用于不同设备之间交换数据的轻量级通信协议,它可以为物联网的多种场景提供互连方案。比如在智能家居中,数据采集设备或者控制设备可以通过一台中心服务器交换数据,Android等移动终端也...
  • zwlforever
  • zwlforever
  • 2015年05月06日 20:26
  • 1548

EMQ (Erlang/Enterprise/Elastic MQTT Broker) - 百万级开源MQTT消息服务器

EMQ( Erlang MQTT Broker)全球业内领先的物联网MQTT消息连接服务供应 基于Erlang/OTP开发的MQTT消息服务器,具备百万级高并发、毫秒级低时延、分布式集群和高可靠性等特...
  • EMQTT
  • EMQTT
  • 2017年01月11日 18:18
  • 1510

[1] MQTT,mosquitto,Eclipse Paho----入门

MQTT,mosquitto,Eclipse Paho这三个单词陌生而又神秘。那么这三个单词究竟是什么意思,代表了什么技术,他们之间有关联吗?不着急,请听笔者慢慢给大家分享。...
  • chancein007
  • chancein007
  • 2015年06月01日 22:56
  • 6103

Paho MQTT 嵌入式c客户端研究笔记 (二)

paho.mqtt.embedded-c-master\MQTTPacket\samples,这个目录里面封装了发布消息、订阅消息的示例。运行pub0sub1,这个示例里面会去订阅主题消息、发布主题消...
  • rambomatrix
  • rambomatrix
  • 2017年03月22日 11:08
  • 5199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[7] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNACK消息分析
举报原因:
原因补充:

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