物联网通信协议之MQTT

1、MQTT 协议的定义

MQTT 协议翻译成中文叫消息队列遥测传输,最早来自于IBM公司,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。它工作在TCP/IP协议上,具有轻量、简单、开放和易于实现的特点,广泛应用在物联网行业上,如在智能家居,智慧农业,智慧社区的设备中。2014年发布的MQTT v3.1.1是当前MQTT协议的最新版本。

2、MQTT几个特点

1、使用发布/订阅消息模式,提供一对多的消息发布,方便消息在设备间传递,有效解耦。

2、对负载内容屏蔽的消息传输;

3、使用 TCP/IP 提供网络连接,标准版本的MQTT是使用TCP连接进行数据推送,TCP提供IP环境下的数据可靠传输保证了MQTT传输的可靠性。

4、有三种消息发布服务质量:

    • “至多一次”,数据仅仅传输一次,收不到无所谓,常用在传感器上报的场景中,因为传感器的信息传递是连续的,这次收不下,还有下次
    • “至少一次”,发送设备可以发送多次消息,接收设备至少能收到一次,也可能收到多次。
    • “只有一次”,确保消息到达一次,消息不会多,也不会少,只有一次被终端设备接收。

5、传输数据量小,MQTT协议交换的数据量非常小,只有固定2个字节;

6、具有遗言机制和遗嘱机制,用于通知同一个主题下各方客户端,发送遗言的设备已经断开了连接。

3、消息中间件-消息代理(Broker)

MQTT 协议工作过程中需要一个消息服务器,也称为消息代理(Broker),将消息存放在若干队列中,在合适的时候再将消息转发给接收设备。当接收设备收到信息触发事件完成相对应的操作。它有四个功能:

  1. 【网络连接】,接受来自客户端的网络连接请求
  2. 【队列缓存消息数据】,保存客户端发布的数据信息
  3. 【断开网络】,处理来自客户端的订阅和退订请求
  4. 【消息数据转发】,向订阅的客户端转发数据信息

4、MQTT协议数据包结构

MQTT数据包由三部分构成:固定头、可变头、消息体

固定头存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识

可变头的内容因数据包类型而不同,较常的应用是作为包的标识

扫描二维码关注公众号,回复: 10285649 查看本文章

表示客户端收到的具体内容,有CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四种类型

发布了100 篇原创文章 · 获赞 120 · 访问量 69万+

猜你喜欢

转载自blog.csdn.net/haifengid/article/details/105182682