郭力 胡伟 张政成
摘要:本篇文章首先对MQTT协议的基本含义进行概述,从SSL/TLS认证、AugPAKE认证、访问控制三个方面,对基于MQTT协议下物联网通信应用要点进行分析,并以此为依据,提出MQTT协议在物联网中的应用对策。
关键词:MQTT协议;物联网;应用
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2019)28-0031-02
在当前市场背景中,通信对互联网行业发展有着积极作用,无论是移动通信技术,还是近距离无线传输技术,都会给物联网发展带来直接影响。从通信角度来说,通信协议作为双方实体实现通信需要秉持的原则。在互联网体系中,感知层及应用层均要在网络层的作用下实现通信。现阶段,TCP / IP是互联网的主要的标准因素,物联网通信协议是在互联网TCP/IP协议上进行运行,负责设备通过互联网技术实现数据传递和通信。因为HTTP协议在研发过程中,投放的成本比较少,并且开放性强。在建设互联网系统过程中,更多厂家更倾向于HTTP协议。但是在资源比较短缺的环境下,HTTP协议并不适用。MQTT协议凭借自身低功耗、开放强等优势,得到了通信行业的我广泛应用,对通信事业发展起到了重要意义。
1 MQTT协议的基本概述
MQTT也就是Message Queuing Telemetry Transport的简写形式,翻译成中文为消息队列遥测传输,是基于IBM开发下形成的一种即时通信协议,可以给物联网发展提供支持。MQTT协议可以应用在各个平台中,能够将各个联网物品与外部充分连接,被当作一个传感器和制动器的通信协议[1]。
从MQTT协议自身角度来说,作为一种比较简便且轻量的信息传输协议,专门是给受限设备、低宽带、高延迟的网络设计的。在MQTT协议设计过程中,秉持的设计原则在于以最小化网络宽带和设备资源,保证交付稳定、可靠。这些设计理念,对于物联网而言是最佳的选择对象。MQTT协议框架图见图1:
2基于MQTT协议下物联网通信应用要点分析
2.1 SSL/TLS认证
2.1.1客户端向服务器发送Client Hello
客户端在首次接受到来自服务器传递的ClientHello,其中涉及的字段及含义为:VersionNumber是客户端传递给服务器能够支持的最高版本号;RandomlyGeneratedData是32字节中的一部分,前四个字节是由客户端当前事前组成,后几个字节则是采用随机函数组成,这些随机数字被组建成一个密钥,以保证系统运行安全;SessionIdentification是SessionID让客户端快速恢复正常的因素,其标识出前后数据变化,并将其保存在服务器中。客户端发布消息到服务端的流程图见图2:
2.1.2 服务器向客户端发送Server Hello
在Server Hello中,涉及的字段含义在于:Version Number给服务器传递双方都可以应用的最高版本号;RandomlyGeneratedData是32字节的一部分,其中前4个字节是根据服务器当时时间组成,后28个字节采用随机组合方式,通过随机组合形成密钥;SessionIdentification字段能够给NewSessionID、ResumedSessionID等形成提供支持,并让客户端没有接受的指令快速恢复整张,形成新的ID[2]。在客户端指令恢复正常的情况下,将会重新形成ID,并且ResumedSessionID、sessionID等指示相同。
2.2 AugPAKE认证
AugPAKE协议一般是建设在D-H密钥交换上,利用客户端服务器进行验证考察。在本质上是一个比较烦琐的D-H密钥交换方式,具体由两部分组成,一个是初始化,也就是在用户端和服务器共同合作下进行线下验证,用户具有自己私钥,通过hash函数核算出有效密钥。另一个是协议执行过程,根据AugPAKE协议执行情况,形成会话蜜月,并通过应用会话密钥实现加密明文传递和处理。
2.3 访问控制
在访问控制方案设计过程中,需要结合协议特点,把客户端和代理之间认真转换成客户端和主题认证,本质上为认证问题。通过制定SSL/TLS解决方案,利用Publisher与Broker之间安全问题转换成Publisher与opic之间的安全问题。在此过程中,涉及两个比较特殊化主题,也就是RequestTopic及ResponseTopic。根据实际情况,将其分别应用在用户端及客户端响应中。在用户端获取一个主题信息以后,分步进行,用户端利用RequestTopic发送TargetTopic请求,之后用户端采用TargetTopic加密方式加密传递信息,并在RequestTopic配合下获取密钥请求,监管客户端验证情况并发送公钥。利用ResponseTopic传递给用户,用户通过验证获取TargetTopic私钥,从而实现TargetTopic信息解密处理。
3 MQTT协议在物联网中的应用
3.1 MQTT 通信协议
在MQTT通信协议下,要想实现信息发布,需要结合对应话题进行。只要在发布过程中明确发送话题,则无须配備对应话题内容。在MQTT协议中,明确指出发布服务器及客户端对象,作为整个系统网络核心,可以和多个客户端相连接。在MQTT协议框架中,不管是信息产生者,还是信息接收者,都是以客户端为主[3]。在服务器接收到来自于客户端发送的信息以后,根据信息要求实现数据处理,发布服务器可以把接收的信息传递到各个客户端中。
3.2 控制系统
以智能厨房油烟机系统为例,其中包含了四项内容,也就是基于Open WRT系统下的无线路由器、手机控制端、基于树莓派下的网关以及智能油烟机设备。智能厨房油烟机系统见图3:
根据上述,利用智能移动设备,可以实现和系统服务端的结合,并在MQTT协议下确保数据传递的安全性。在MQTT协议中,整个系统MQTT通信发布服务端以Mosquitto为主,Mosquitto管理和传递各个MQTT信息,并且负责对TLS-PSK框架资源集中管理,具有控制访问和用户身份认证等功能。移动通信设备和网关均与Open WRT系统中信息处理通信功能相连接,并由MQTT客户端提供。MQTT客户端模板由网关接收设备运行信息,并把信息传递到移动通信设备中。移动通信设备传递的控制指令也可以由其传递,并在指令被处理完成以后传递给网关。
3.3 系统设计
3.3.1 云端部署
Bluemix IoT 服务是由 MQTT 代理,担具的职责在于把收集的信息传递给各个客户端。设备包含了各种设备,分布传递其检测的信息,应用程序由MQTT查阅以后获取推送许可,实现信息传递。
3.3.2 本地网关设计(gateway)
mosquitto 作为 MQTT 的代理服务器,mosquitto是一个开放源代码的MQTT代理服务器,具备支持C、C++、Python 语言开发等功能。利用交互编译把mosquitto传送到TWR-LS1021A中,之后在Bluemix IoT的作用下实现网关设备注册[4]。在TWR-LS1021A客户端的作用下,可以实现信息周期性传递,利用mosquitto源码把提供的信息传递到MQTT客户端中。
3.3.3 设备端
Kl25Z主要是利用 WiFi把获取的数据信息传递给WR-LS1021A。之后利用网关向MQTT 代理传递该信息。网关给设备短创建一个信息联通通道,通过应用MQTT 协议将信息传递到MQTT 代理主题中。
3.3.4 移动客户端
作用于Bluemix IoT服务端下的Android移动应用程序,通过传递已经注册设备认证信息,查阅对应协议主题,并获取由Bluemix 传递的各项信息。
3.3.5 测试结果
在当前移动互联网快速发展的环境下,在物联网应用中,对移动通信设备获取信息提出严格要求,具体展现在时限性及移动性两方面。其中,时限性也就是需要将信息在要求时间范畴内传递到移动终端中;移动性则需要在信息传递过程中,尽可能减少对能源的消耗。不管是IOS还是Android,如果采取拉取传递方式,在流程信息更换通知过程中,需要对其进行持续检查,获取信息过程中,需要给服务器传递拉取指令,更换的信息将不能直接利用服务器进行传递,加剧交互频率和负担,让推动效率逐渐降低。为了缩短反应时间,提升工作效率,及时把新欢信息传递给移动端中,需要借助MQTT协议,保证操作系统和开发功能不会受到限制,并利用IOS平台实现信息推送,防止各种问题出现,节约更多信息传送时间。
4 结束语
总而言之,本文将重点阐述和分析MQTT协议在物联网通信中应用情况,从能源消耗及信息传递两个方面进行比较分析,并且充分证明基于TCP/IP背景下的HTTP协议不适用于能源比较少的嵌入式系统中。并且,HTTP协议在信息传递上,功能比较繁杂,而MQTT协议凭借低功耗、高效率等优势,在资源比较匮乏的当前得到了高效应用,更适合应用在物联网通信中,在减少能源消耗的同时,也能提升信息传递效率。
参考文献:
[1] 刘佳.基于MQTT协议的城市水务物联网监控系统设计[J].物联网技术,2019,9(06):14-16+19.
[2] 温小斌.物联网系统自动化监控的设计与实现[J].計算机时代,2019(06):34-36.
[3] 徐侃,丁强.一种基于MQTT协议的物联网通信网关[J].仪表技术,2019(01):1-4+43.
[4] 王瑞,兀玉洁,李燕苹.基于MQTT协议的物联网实训云平台设计[J].工业控制计算机,2018,31(09):101-103.
【通联编辑:光文玲】