MQTT简介

  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于TCP/IP 协议栈而构建,虽然叫消息队列遥测传输,但是她与消息队列毫无关系,她是一个IBM开发的客户端服务端架构的 发布/订阅模式 的消息传输协议;她的设计思想是轻巧、开放、简单、规范、易于实现,因此MQTT比较适合在物联网环境(IoT,Internet of Things)以及机器与机器的通信(M2M,Machine to Machine)等受限的环境下。

MQTT的优势

  • MQTT是一种轻量级、灵活的网络协议,轻量级保证其可在严重受限的设备硬件和高延迟/带宽有限的网络上实现;她的灵活性使得IoT设备和服务的多样化应用场景提供支持成为可能

    • 1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
    • 2、对负载内容屏蔽的消息传输;
    • 3、使用 TCP/IP 提供网络连接;
    • 4、有三种消息发布服务质量:
      • “至多一次” 服务质量级别0 QoS0,消息将最多传递一次,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。她是最快的传输方式,有时成为"触发并忘记"。消息最多传递一次
      • “至少一次” 服务质量级别1 QoS1,消息会始终至少传递一次,确保消息到达,但消息重复可能会发生。
      • “只有一次” 服务质量级别2 QoS2,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。她是最安全也是最慢的传输方式。
    • 5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
    • 6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

MQTT与其他网络协议的对比

  • 与HTTP协议对比

    • 1. HTTP 是一种同步协议。客户端需要等待服务器响应。Web 浏览器具有这样的要求,但它的代价是牺牲了可伸缩性。在 IoT 领域,大量设备以及很可能不可靠或高延迟的网络使得同步通信成为问题。异步消息协议更适合 IoT 应用程序。传感器发送读数,让网络确定将其传送到目标设备和服务的最佳路线和时间。
    • 2. HTTP 是单向的。客户端必须发起连接。在 IoT 应用程序中,设备或传感器通常是客户端,这意味着它们无法被动地接收来自网络的命令。
    • 3. HTTP 是一种 1-1 协议。客户端发出请求,服务器进行响应。将消息传送到网络上的所有设备上,不但很困难,而且成本很高,而这是 IoT 应用程序中的一种常见使用情况。
    • 4. HTTP 是一种有许多标头和规则的重量级协议。它不适合受限的网络。
  • 与AMQP对比
    • 企业中间件系统中使用的最流行的消息协议被称为 AMQP(高级消息排队协议)。但是,在高性能环境中,计算能力和网络延迟通常不是问题。AMQP 致力于在企业应用程序中实现可靠性和互操作性。它拥有庞大的特性集,但不适合资源受限的 IoT 应用程序。
  • 与XMPP对比
    • XMPP(Extensible Messaging and Presence Protocol,可扩展消息和状态协议)是一种对等即时消息 (IM) 协议。它高度依赖于支持 IM 用例的特性,比如存在状态和介质连接。与 MQTT 相比,它在设备和网络上需要的资源都要多得多

发布订阅模型

  • MQTT 协议在网络中定义了两种实体类型:一个消息代理和一些客户端。代理是一个服务器,它从客户端接收所有消息,然后将这些消息路由到相关的目标客户端。客户端是能够与代理交互来发送和接收消息的任何事物。客户端可以是现场的 IoT 传感器,或者是数据中心内处理 IoT 数据的应用程序。

    • 1.客户端连接到代理。它可以订阅代理中的任何消息 “主题”。此连接可以是简单的 TCP/IP 连接,也可以是用于发送敏感消息的加密 TLS 连接。
    • 2.客户端通过将消息和主题发送给代理,发布某个主题范围内的消息。
    • 3.代理然后将消息转发给所有订阅该主题的客户端。
  • 因为 MQTT 消息是按主题进行组织的,所以应用程序开发人员能灵活地指定某些客户端只能与某些消息交互。就是订阅相应的主题后才会收到相应的主题下的消息。

MQTT 控制报文格式

  • 2.1 MQTT控制报文的结构 Structure of an MQTT Control Packet 
  • 2.2 固定报头 Fixed header 

  • 2.2.1 MQTT控制报文的类型 MQTT Control Packet type

  • 2.2.2 标志 Flags 

  • 控制报文字类型是从值区分为0-15依次对应 Reserved Connect ConnAck Publish PubRec PubComp Subscribe SubAck Unsubscribe PingReq PingResp DisConnect Reserved 相应的Flags 有对应的数据

学习网址

  • MQTT百科
  • MQTT使用示例代码及第三方相关内容
  • MQTT工具地址
  • 物联网MQTT文档
  • 物联网MQTT社区Wiki
  • Mosquito 文档
  • MQTT Essentials
  • MQTT协议中文版
  • MQTT入门篇
  • kafka和mqtt的区别是什么?

如有不当之处 敬请指出 如需转载请注明出处 谢谢

转载于:https://www.cnblogs.com/ITCoderW/p/9310581.html

MQTT初始篇笔记整理相关推荐

  1. 乐鑫esp8266学习rtos3.0笔记第9篇:整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

  2. Kafka入门篇学习笔记整理

    Kafka入门篇学习笔记整理 Kafka是什么 Kafka的特性 应用场景 Kafka的安装 单机版部署 集群部署环境准备 Kafka 2.x集群部署 Kafka 3.x集群部署 监听器和内外网络 K ...

  3. jqGrid 学习笔记整理——基础篇

    jqGrid 学习笔记整理--基础篇 jqGrid 实例中文版网址:http://blog.mn886.net/jqGrid/ 国外官网:http://www.trirand.com/blog/ 本人 ...

  4. jqGrid 学习笔记整理——进阶篇(一 )

    jqGrid 学习笔记整理--进阶篇(一 ) 本篇为基础篇的扩展,使其具有增.删.改.查的基本功能. 在浏览导航栏添加所需按钮 <!DOCTYPE html> <html>&l ...

  5. Google机器学习速成课程 - 视频笔记整理汇总 - 基础篇核心部分

    Google机器学习速成课程 - 视频笔记整理 - 基础篇核心部分 课程网址: https://developers.google.com/machine-learning/crash-course/ ...

  6. 2、Spring Boot尚硅谷笔记整理高级篇-消息

    1.Spring Boot尚硅谷笔记整理高级篇-缓存 2.Spring Boot尚硅谷笔记整理高级篇-消息 3.Spring Boot尚硅谷笔记整理高级篇-检索 4.Spring Boot尚硅谷笔记整 ...

  7. 这是一篇Markdown的学习笔记整理

    这是一篇Markdown的学习笔记整理 参考博客: https://blog.csdn.net/u014061630/article/details/81359144 写得比我详细好多_(:з」∠)_ ...

  8. 笔记整理 asp + vbscript篇

    一.前言 想要找一个知识点,居然找不到,有点郁闷,故而把以前写的笔记整理分类.败笔在于没有任何条理,标题取的也不是很恰当,不能使我看到标题,就知道这份笔记的主要内容是什么.故而简述分类 二.整理 1. ...

  9. 深度学习总结——CS231n课程深度学习(机器视觉相关)笔记整理

    深度学习笔记整理 说明 基本知识点一:模型的设置(基本) 1. 激活函数的设置 2. 损失函数的设置 (1) 分类问题 (2) 属性问题 (3) 回归问题 3. 正则化方式的设置 (1) 损失函数添加 ...

最新文章

  1. 2021年大数据Flink(十六):流批一体API Connectors ​​​​​​​​​​​​​​Redis
  2. JTable动态显示隐藏列
  3. Vue 面试题 (全)
  4. C++ string 使用详解(含C++20新特性)
  5. Android开发之播放量点赞量打赏量收藏量单位格式化工具类
  6. unix 安装oracle,linux上安装Oracle
  7. WebStorm 格式化代码 - 快捷键
  8. bootstrape实战案例_bootstrap 实战入门教程(一)
  9. ElasticSearch概述(一)——简介
  10. 英特尔傲腾存储业务主管已离职 因个人原因离开
  11. ES6学习(二)—变量的解构赋值
  12. [抄]人是怎么废掉的
  13. docker host模式拿到nginx远程ip端口_FastDFS基于Docker安装,免采坑版
  14. CocosCreator休闲游戏发布到字节跳动平台
  15. 解决vscode下载很慢的问题
  16. 管理好团队的七个要点,你做到了几个?
  17. linux网卡流量查询sar,Linux 查看实时网卡流量的方法 sar nload iftop
  18. 玉米田 组合数学 环涂色
  19. 业务数据分析-大体逻辑
  20. 7天物联网智能家居实战训练营(百问网)-day1

热门文章

  1. 科技垄断正在朝着纵向发展
  2. 5条出人意外的大脑秘密,奇奇怪怪的知识又增加了!
  3. 图神经网络的表达能力,究竟有多强大?
  4. 2020年10个诱人的技术里程碑
  5. 3位物理学家获基础物理学特别突破奖
  6. 孙正义看科技未来:今后30年要把钱和精力投向哪里
  7. 半导体行业必将再火十年!两大趋势成发展新动能
  8. 前百度首席科学家吴恩达携手富士康,要用人工智能升级制造业
  9. 谷歌的量子计算机如何改变世界
  10. 学界 | 进化算法可以不再需要计算集群,开普敦大学的新方法用一块GPU也能刷新MNIST记录