MQTT协议分析

本文详细分析了MQTT协议,包括其消息格式的固定报文头、可变报文头和有效负荷,以及MQTT的主要特性:消息类型、QoS等级、遗愿标志和心跳机制。此外,还探讨了MQTT的安全性、认证方式以及用户数据格式的选择。
摘要由CSDN通过智能技术生成

一、概述

MQTT(Message Queuing Telemetyr Transport  消息队列遥测传输协议):基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议之上。

MQTT运行于TCP之上,属于应用层协议。

二、MQTT消息格式

每条MQTT命令消息的消息头都包含一个固定的报头,有些消息会携带一个可变报文头和一个负荷。消息格式如下:

固定报文头|可变报文头|负荷

1、  固定报文头(Fixed Header)

最少有两个字节,第一个字节包含消息的类型(Message Type)和QoS级别等标志位。第二个字节开始是剩余长度字节,该长度是后面的可变报文头加消息负载的总长度,该字段最多允许四个字节。

剩余长度字段单个字节的最大值为0x7F. 也就是127个字节。MQTT协议规定,单个字节的最高位如果是1,表示后续还有字节存在,第八位起延续位的作用。

由于MQTT协议最多使用四个字节表示剩余长度,并且最后一个字节的最大值只能是0x7F,而不是0xFF。所以能发送的最大消息长度是256MB,而不是512MB。

 

2、  可变报文头(Variable Header)

主要包含协议名,协议版本,连接标志,心跳间隔时间,连接返回码,主题名等。

3、  有效负荷

实际上可以理解为消息的主体。当MQTT发送的消息类型是CONNECT(连接)、PUBLISH(发布)、SUBSCRIBE(订阅)、SUBACK(订阅确认)、UBSUNSCRIBE(取消订阅)时会带有负荷。

三、MQTT的主要特性

1、MQTT的消息类型

固定报文头中的第一个字节包含连接标志,连接标志用来区分MQTT的消息类型。MQTT协议拥有14中不同的消息类型。如下图:

可简单分为连接及终止、发布和订阅、Qos2消息的机制以及各种确认ACK。

 

2、消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值