您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

一文了解MQTT协议

时间:2022-03-04 10:21:44  来源:  作者:DNF搬砖摸金达人

我们之前已经说了这个SSL 和 TCP/IP 协议了,我们今天就来详细的说说这个 MQTT 协议,因为很多消息现在都是支持 MQTT 协议的,比如 RabbitMQ ,还有 Kafka 等,今天我们就来详细的介绍 MQTT 协议到底是个什么。

什么是MQTT协议

一文了解MQTT协议

 

MQTT协议是一种消息列队传输协议,采用订阅、发布机制,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理。因此在在物联网领域,传感器与服务器的通信,信息的收集中得到广泛的应用。

既然是协议,那么如果对比 TCP/IP协议的话,它位于分层中的哪一层呢?

之前阿粉就说了 TCP/IP 参考模型可以分为四层:应用层、运输层、网络层、网络接口层。TCP和UDP位于运输层,应用层常见的协议有HTTP、FTP、SSH等。而 MQTT 协议运行于 TCP 之上,属于应用层协议,因此只要是支持TCP/IP协议栈的地方,都可以使用MQTT。

MQTT协议主要特性

1)开放消息协议,简单易实现。

2)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。

3)对负载(协议携带的应用数据)内容屏蔽的消息传输。

4)基于TCP/IP网络连接,提供有序,无损,双向连接。

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

5)消息服务质量(QoS)支持,可靠传输保证;有三种消息发布服务质量:

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

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

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

这个 Qos0 是个什么意思呢?就是如果使用了这个 Qos0 的配置作为发布质量,我们以客户端和服务器为例,那就是客户端发了一个消息给服务端,这时候服务端没有接收到,而配置是 "至多一次",这时候,相同的消息,客户端就不会再继续给服务端发送了,我管你收没收到,我配置的就是最多一次.

同理,QoS1 是至少一次,也就是说,客户端给服务端发送消息的时候,如果没有保证消息到达,这时候可能会继续发送,我才不管我发几次,只要你没有给我说你收到消息,那我就发!

而 QoS2 相对来说就是比较严谨的了,为什么这么说,这就相当于客户端给服务端发送消息,这时候,要求保证客户端发了一次,而服务端收到一次,这样才是相当于只有一次的概念。

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

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

MQTT 报文

  • 固定报头(fixed header) 所有报文都包含
  • 可变报头(variable header) 部分报文包含
  • 荷载(payload)部分报文包含

固定报头格式如下

一文了解MQTT协议

 

固定报头的0-3位为标志位,第一字节的4-7位的值指定了报文类型。

报文类型值描述CONNECT1客户端向代理发起连接请求CONNACK2连接确认PUBLISH3发布消息PUBACK4发布确认PUBREC5发布收到(QoS2)PUBREL6发布释放(QoS2)PUBCOMP7发布完成(QoS2)SUBSCRIBE8客户端向代理发起订阅请求SUBACK9订阅确认UNSUBSCRIBE10取消订阅UNSUBACK11取消订阅确认PINGREQ12PING请求PINGRESP13PING响应DISCONNECT14断开连接

实际上 这些类型也是 MQTT协议中定义的一些方法(也被称为动作),来于表示对确定资源所进行操作。这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。

MQTT协议实现方式

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:

1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容 (payload)

2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容(限制大小)。

MQTT 基于订阅与发布的消息模型

MQTT 消息发送与接收的流程:

  • ClientA 链接到 Broker;
  • ClientB 链接到 Broker,并订阅主题 Topic1;
  • ClientA 发送给 Broker 一条消息,主题为 Topic1;
  • Broker 收到 ClientA 的消息,发现 ClientB 订阅了 Topic1,而后将消息转发到 ClientB;
  • ClientB 从 Broker 接收到该消息。

和传统的队列有点不一样,若是 ClientB 在 ClientA 发布消息以后再订阅 Topic1,ClientB 不会收到该条消息。

关于 MQTT 的基础,阿粉就了解了这么多了,等以后阿粉学习新的关于 MQTT 的,阿粉再继续分享给大家。



Tags:MQTT协议   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
一文了解MQTT协议
我们之前已经说了这个SSL 和 TCP/IP 协议了,我们今天就来详细的说说这个 MQTT 协议,因为很多消息现在都是支持 MQTT 协议的,比如 RabbitMQ ,还有 Kafka 等,今天我们就来详细的介...【详细内容】
2022-03-04  Search: MQTT协议  点击:(399)  评论:(0)  加入收藏
MQTT协议使用总结
一.MQTT简介MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布/订阅信息传输协议。MQTT在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进...【详细内容】
2021-12-07  Search: MQTT协议  点击:(365)  评论:(0)  加入收藏
物联网安全之MQTT协议安全
大家好,我是银基Tiger Team的BaCde,今天来说说MQTT协议的安全。MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是是ISO 标准(ISO/IEC PRF 20922)下基于...【详细内容】
2020-08-10  Search: MQTT协议  点击:(642)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(17)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(42)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(40)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(72)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(61)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(43)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(157)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(84)  评论:(0)  加入收藏
站内最新
站内热门
站内头条