MQTT协议分析—MQTT介绍和软件准备
MQTT协议是物联网中设备节点通讯最常用的协议之一,其全称为消息队列遥测传输(英语:Message Queuing Telemetry Transport)是ISO 标准(ISO/IEC PRF 20922)下基于发布 (Publish)/订阅 (Subscribe)范式的消息协议,可视为“数据传递的桥梁”它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,只要具备TCP/IP能力的设备都可以使用MQTT协议。
一、历史背景
IBM公司的安迪·斯坦福-**及Arcom公司的阿兰·尼普于1999年撰写了该协议的第一个版本。
IBM公司在2013年就向结构化资讯标准促进组织提交了 MQTT 3.1 版规范。
2017年8月9日,OASIS MQTT技术委员会宣布MQTT 5.0版现已公开发布,并将于9月8日前发表说明。
二、MQTT协议的特点
在进行数据传输时,MQTT协议不关心“负载”内容,无论你是传输文本、图片还是加密信息,在MQTT协议看来都是一样的二进制数据。
“轻量级”,MQTT 控制消息最小只有 2 字节的数据。
提供三种等级的消息传输服务质量,分别为“最多一次传输(只负责传输,发送过后就不管数据的传输情况)”、“至少一次传输(保证代理服务器一定收到了消息,但是可能收到了多次)”和“正好一次传输(保证数据传输成功,并且只传输了一次)”,QOS的值分别对应0、1、2,所对应的功耗和数据交互的步骤随服务质量的提高而增加。三种不同的服务质量分别对应不同场景,例如远程抄表和温湿度传感器可以选择“最多一次传输”/“至少一次传输”,因为在该场景下就算丢失/重复了几份数据也不会产生太大的影响,还能降低功耗;在计费场景下一般选择“正好一次传输“,防止重复计费。
使用“发布/订阅”消息模式,提供一对多的消息分发和应用解耦。
异常断开发生时能进行通知,遗嘱机制。
三、软件准备
1、 MQTT.fx
MQTT.fx是基于Java的Eclipse Paho编写的MQTT客户端。后面章节中我将带领大家使用该软件作为客户端去对接华为云设备接入服务或自己使用EMQ搭建的平台,从而分析MQTT从连接到发布/订阅中的数据流。
下载地址:https://mqttfx.jensd.de/index.php/download
2、 Wireshark
Wireshark是世界上最广泛使用的网络协议分析器。它使您可以从微观角度查看网络上发生的事情,并且是许多商业和非营利企业,政府机构和教育机构的事实上(通常是法律上)的标准。由于全球网络专家的自愿贡献,Wireshark的发展蒸蒸日上,并且是Gerald Combs在1998年启动的项目的延续。
之后的章节中,我将带领大家使用该软件抓取本地客户端基于MQTT协议进行通信时的网络数据包,带领大家分析一个MQTT数据包是如何基于TCP/IP协议构建出来的,甚至自己组装一系列的包,通过TCP/IP协议发出,进行MQTT通信。
下载地址:https://www.wireshark.org/#download
3、EMQ X Broker
EMQ X Broker 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构,发布订阅模式的开源 MQTT 消息服务器。
EMQ X Broker 在全球物联网市场广泛应用。无论是产品原型设计、物联网创业公司、还是大规模的商业部署,EMQ X Broker 都支持开源免费使用。
我们可以基于该软件搭建自己的MQTT服务器,用于深度体验MQTT通信中的代理服务器角色。
下载地址:https://www.emqx.io/cn/downloads#broker
- 点赞
- 收藏
- 关注作者
评论(0)