MQTT协议格式详解

一、简介

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议。MQTT协议特点包括轻量、简单、开放和易于实现,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)中已广泛使用。

MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT协议是基于客户端-服务器的消息发布/订阅传输协议。MQTT协议中的消息传输需要依赖一个消息中间件,该中间件负责将消息从发布者传输到订阅者。在MQTT协议中,消息的传输是异步的,即发布者将消息发布到中间件后,不需要等待订阅者的确认即可返回。订阅者则可以从中间件中获取自己感兴趣的消息。

MQTT协议还支持不同的服务质量(QoS)级别,包括至多一次(QoS 0)、至少一次(QoS 1)和确保只有一次(QoS 2)。这些级别可以根据具体的应用场景进行选择,以满足不同的需求。

二、MQTT特点

在这里插入图片描述

MQTT协议的特点主要包括以下几个方面:

轻量级与低开销:MQTT协议非常轻量,它的开销很小,适用于低带宽、低功耗设备和网络。其固定长度的头部仅为2字节,协议交换也最小化,以降低网络流量。

发布/订阅模式:MQTT采用发布/订阅模式,提供一对多的消息发布,解除应用程序之间的耦合。客户端可以订阅一个或多个主题(Topic),并且可以在不知道其他客户端的情况下发布消息到主题。这使得消息发布者与订阅者解耦,提高了系统的可扩展性和灵活性。

消息传输的可靠性:MQTT协议提供了三种消息传递服务质量(QoS)等级,即至多一次(QoS 0)、至少一次(QoS 1)和确保只有一次(QoS 2)。这些等级可以根据具体的应用场景进行选择,以满足不同的需求。

对负载内容屏蔽的消息传输:MQTT协议对负载内容进行了屏蔽,使得消息传输更加灵活和高效。
TCP/IP网络连接:MQTT协议使用TCP/IP提供网络连接,保证了消息传输的可靠性和稳定性。尽管主流的MQTT是基于TCP连接进行数据推送的,但也有基于UDP的版本,称为MQTT-SN,适用于不同的网络环境。

遗嘱(Will)机制:MQTT协议支持遗嘱机制,当客户端异常断开连接时,可以通过遗嘱机制通知其他客户端。这有助于及时处理异常情况,提高系统的健壮性。

保留消息(Retained Message):MQTT支持保留消息功能,允许客户端发布一个保留的消息到主题,而后连接到该主题的新订阅者可以立即接收到该消息。这对于传递配置信息或确保新订阅者获取最近的状态更新非常有用。

安全性:MQTT协议支持TLS/SSL加密通信协议,以确保数据的安全传输。这使得MQTT在需要保护敏感信息的应用场景中更具吸引力。

三、MQTT协议格式

在这里插入图片描述

固定报头

在这里插入图片描述

MQTT控制报文类型
在这里插入图片描述

其他说明
在这里插入图片描述

可变报头

在这里插入图片描述

有效载荷

在这里插入图片描述

三、MQTT控制报文示例

CONNECT – 连接服务端

在这里插入图片描述

PUBLISH – 发布消息

在这里插入图片描述

SUBSCRIBE - 订阅主题

在这里插入图片描述

UNSUBSCRIBE –取消订阅

在这里插入图片描述

MQTT项目示例

使用朝夕课程MQTT示例程序,使用MQTTnet包:
在这里插入图片描述
链接:https://pan.baidu.com/s/1mzY6F8hMv7d1w7hG1Q1-Vg
提取码:xwja

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值