[网安技术] 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)协议包数据结构,固定头(包类型及分组类标识)、可变头(数据被类型的补充)、载荷;
浙公网安备 33010602011771号