Error: Connection refused:Unacceptable protocol version MQTT协议接入物联网平台

Error: Connection refused:Unacceptable protocol version

Desktop
x86-64 x86-64  | 
v1.9.6.win64.exe
x86 x86  | 
v1.9.6.win32.exe
ARM64 ARM64  | 
v1.9.6.arm64.exe

 目前MQTT主流版本有两个,分别是MQTT3.1.1和MQTT5。MQTT3.1.1是在2014年10月发布的,   而MQTT5是在2019年3月发布的。

 

 

https://www.cnblogs.com/duanxz/p/5414784.html

MQTT协议(Message Queuing Telemetry Transport),翻译过来就是“消息队列遥测传输” ,是IBM公司于1999年提出的,现在最新版本是3.1.1。MQTT是一个基于TCP的发布订阅协议,设计的初始目的是为了极有限的内存设备和网络带宽很低的网络不可靠的通信,非常适合物联网通信。

 

实现MQTT协议需要:客户端服务器端

  • MQTT协议中有三种身份:发布者(Publish)代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者
  • MQTT传输的消息分为:主题(Topic)负载(payload)两部分
    • Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload
    • payload,可以理解为消息的内容,是指订阅者具体要使用的内容

1 CONNECT – 连接服务端:客户端到服务端的网络连接建立后, 客户端发送给服务端的第一个报文必须是CONNECT报文

2 CONNACK – 确认连接请求:服务端发送CONNACK报文响应从客户端收到的CONNECT报文。 服务端发送给客户端的第一个报文必须是CONNACK。如果客户端在合理的时间内没有收到服务端的CONNACK报文, 客户端应该关闭网络连接。合理的时间取决于应用的类型和通信基础设施。

3 PUBLISH – 发布消息:PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。

4 PUBACK –发布确认:PUBACK报文是对QoS 1等级的PUBLISH报文的响应。

5 PUBREC – 发布收到( QoS 2, 第一步):PUBREC报文是对QoS等级2的PUBLISH报文的响应。 它是QoS 2等级协议交换的第二个报文。

6 PUBREL – 发布释放( QoS 2, 第二步):PUBREL报文是对PUBREC报文的响应。 它是QoS 2等级协议交换的第三个报文。

7 PUBCOMP – 发布完成( QoS 2, 第三步):PUBCOMP报文是对PUBREL报文的响应。 它是QoS 2等级协议交换的第四个也是最后一个报文。

8 SUBSCRIBE - 订阅主题:客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅。 每个订阅注册客户端关心的一个或多个主题。 为了将应用消息转发给与那些订阅匹配的主题, 服务端发送PUBLISH报文给客户端。 SUBSCRIBE报文也( 为每个订阅) 指定了最大的QoS等级, 服务端根据这个发送应用消息给客户端。

9 SUBACK – 订阅确认:服务端发送SUBACK报文给客户端, 用于确认它已收到并且正在处理SUBSCRIBE报文。

10 UNSUBSCRIBE –取消订阅:客户端发送UNSUBSCRIBE报文给服务端, 用于取消订阅主题。

11 UNSUBACK – 取消订阅确认:服务端发送UNSUBACK报文给客户端用于确认收到UNSUBSCRIBE报文。

12 PINGREQ – 心跳请求:客户端发送PINGREQ报文给服务端的。 用于:1. 在没有任何其它控制报文从客户端发给服务的时, 告知服务端客户端还活着。2. 请求服务端发送 响应确认它还活着。3. 使用网络以确认网络连接没有断开。

13 PINGRESP – 心跳响应:服务端发送PINGRESP报文响应客户端的PINGREQ报文。 表示服务端还活着。

14 DISCONNECT –断开连接:DISCONNECT报文是客户端发给服务端的最后一个控制报文。 表示客户端正常断开连接。

 

 

服务端返回码说明如下。

  • MQTT 3.1和3.1.1
     
    返回码返回信息原因
    0 0x00 Connection Accepted 连接成功。
    1 0x01 Connection Refused, unacceptable protocol version 服务器不支持设备端请求的MQTT协议版本。
    2 0x02 Connection Refused, identifier rejected clientId参数格式错误,不符合物联网平台规定的格式。例如参数值超出长度限制、扩展参数格式错误等。
    3 0x03 Connection Refused, Server unavailable 网络连接已建立成功,但MQTT服务不可用。
    4 0x04 Connection Refused, bad user name or password username或password格式错误。
    5 0x05 Connection Refused, not authorized 设备未经授权。
  • MQTT 5.0
     
    返回码返回信息原因
    0 0x00 Success 连接成功。
    128 0x80 Unspecified error 未指定错误。
    129 0x81 Malformed Packet 畸形报文。
    130 0x82 Protocol Error 协议错误。
    132 0x84 Unsupported Protocol Version 不支持的协议版本。
    136 0x88 Server unavailable 服务器不可用。
    137 0x89 Server busy 服务器繁忙。
    138 0x8A Banned 禁止访问。
    140 0x8C Bad authentication method 错误验证方法。
    141 0x8D Keep Alive timeout 保活超时。
    144 0x90 Topic Name invalid Topic名无效。
    147 0x93 Receive Maximum exceeded 超出接收最大值。
    148 0x94 Topic Alias invalid Topic别名无效。
    149 0x95 Packet too large 报文长度超出限制。
    150 0x96 Message rate too high 消息传输速率太高。
    151 0x97 Quota exceeded 超出限额。
    152 0x98 Administrative action 管理行为。
    153 0x99 Payload format invalid Payload格式无效。
    154 0x9A Retain not supported 不支持消息保留。
    155 0x9B QoS not supported 不支持的QoS。
    156 0x9C Use another server 使用另一台服务器。
    157 0x9D Server moved 服务器被移除。
    158 0x9E Shared Subscription not supported 不支持的共享订阅。
    159 0x9F Connection rate exceeded 超出连接速率。

 

posted @ 2023-10-07 11:02  emanlee  阅读(635)  评论(0编辑  收藏  举报