浅谈物联网标准协议mqtt

简介:

MQTT已然是物联网(Internet of Things,IoT)不可或缺的标准协议。虽然HTTP是网页的史诗标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通,之前的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(Message Queuing Telemetry Transport 消息队列遥测传输协议)。

说到轻量级我们可以从我司的一个物联网网关设备的,mqtt连接代码资源占用量上来又个直观了解:

从上图可以看出mqtt连接协议的FLASH资源占用量为1253字节RAM占用量为389字节,这个量级对于低端32位MCU或者一般的8位MCU都是可以接受的。

数据传输模式(发布订阅模式):

MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议,我们通过一张图来解释一下这个发布订阅模式的数据传输流程:

客户端之间不直接进行数据通信,也互不知道对方的存在,他们通过一个服务器一个代理(mqtt broke)来进行数据转发;如上图所示,第一步Subscriber客户端向mqtt broke订阅tpoic;第二步Publisher客户端向mqtt broke推送topic;第三部mqtt broke将topic数据推送给Subscriber,一次数据传输完成 。

控制报文列表:

下面我们通过mqtt协议文档的介绍给出mqtt控制报文的相关介绍:

MQTT的6种14项控制报文类型:

1.connect客户端请求连接服务端

2.connack服务端确认连接请求

3.publish发布消息

4.puback发布确认

5.pubrec发布收到

6.pubrel发布释放

7.pubcomp发布完成

8.subscribe订阅主题

9.suback订阅确认

10.ubsubscribe取消订阅

11.unsuback取消订阅确认

12.pingreq心跳请求

13.pingresp心跳响应

14.disconnect断开连接

想要深入了解mqtt协议需要从协议的文档或者源码入手,下面一些连接有mqtt官方网站信息、mqtt协议的中英文版本文档,以及github上开源的各种语言mqtt协议解析源码;与大家学习共勉。

附 mqtt协议的相关资料:

A.协议相关文档:

http://mqtt.org/

http://mqtt.org/documentation

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/csprd02/mqtt-v3.1.1-csprd02.html

https://en.wikipedia.org/wiki/MQTT

https://pan.baidu.com/s/1f05BO9N4TEkLW7_7su6eUA 密码:7vfj(mqtt协议文档)

B.各种语言源码:

https://github.com/search?utf8=%E2%9C%93&q=mqtt&type= (gtihub上mqtt相关开源代码js;python;java;c++;c;php;GO;C#;HTML;Shell各种语言)

C.公网web测试客户端:

http://api.easylink.io/tools/mqtt/?

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180610G1ITK800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券