[网安技术] MQTT协议

1. 简介

MQTT全称Message Queuing Telemetry Transport,即消息队列遥测传输协议。基于TCP/IP协议构建,是发布/订阅模式的轻量级通讯协议。目的是为连接远程设备提供实时可靠、低开销和贷款占用的即时通讯协议。应用场景为物联网、小型设备、移动应用。

2. 框架和结构

MQTT代理服务器假设在网络中,用户进行发布和订阅均需向MQTT代理注册。MQTT代理负责接收消息和按照转发策略推送给目标订阅者。发布/订阅模式采用常见的“主题”作为转发匹配头部。允许用户动态创建主题,支持连续的会话控制,提供服务质量管理,同时不规范传输数据的格式。

其面向的网络情景为:

1)网络宽带低、延迟高、不稳定,需要尽量降低运输量并提供可靠的消息传输管理;

2)客户端计算能力低,需要专门的云边协同或需要降低边缘设备的开销;

3. 特点

1)使用发布/订阅模型,减小消息冗余性;

2)使用TCP/IP提供连接(UDP版本的叫做MQTT-SN);

3)消息发布质量有三种:

  a.至多一次,完全依赖TCP协议,可能发生消息丢失或重复。例如传感器发送消息,若没有立即被对方接收,由于下一次数据发送间隔较短,因此不需要尝试重复发布。

  b.至少一次,确保消息到达,但可能重复发送。

  c.只有一次,确保消息到达且只到达一次。

4)使用遗愿(last will)和遗嘱(Testament)机制,用以自定义客户端异常断开时对相关客户端的通知信息。

4. 实现原理概述

1)消息分为topic和payload两个部分,其中载荷的内容任意,主题则和消息发布质量对应;

2)用户和服务器建立一个TCP传输流,基于字节流进行有序和无损双向传输;

3)会话,客户端与服务器建立连接后持续维护的状态,会话可以跨越多个网络,处在TCP的上层;

4)订阅,使用主题筛选器(topic filter)以及最大服务质量与一个会话关联,会话对应多个订阅,订阅对应一个filter;

5)协议包数据结构,固定头(包类型及分组类标识)、可变头(数据被类型的补充)、载荷;

 

posted @ 2021-12-13 16:02  Cheung-10  阅读(137)  评论(0)    收藏  举报