- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?一、引言
MQTT(MessageQueuingTelemetryTransport)是一种轻量级的发布/订阅消息传输协议。它设计用于在低带宽、高延迟或不稳定的网络环境中可靠地传输消息。MQTTV3.1是该协议的一个重要版本,定义了一系列规范,以确保不同设备和应用之间能够高效、准确地进行通信。
二、协议概述
1.设计目标
-提供简单、轻量级的消息传递机制。
-支持多种网络环境,包括无线网络。
-确保消息的可靠传输。
-实现发布/订阅模型,便于解耦发送方和接收方。
2.应用场景
-物联网设备通信,如传感器数据传输。
-移动应用与服务器之间的消息交互。
-工业自动化中的设备控制与状态监测。
三、协议架构
1.客户端与服务器
-MQTT协议中有客户端和服务器两个主要角色。客户端向服务器发布消息或订阅主题,服务器负责接收和转发消息。
-客户端可以是各种设备,如传感器、执行器、移动终端等;服务器则通常是一个具备消息处理能力的中间件或平台。
2.消息传输
-消息通过TCP/IP网络进行传输,以确保可靠的数据传递。
-在传输层,使用TCP协议提供的可靠连接服务,保证消息不会丢失或乱序。
四、消息格式
1.固定头部
-固定头部包含了消息的基本信息,如消息类型、剩余长度等。
-消息类型定义了消息的用途,如CONNECT(连接请求)、PUBLISH(发布消息)等。
-剩余长度表示可变头部和有效载荷的总长度。
2.可变头部
-可变头部的内容根据消息类型的不同而有所变化。
-例如,PUBLISH消息的可变头部包含主题名称、消息标识符等。
3.有效载荷
-有效载荷是消息的实际内容,可以是任意字节序列。
-对于不同类型的消息,有效载荷有不同的含义,如CONNECT消息的有效载荷包含客户端标识、用户名、密码等。
五、消息类型
1.CONNECT(连接请求)
-客户端向服务器发送连接请求,包含客户端标识、用户名、密码等认证信息。
-服务器根据接收到的连接请求进行认证,并返回CONNACK(连接确认)消息。
2.CONNACK(连接确认)
-服务器对客户端的连接请求进行响应,返回连接结果,如成功或失败。
-包含连接返回码,指示连接是否成功以及相关的错误信息。
3.PUBLISH(发布消息)
-客户端向服务器发布消息,消息包含主题和有效载荷。
-服务器接收到PUBLISH消息后,根据订阅关系将消息转发给订阅了该主题的客户端。
4.SUBSCRIBE(订阅请求)
-客户端向服务器发送订阅请求,指定要订阅的主题和QoS(服务质量)等级。
-服务器返回SUBACK(订阅确认)消息,确认订阅操作。
5.SUBACK(订阅确认)
-服务器对客户端的订阅请求进行响应,返回订阅结果,包括每个订阅主题的QoS等级。
6.UNSUBSCRIBE(取消订阅请求)
-客户端向服务器发送取消订阅请求,指定要取消订阅的主题。
-服务器返回UNSUBACK(取消订阅确认)消息,确认取消订阅操作。
7.UNSUBACK(取消订阅确认)
-服务器对客户端的取消订阅请求进行响应,确认取消订阅的主题。
8.PINGREQ(心跳请求)
-客户端或服务器发送心跳请求,用于保持连接的活跃状态。
-对方接收到心跳请求后,返回PINGRESP(心跳响应)消息。
9.PINGRESP(心跳响应)
-对PINGREQ消息的响应,表明连接正常。
10.DISCONNECT(断开连接)
-客户端或服务器发送断开连接请求,关闭当前连接。
六、服务质量(QoS)
1.QoS0
-最多一次传递。消息发送后,不保证服务器收到或客户端接收。
-适用于对消息可靠性要求不高的场景,如传感器数据的简单上报。
2.QoS1
-至少一次传递。消息发送后,保证服务器收到,但不保证客户端接收一次。
-可能会出现重复接收的情况。常用于对消息可靠性有一定要求,但允许少量重复的场景。
文档评论(0)