MQTT协议
MQTT是轻量级基于代理的发布/订阅的消息传输协议,它可以通过很少的代码和带宽和远程设备连接。例如通过卫星和代理连接,通过拨号和医疗保健提供者连接,以及在一些自动化或小型设备上,而且由于小巧,省电,协议开销小和能高效的向一和多个接收者传递信息,故同样适用于称动应用设备上。
Mqtt协议特点:
1.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
2.协议简单,最小的头部只需2个字节,特别适合于嵌入式中。
3.对负载内容屏蔽的消息传输。
4.使用 TCP/IP 提供网络连接。
5.有三种消息发布服务质量:
(1) “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
(2) “至少一次”,确保消息到达,但消息重复可能会发生。
(3) “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
6. 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
PUB/SUB 模型
Mqtt结构
固定头部,使用两个字节,共16位:
bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
byte 1 |
Message Type |
DUP flag |
QoS level |
RETAIN |
||||
byte 2 |
Remaining Length |
消息类型
使用4位二进制表示,可代表16种消息类型
Mnemonic |
Enumeration |
Description |
Reserved |
0 |
Reserved----保留待用 |
CONNECT |
1 |
Client request to connect to Server----客户端连接请求 |
CONNACK |