MQTT协议
MQTT协议(Message QueuingTelemetry Transport)
MQTT特点
·精简,不添加可有可无的功能;
·发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递;
·允许用户动态创建主题,零运维成本;
把传输量降到最低以提高传输效率;
·把低带宽、高延迟、不稳定的网络等因素考虑在内;
·支持连续的会话控制;
·理解客户端计算能力可能很低;
·提供服务质量管理;
假设数据不可知,不强求传输数据的类型与格式灵活性
协议原理
- 三种身份
-
- 发布者(publish)
-
- 代理 (Broker)(服务器)
-
- 订阅者(Subscribe)、
MQTT消息内容
- 主题(Topic)
- 负载(payload)
MQTT消息类型
.CONNECT-连接服务端
CONNACK-确认连接请求
· PUBLISH-发布消息
·PUBACK-发布确认(Q0S1)
· PUBREC-发布收到(Q0S2)
· PUBREL一发布释放(Q0S2)
·PUBCOMP-发布完成(QOS2)
MQTT的QOS
·QoS 0:
。“最多一次”,消息发布完全依赖底层TCP/IP网络。分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会有第二次发送。
· QoS 1:
。“至少一次”,确保消息可以到达,但消息可能会重复。QoS 2:
.“只有一次”,确保消息只到达一次。例如,这个等级可用在·系统中,这里如果消息重复或丢失会导致不正确的收费。
MQTT消息类型
·SUBSCRIBE-订阅主题
·SUBACK-订阅确认
·UNSUBSCRIBE -取消订阅
·UNSUBACK-取消订阅确认
·PINGREQ-心跳请求
· PINGRESP-心跳响应
·DISCONNECT -断开连接
MQTT报文格式
| Fixed header | 固定报头﹐所有控制报文都包含|
Variable header | 可变报头﹐部分控制报文包含
Payload | 有效载荷﹐部分控制报文包含
项目 | Value项目 | Value
-------- | -----
电脑 | $1600
手机 | $12
导管 | $1
| Fixed header | 固定报头﹐所有控制报文都包含 |
|Variable header | 可变报头﹐部分控制报文包含 |
| Payload | 有效载荷﹐部分控制报文包含 |