一.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协议相关推荐

  1. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

  2. 【一文学会MQTT协议和mosquitto】

    一文学会MQTT协议和mosquitto 一..MQTT的基本概念 二.mosquitto mosquitto基本概念 常用API 三.MQTT测试 EMQX 一..MQTT的基本概念 MQTT是一种 ...

  3. 物联网协议之一:MQTT协议和kafka

    物联网协议之一:MQTT协议 MQTT 入门介绍 MQTT 入门介绍 | 菜鸟教程 微消息队列MQTT与RocketMQ/Kafka/RabbitMQ区别_jack361博客 (618条消息) web ...

  4. 如何用过滤器过滤HTTP协议和非HTTP协议编码

    2019独角兽企业重金招聘Python工程师标准>>> 在编写web时,最苦恼的事情就是乱码了. 一直没怎么考虑过JSP第一句话中 <%@ page language=&quo ...

  5. OSI协议和TCP/IP协议笔记

    1.OSI协议: 第7层应用层:OSI中的最高层.是用户与网络的接口.该层通过应用程序来完成网络用户的应用需求,如文件传输.收发电子邮件等.在此常见的协议有:HTTP,HTTPS,FTP,TELNET ...

  6. s7 200 java_java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

  7. [Twisted] Protocols协议和Protocol Factories 协议工厂

    Protocols 描述了如何异步处理网络事件.Twisted维护了许多协议的实现,如HTTP,Telent,DNS,IMAP.Portocols实现了IProtocol接口, IProtocol包含 ...

  8. MACA协议和CSMA/CA协议的区别

    今天学计网802.11的时候想起了这个问题,很疑惑为什么基于MACA改进的CSMA/CA协议反而不能解决暴露站问题了.仔细翻了半小时课本,终于明白了.由于看到CSDN大部分博客讲的都是CSMA/CA和 ...

  9. 【csma/ca协议和csma/cd协议的matlab仿真详解】

    首先你的熟悉csma/ca协议,csma/cd协议: csma/ca协议: 点击打开链接 csma/cd协议: 点击打开链接 这个课题有几个难点部分: 1.就是需要考虑各种情况,并对每一种情况都必须做 ...

最新文章

  1. java怎么修改fxml,JavaFX FXML修改列表
  2. Linux内存管理原理
  3. java整形怎么转字符串型_java整型与字符串互转
  4. Swift 与 JSON 数据
  5. C语言单片机等待询问_单片机很好玩8,温度太高就报警,制作一个智能室内温度湿度计...
  6. tesseract 使用说明
  7. ASP.NET 会话状态概览
  8. redisdemo php,一个简单的用redis做秒杀支撑的demo (PHP版)
  9. 多语言可视化编辑webControl 2.0版
  10. 21天通关python 磁力_利用python爬取天天看美剧磁力链接
  11. HTML5游戏引擎(十四)-颜色效果——混合模式 滤镜 颜色矩阵滤镜 矩阵数据说明
  12. CNKI知网查重账号和密码怎么申请
  13. c语言实现utf-8编码解码器
  14. Python第一阶段学习 day14
  15. Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型
  16. 曙光1620-G20装Windows server 2008教程
  17. Unity3D--Procedural Planets(天文绘图)
  18. Matlab镜像建模产生啸叫信号,基于MATLAB有噪声语音信号的处理最终稿(样例3)...
  19. 蚂蚁金服原副总裁漆远加盟复旦大学,任人工智能院长
  20. LORA模块 无线模式433 2.4G模块分析

热门文章

  1. MYSQL增量备份和全量备份脚本分享
  2. 泛型lua的for循环以及lua的特殊的dowhile循环
  3. Mysql索引优化实例讲解
  4. LeetCode - Easy - 155. Min Stack
  5. 悲观锁和乐观锁_面试必备之乐观锁与悲观锁
  6. Linux内核 scatterlist介绍
  7. C++笔试记录 2021年9月16日
  8. 换位思考的最高境界是换待遇,所以,换位思考就是空话!!!
  9. .NET Framework各版本比较
  10. 架构设计 例子和实践