精述IBM的MQTT协议和MQTT-S协议
一.MQTT简介
MQTT (Message Queuing Telemetry Transport) 是由IBM研发的构建在TCP/IP之上的简单轻量的消息协议,目标使用场景为受限制环境,如低带宽、高延迟、不可靠网络,很适用于M2M和IoT中。它的竞争协议包括XMPP协议和IETF的CoAP协议。
MQTT协议最早于1999年发布第一版并被广泛使用在各个行业中,在2013年发布MQTT 3.1版本。
MQTT-S(MQTT for Sensor Networks)是专门为WSN(无线传感器网络,Wireless Sensor Network)设计的协议,是MQTT的修改版本,1.2版本于2014年推出,可用于zigbee网络。
The EVERYTHING IoT platform使用MQTT作为上百万连接产品的M2M协议。Facebook Messenger、Amazon Web Service也都使用了MQTT协议。
二.MQTT具体细节
MQTT消息报文的方式包括connect,disconnect,subscribe,unsubscribe,publish等(类似于HTTP请求行的方法字段)。值得注意的是,为了保持简单和轻量,MQTT提供的安全比较少,主要借助其他设施,如SSL协议和由应用程序自己解决。
MQTT的消息模型为publish-subscribe (发布-订阅模式),即设计模式中的观察者模式,接收者(subscriber)向中介(broker)提交订阅自己感兴趣的内容,发送者(broker)把消息发送给中介,再由中介发送给订阅者。
这种模式这种通信模式的好处是接收者和发送者轻耦合,双方都只需与中介打交道,不需要关心另一方是谁和在哪里,并且方便接收者、发送者数量的增加和减少,很适用于分布式环境中,典型模式如图1所示。
图1 典型的发布/订阅消息通信模型
把WSN融入传统网络的拓扑图如图2所示,
图2 WSN和传统网络的融合图
而把MQTT协议应用于传统网络中的拓扑模式如图3所示(结构与图2很相近,不同点在于传统网络中增加了broker的角色,充当中介,减轻了gateway的通信交互压力),其中WSN的gateway充当publisher的角色,把传感器的数据发布给传统网络中的用户。
图3 使用发布/订阅通信模式的WSN与传统网络融合图
而专门为WSN而设计的MQTT-S协议中,在WSN中进一步细化了角色,把终端传感器和执行器当作MQTT-S Client。从图中可以看出,MQTT-S协议用于WSN中传感器与WSN网关的通信,而MQTT协议用于WSN网关与传统网络中broker的通信。两个协议是可以互补,一起工作的。
图4 MQTT-SN的结构
而更具体地,在WSN中网关作为WSN传感器与传统互联网中broker的中间者,通信模式可分为透明传输和汇聚传输两种,如图4所示。
透明传输实现更简单,但是WSN中有多少终端,broker就会收到多少连接,而因为WSN中传感器、执行器数量众多,这种模式会给broker很大的连接压力。相比之下汇聚传输则不会有这个问题,所以有大量WSN终端时汇聚模式更合适。
图5 网关的透明传输和汇聚传输模式
精述IBM的MQTT协议和MQTT-S协议相关推荐
- RabbitMQ MQTT协议和AMQP协议
RabbitMQ MQTT协议和AMQP协议 1 序言... 1 1.1 RabbitMq结构... 1 1.2 RabbitMq消息接收... 4 1.3 Ex ...
- 【一文学会MQTT协议和mosquitto】
一文学会MQTT协议和mosquitto 一..MQTT的基本概念 二.mosquitto mosquitto基本概念 常用API 三.MQTT测试 EMQX 一..MQTT的基本概念 MQTT是一种 ...
- 物联网协议之一:MQTT协议和kafka
物联网协议之一:MQTT协议 MQTT 入门介绍 MQTT 入门介绍 | 菜鸟教程 微消息队列MQTT与RocketMQ/Kafka/RabbitMQ区别_jack361博客 (618条消息) web ...
- 如何用过滤器过滤HTTP协议和非HTTP协议编码
2019独角兽企业重金招聘Python工程师标准>>> 在编写web时,最苦恼的事情就是乱码了. 一直没怎么考虑过JSP第一句话中 <%@ page language=&quo ...
- OSI协议和TCP/IP协议笔记
1.OSI协议: 第7层应用层:OSI中的最高层.是用户与网络的接口.该层通过应用程序来完成网络用户的应用需求,如文件传输.收发电子邮件等.在此常见的协议有:HTTP,HTTPS,FTP,TELNET ...
- s7 200 java_java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...
本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...
- [Twisted] Protocols协议和Protocol Factories 协议工厂
Protocols 描述了如何异步处理网络事件.Twisted维护了许多协议的实现,如HTTP,Telent,DNS,IMAP.Portocols实现了IProtocol接口, IProtocol包含 ...
- MACA协议和CSMA/CA协议的区别
今天学计网802.11的时候想起了这个问题,很疑惑为什么基于MACA改进的CSMA/CA协议反而不能解决暴露站问题了.仔细翻了半小时课本,终于明白了.由于看到CSDN大部分博客讲的都是CSMA/CA和 ...
- 【csma/ca协议和csma/cd协议的matlab仿真详解】
首先你的熟悉csma/ca协议,csma/cd协议: csma/ca协议: 点击打开链接 csma/cd协议: 点击打开链接 这个课题有几个难点部分: 1.就是需要考虑各种情况,并对每一种情况都必须做 ...
最新文章
- java怎么修改fxml,JavaFX FXML修改列表
- Linux内存管理原理
- java整形怎么转字符串型_java整型与字符串互转
- Swift 与 JSON 数据
- C语言单片机等待询问_单片机很好玩8,温度太高就报警,制作一个智能室内温度湿度计...
- tesseract 使用说明
- ASP.NET 会话状态概览
- redisdemo php,一个简单的用redis做秒杀支撑的demo (PHP版)
- 多语言可视化编辑webControl 2.0版
- 21天通关python 磁力_利用python爬取天天看美剧磁力链接
- HTML5游戏引擎(十四)-颜色效果——混合模式 滤镜 颜色矩阵滤镜 矩阵数据说明
- CNKI知网查重账号和密码怎么申请
- c语言实现utf-8编码解码器
- Python第一阶段学习 day14
- Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型
- 曙光1620-G20装Windows server 2008教程
- Unity3D--Procedural Planets(天文绘图)
- Matlab镜像建模产生啸叫信号,基于MATLAB有噪声语音信号的处理最终稿(样例3)...
- 蚂蚁金服原副总裁漆远加盟复旦大学,任人工智能院长
- LORA模块 无线模式433 2.4G模块分析