MQTT: The Standard for IoT Messaging

开场白

大概是这么个背景

比如小米智能家居目前是这么个流程:

  • 物联网设备通过家里的wifi连接到外网服务器

  • 在外网通过米家app控制就可以家里的物联网设备

其中服务器,app,物联网设备是通过MQTT协议进行消息传递的:

设备 MQTT角色
外网服务器 MQTT Broker
物联网设备 MQTT Client/Publisher
米家app MQTT Client/Subscriber

MQTT协议基础篇 将介绍MQTT 的基本概念(发布/订阅、客户端/代理)和基本功能(连接、发布、订阅),然后介绍MQTT协议的一些特征,包括:Quality of Service, Retained Messages, Persistent Session, Last Will and Testament, Keep Alive

安全性是 MQTT协议中的比较重要的部分,内容也比较多,将在后续的MQTT协议安全篇中介绍。

MQTT介绍

MQTT协议的官方介绍如下:

“MQTT is a Client Server publish/subscribe messaging transport protocol. It is light weight, open, simple, and designed so as to be easy to implement. These characteristics make it ideal for use in many situations, including constrained environments such as for communication in Machine to Machine (M2M) and Internet of Things (IoT) contexts where a small code footprint is required and/or network bandwidth is at a premium.“

Citation from the official MQTT 3.1.1 specification

MQTT 是客户端服务器发布/订阅消息传输协议。 具有轻量、开放、简单、易于实现等特性。这些特性使其非常适合在许多情况下使用,包括受限环境,例如在机器对机器 (M2M) 和物联网 (IoT) 环境中需要少量代码占用空间或网络带宽非常宝贵的环境中的通信。

值得一提的是,与 HTTP 等协议相比,MQTT是一种二进制协议,因此它在传输数据方面表现得更加出色。

历史

MQTT 协议由 Andy Stanford-Clark (IBM) 和 Arlen Nipper (Arcom/Cirrus Link) 于1999 年发明。他们需要一种通过卫星连接石油管道的协议,以最大限度地减少电池损耗带宽。两位发明者为未来的协议规定了以下几个要求:

  • 实现简单 - Simple implementation
  • 保证数据的服务质量 - Quality of Service data delivery
  • 轻量级/高效利用带宽 - Lightweight and bandwidth efficient
  • 数据未知 - Data agnostic
  • 持续的会话意识 - Continuous session awareness

目前这些目标仍然是 MQTT 的核心。 但是,该协议的主要重点已从专有嵌入式系统转变为开放物联网 (IoT) 应用。这种关注点的转变对首字母缩略词 MQTT 所代表的含义造成了很多混淆。简单讲 MQTT 不再被视为首字母缩略词,MQTT 只是作为协议的名称。

MQTT的全称是 MQ Telemetry Transport (MQ 遥测传输)

MQ是指 MQ 系列,IBM 为支持 MQ 遥测传输而开发的产品。当AndyArlen在 1999 年创建他们的协议时,他们以 IBM 产品命名。许多文章错误地将 MQTT 认为是一种消息队列(Message Queue)协议。显然,并不是。MQTT 不是传统的消息排队解决方案(尽管在某些情况下可以对消息进行排队)。

在接下来的十年里,IBM 在内部使用了该协议,直到 2010 年他们发布了 MQTT 3.1 作为免版税版本。从那时起,所有人可以实现并使用该协议。

OASIS 标准和当前版本

OASIS 是一个旨在推进标准的开放组织。在MQTT协议发布大约 3 年后, OASIS 宣布将对其进行标准化。标准化过程耗时约1年。2014 年 10 月 29 日,MQTT 成为正式批准的 OASIS 标准。 从 3.1 到 3.1.1 的次要版本更改表明对以前的版本所做的更改很少。

2019 年 3 月,OASIS 批准了新的 MQTT 5 规范。这个新的 MQTT 版本为 MQTT 引入了新功能,这些功能是部署在云平台上的 IoT 应用程序所需的。(部署在云平台上的 IoT 应用程序需要更高的可靠性和错误处理,以实现关键任务消息传递功能。)

TaQini’s Blog

欢迎关注我的博客,第一时间发布后续文章
TaQini’s Blog

参考链接

Introducing MQTT

物联网之MQTT协议详解基础篇(一)—— MQTT介绍相关推荐

  1. bt协议详解 基础篇(上)

    bt协议详解 基础篇(上) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...

  2. http发送16进制报文_阿里云物联网平台使用心得(25)MQTT协议详解UNSUBSCRIBE报文...

    题目 大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖.超子今天给大家介绍一下UNSUBSCRIBE报文. UNSUBSCRIBE报文 从上图中可知,UNSUBSCRI ...

  3. IoT:MQTT协议详解

    IoT -- (七)MQTT协议详解 转自:https://blog.csdn.net/anxianfeng55555/article/details/80908795 MQTT是什么? MQTT(M ...

  4. MQTT协议详解 一、MQTT简介

    文章目录 系列文章目录 前言 一.简述 二.主要特性 三.应用领域 四.常见术语 总结 系列文章目录 MQTT协议详解 一.MQTT简介 MQTT协议详解 二.MQTT控制包格式 MQTT协议详解 三 ...

  5. MQTT协议详解及v5.0实践——实践类

    本文主要包含了以下内容: 1)MQTT协议演进历史及协议特点,总结和分析MQTT协议族的优缺点,分析和总结了为什么相比于其他协议,MQTT适合IoT,业内支持现状等. 2)阿里云IoT MQTT3和5 ...

  6. MQTT协议详解 三、MQTT控制包(CONNECT)

    文章目录 系列文章目录 前言 CONNECT(客户端请求连接服务端) 一.固定包头(2字节) 二.可变包头(10字节) 协议名字(6字节) 协议等级(1字节) 连接标识(1字节) Clean Sess ...

  7. MQTT协议详解 二、MQTT控制包格式

    文章目录 系列文章目录 前言 一.MQTT控制包格式 二.固定包头 控制包类型 控制包类型标识 剩余长度 三.可变包头 数据包标识 四.载荷 系列文章目录 MQTT协议详解 一.MQTT简介 MQTT ...

  8. MQTT协议详解,非常易懂

    MQTT协议详解一 协议地址:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html 当然也有PDF版的,百度 ...

  9. mysql binlog协议_MySql-Binlog协议详解-流程篇

    MySql-Binlog协议详解-流程篇 MySql-Binlog在MySql主从不同方面发挥着不可或缺的作用,同时我们也能通过Binlog实时监控数据的变化.本系列就讲述了怎样接收并解析Binlog ...

最新文章

  1. 3D相机(1):1、了解
  2. 【网站建设】Linux上安装MySQL - 12条命令搞定MySql
  3. C# winform 后台控制删除动态生成的控件
  4. javascript 鼠标事件总结
  5. list dict 性能测试
  6. Spring框架设计
  7. python接口测试之requests详解_Python接口测试-requests库
  8. [2021 CSP-S提高组] 题解(廊桥分配+括号序列+回文+交通规划)
  9. python基础之网络基础
  10. vcneter5.5添加域用户权限
  11. java微信公众号支付开发平台_Java微信公众平台开发之公众号支付(微信内H5调起支付)...
  12. Navicat的使用,连表查询,python代码操作sql语句
  13. 博客迁移到sunface.io
  14. stm32 HAL 重映射
  15. Yolo opencv刻度尺识别 刻度读数识别 水尺识别 水位识别源码
  16. 银行从业如何备考,有什么刷题的APP?
  17. 【故障检测】基于 KPCA 的故障检测研究(Matlab代码实现)
  18. Oracle数据库字段翻译
  19. PHP微信开发素材管理,PHP微信开发包,微信开发SDK
  20. mysql启动失败 查看日志文件_mysql诊断启动问题、查看日志文件详解

热门文章

  1. Nmap使用教程图文教程(超详细)
  2. Leetcode 13.罗马数字转整数
  3. 高纳德( Knuth)随机置乱算法,洗牌算法,等概率打乱顺序
  4. 信息技术专业标准体系框架设计研究与思考
  5. Java Socket通信之TCP协议
  6. Android 开发(02)UI布局方式
  7. 笔记本开机默认关闭小数字键盘
  8. skype免费拨打规则
  9. Linunx系统挂载新磁盘的四种方式
  10. mongodb 的一些启动命令