MQTT协议分析

0x01 概述

MQTT(Message Queuing Telemetry Transport)消息队列遥测传输协议
一个基于发布/订阅模式(publish/subscribe)模式的轻量级消息中间件协议,目前广泛应用于移动互联网/物联网领域

特点

  • 轻量级,协议简单、易实现、传输速度快
  • 协议头短、节省带宽、传输效率高,可用于低带宽
  • 低功耗、计算力有限,可用于低硬件要求
  • 实时,底层基于TCP/IP协议
  • 可靠传输,自定义QoS,可用于不可靠网络
  • 默认TCP端口为1883,websocket端口为8083,默认不加密;8883端口默认是通过TLS加密

版本

0x02 工作模式

三种角色,一个主要概念和其他若干概念

work_mode

  • 发布者(Publisher):充当客户端,发布消息到服务端,也可以充当消息订阅者
  • 订阅者(Subscriber):充当客户端,订阅消息/取消订阅,接受服务端推送的数据
  • 代理(Broker):作为服务端,与客户端建立连接,接收发布者的消息并转发到订阅者,接收订阅/取消请求

基本概念:

  • 主题(Topic):存放消息的容器,抽象理解相当于一个消息类别,可以有一级或多级,发布消息时会发布到这个主题,订阅时指定主题就会收到相应的消息推送
  • 客户端:使用MQTT的程序或设备,发布/订阅的终端对象,总是客户端去连接/断开服务器
  • 服务器:程序或设备,作为发布/订阅流程中的中介,接收客户端的连接,认证和授权,处理客户端的订阅/取消请求,接收/推送消息
  • 发布:Publish,客户端发送消息给服务端,服务端将消息转发给订阅的客户端
  • 订阅:Subscribe,客户端订阅主题,当发布者发送与该主题相关的消息时,服务端会转发消息给订阅者
  • 消息:MQTT协议中传输的数据,通常关联一个主题(Topic)和一个服务质量(QoS)
  • 主题过滤:Topic Filter,订阅过程可以对Topic进行过滤
    • 单级通配(+) : 仅匹配单级主题
    • 多级通配(#) : 可以匹配多级,通常出现在末尾,表示某类主题下的所有子类
    • 系统保留($) : 主题开头,表示服务器保留的主题

模式特点:

  • 取消了C/S模型,服务器只充当一个消息转发的代理
  • 空间解耦,发布者和接受者不需直接建立联系
  • 时间解耦,发布者和接受者不必同时在线

QoS,Quality of Service,消息可靠性传递参数

  • 0 : 消息指发送一次,不保证发送成功;适用于传感器数据、普通推送等
  • 1 : 消息最少发送一次,保证发送成功,可能接收重复消息
  • 2 : 消息指发送一次,保证发送成功,不会接收到重复消息;适用于严格的计费系统、即时通讯推送
0x03 数据格式

protocol

  • 固定报文头,2字节,存在于所有的MQTT数据包中,表示数据包类型和分组类标识
  • 可变报文头,存在部分MQTT数据包中,针对不同数据包类型,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值