MQTT 简介:

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。

MQTT 特点:

MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务
(1) 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。

这一点很类似于XMPP,但是MQTT的信息冗余远小于XMPP,,因为XMPP使用XML格式文本来传递数据。

(2) 对负载内容屏蔽的消息传输。

(3) 使用TCP/IP提供网络连接。

主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。

(4) 有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。

“至少一次”,确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。

(5) 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。

这就是为什么在介绍里说它非常适合"在物联网领域,传感器与服务器的通信,信息的收集",要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。

(6) 使用Last Will和Testament特性通知有关各方客户端异常中断的机制。

Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。

Testament:遗嘱机制,功能类似于Last Will。

MQTT 设计规范:

由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:

(1)精简,不添加可有可无的功能;
(2)发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递;
(3)允许用户动态创建主题,零运维成本;
(4)把传输量降到最低以提高传输效率;
(5)把低带宽、高延迟、不稳定的网络等因素考虑在内;
(6)支持连续的会话控制;
(7)理解客户端计算能力可能很低;
(8)提供服务质量管理;
(9)假设数据不可知,不强求传输数据的类型与格式,保持灵活性。

MQTT 客户端和服务器:

MQTT客户端:

发布者(Publish),订阅者(Subscribe)
1:可以发布(publish)其他客户端订阅的消息
2.可以订阅 (subscribe)其他客户端发布的信息

MQTT服务器(Broker):

1:处理来自客户端的订阅和退订请求
2.向订阅的客户转发应用程序消息

MQTT消息发布服务质量(QoS):

1.至多一次:(QoS == 0
2.至少一次 (QoS == 1),确保信息到达,消息可能重复发生
3.只有一次 (QoS == 2) 确保信息到达一次

)

这幅图中 发布者(publish)为 温度计,订阅者为(Subscribe) 笔记本和手机,服务器(Broker) MQTT-Broker.

下一篇说怎么在 windows 配置一个简单的 MQTT 服务器(Broker)

什么是[ MQTT ]协议?相关推荐

  1. micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台

    MicroPython使用MQTT协议接入OneNET云平台 [复制链接] 本帖最后由 hanyeguxingwo 于 2016-11-22 11:33 编辑 之前使用Arduino+ESP8266使 ...

  2. 一文读懂物联网 MQTT 协议之基础特性篇

    一.前言 上个月有个读者问我物联网 MQTT 协议实战相关的问题,我说后面会搞,没想到不知不觉一个月了,太忙了,再怎么忙答应的事情还是要给读者一个交代,所以就有了此文. 二.MQTT 协议概要 2.1 ...

  3. mqtt android简书,iOS MQTT协议笔记

    前言 接到任务项目需要用MQTT来写消息推送,经过一段时间在网上查看资料后写下这篇文章,文章内容大都来自互联网,在文章最后也会贴出相关网址和Demo.写这文章主要目的是自己总结下经验做下笔记,以便日后 ...

  4. iot架构 mqtt netty_Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上

    前言 诞生及优势 MQTT由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech,现为Cirrus Link)于1999年开发,用于监测穿越沙漠的石油管道.目标 ...

  5. 一文读懂MQTT协议

    1  概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级 ...

  6. mqtt协议视频教程_MQTT协议教程

    mqtt协议视频教程 MQTT协议是一种广泛用于物联网的机器对机器(M2M)协议. 这是基于消息的协议. 它非常轻巧,因此在物联网生态系统中被采用. 几乎所有的 物联网云平台都支持MQTT协议,以从智 ...

  7. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

  8. 基于mqtt协议的消息推送服务器,基于 MQTT 协议的推送服务

    一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...

  9. MQTT协议通俗讲解

    参考 Reference v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy(基于JDK) Chrome插件 MQTT ...

  10. MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用

    原版地址:http://blog.csdn.net/xukai871105/article/details/39252653 0 前言 MQTT是IBM开发的一个即时通讯协议.MQTT是面向M2M和物 ...

最新文章

  1. 老赵的自然数分解——少侠之对象解
  2. 在一个.net sln中包含多个project,project引用同一个dll导致的错误
  3. linux下改变python的版本
  4. win7 64 iis7+access ADODB.Connection 错误 '800a0e7a'
  5. hisi mmz内存管理
  6. 2021阿里巴巴大数据技术公开课第一季:外部工具连接SaaS模式云数仓MaxCompute实战
  7. WIN7 64位系统注册银行支付组件
  8. kernel笔记——进程调度
  9. JAXB –不需要注释
  10. linux tcp header更改,Linux Netfilter中修改TCP/UDP Payload的方法
  11. html 倒计时字体消失,最简单的一个网页倒计时代码 时间到期后会显示出提醒内容 收藏版...
  12. 设计模式:观察者(Observer)模式
  13. Python 爬虫 —— 网页内容解析(lxml)
  14. python智能算法,人工智能算法Python案例实战
  15. HZOI20190819模拟26题解
  16. VMware安装Android x86_64 9.0虚拟机
  17. 考研单词不用死记硬背,必备资料23考研英语朱伟恋恋有词资料硬,老师废话少
  18. pil.unidentifiedimageerror: cannot identify image file
  19. 学习人工智能宝藏网站(Papers with Code)
  20. SQL判断是否为null如果为null则返回0

热门文章

  1. 实验10 Bezier曲线生成
  2. 《Learning from Protein Structure with Geometric Vector Perceptrons》文献阅读
  3. Python SVM分类器 XGBOOST分类器 文本情绪分析
  4. 哲理故事与管理之道(12)-让员工随时看到工作成果
  5. echarts使用技巧(1)echarts的图表自适应resize问题、单选、缩放等
  6. Mac VSCode常用快捷键
  7. GO实现ssh客户端、SSH服务器
  8. 2015年滴滴奖励回顾_2015年回顾
  9. 关于idea中log文件显示问号的解决办法
  10. 金蝶显示服务器,金蝶云桌面显示连接服务器