简介:
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/?
领取专属 10元无门槛券
私享最新 技术干货