当前位置: 首页 > article >正文

【嵌入式面试高频知识点】-MQTT协议

一、MQTT基础

MQTT(Message Queuing Telemetry Transport),消息队列遥测传输

MQTT 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议,MQTT 协议是应用层协议,工作在 TCP/IP 四层模型中的最上层(应用层),构建于 TCP/IP协议上。

二、MQTT特性

1、使用发布/订阅消息模式,提供一对多的消息发布

2、MQTT 是基于 TCP 连接进行数据推送的

3、支持 QoS 服务质量等级

4、使用 will 遗嘱机制来通知客户端异常断线

5、支持心跳机制

三、MQTT通信基本原理

MQTT 是一种基于客户端-服务端架构的消息传输协议:

服务端:MQTT 服务端通常是一台服务器(broker),它是 MQTT 信息传输的枢纽,负责将MQTT 客户端发送来的信息传递给 MQTT 客户端。

客户端:MQTT 客户端可以向服务端发布信息,也可以从服务端收取信息;客户端要想从服务端收取信息,则首先要向服务端“订阅”信息。

MQTT主题:客户端发布消息时需要为消息指定一个“主题”,表示将消息发布到该主题;而对于订阅消息的客户端来说,可通过订阅“主题”来订阅消息,这样当其它客户端或自己(当前客户端)向该主题发布消息时,MQTT 服务端就会将该主题的信息发送给该主题的订阅者(客户端)。

四、连接MQTT服务端

MQTT 客户端之间想要实现通信,必须要通过 MQTT 服务端。

主要步骤为:

1、首先客户端需要向服务端发送连接请求,这个连接请求实际上就是向服务端发送一个 CONNECT报文,也就是发送了一个 CONNECT 数据包。

2、MQTT 服务端收到连接请求后,会向客户端发送连接确认。连接确认实际上是向客户端发送一个CONNACK 报文,也就是 CONNACK 数据包。

MQTT报文分为三部分:定头(Fixed header)、可变头(Variableheader)以及有效载荷(Payload,消息体)。

五、断开连接

当 MQTT 客户端连接到服务端之后,在后续的通信过程中,如果客户端想要断开与服务端的连接,此时客户端可以主动向服务端发送一个 DISCONNECT 报文来断开与服务端的连接。

六、其他知识点

QoS是什么?

服务质量,保证消息稳定传输的机制,包括消息应答、存储和重传。

MQTT 协议有三种服务质量等级:
QoS = 0:最多发一次; QoS 的最低级别
QoS = 1:最少发一次;发送端在消息发送完成后,会检查接收端是否已经成功接收到了消息。
QoS = 2:保证收一次。当 MQTT 服务质量为 2 级时,MQTT 协议可以确保接收端只接收一次消息。


http://www.kler.cn/a/379549.html

相关文章:

  • 微服务架构面试内容整理-领域驱动设计(DDD)
  • Rust 力扣 - 1423. 可获得的最大点数
  • 【react使用AES对称加密的实现】
  • Go语言常见数据结构实现原理
  • 新能源汽车空调压缩机:科技驱动的冷暖核心
  • Linux第二周作业
  • 【appium 安卓10 QQ发送消息】
  • 不用买PSP,画质甚至更好,这款免费神器让你玩遍经典游戏
  • 基于卷积神经网络的棉花病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
  • Spring的常用注解之@Component——day1
  • 【Keyframes】Deep Convolutional Pooling Transformer for Deepfake Detection
  • 【VMware】使用笔记
  • STL:标准模板库
  • Ubuntu 22.4 LTS 源码编译Tigervnc
  • 【P2-9】ESP8266 WIFI模块在STA模式下作为TCP客户端上电自动进入透传数据模式
  • javaNIO核心知识.中
  • 苍穹外卖Day3test报错javax.websocket.server.ServerContainer not available
  • Qt 实战(10)模型视图 | 10.7、自定义 QTableWidget
  • 关于最新create-react-app使用react-app-rewired2.x添加webpack配置
  • [CISCN 2021初赛]robot
  • 传统的自然语言处理评估指标
  • GPU 服务器:高性能计算的核心驱动力
  • Web Broker(Web服务应用程序)入门教程(2)
  • LeetCode 3259.超级饮料的最大化能力(动态规划状态机模型入门)
  • 探索数据管理新境界:PyTables库的奥秘
  • 低代码信息中心:赋能创新的未来