基于MQTT 的物联网系统文件传输方法的实现

发表时间:2021/5/19   来源:《科学与技术》2021年第4期   作者:杨永根
[导读] 针对物联网系统中设备与设备之间的文件传输需求,结合MQTT协议在物联网系统中的应用特点

        杨永根
        广东卓维网络有限公司  广东佛山  528200

        摘要:针对物联网系统中设备与设备之间的文件传输需求,结合MQTT协议在物联网系统中的应用特点,提出了一种基于MQTT协议的文件传输方案,在文件拆分传输基础上增加应答、重传等机制,解决了MQTT协议在实现文件传输时硬件设备资源有限、传输过程中信道占用时间长、文件丢包等问题,实现了文件上传和下载等功能.最后通过搭建硬件平台,对文件传输的功能和可靠性进行测试,实验结果表明该文件传输方案可靠性好,适应于物联网系统中设备之间的远程文件传输。
        关键词:基于MQTT ;物联网;系统文件;传输方法;实现;
引言
        MQTT(Message Queue Telemetry Trans-port,消息队列遥测传输)协议以其开销小、及时性好和可靠性高等优势在物联网系统中得到广泛的应用,其基于主题的发布订阅模型,可方便实现物联网系统中节点设备一对一,一对多的消息通信在物联网系统中,常存在设备节点参数配置、设备与设备之间需要共享信息量较大的数据的场合,而这类文件数据大小仅为几十kB的等级因此,提供一种开销小、可靠性高、简单灵活的文件传输方案就显得尤为必要。
   TFTP协议常被用于解决资源有限的嵌入式系统中的文件传输,将通信双方一方设置为客户端模式,另一方为服务器模式,即可实现设备到设备之间的文件传输由于物联网系统中终端节点设备大都分散在不同区域的局域网内,使用该种方式,难以避免通信过程中设备IP动态分配和内网穿透的问题,若采取在,公网中建立文件服务器,设备做客户端的方式实现设备与设备的文件传输,需要系统额外增加文件服务器和文件消息通知功能,增加了系统的复杂程度。
        针对传统文件传输方法难以适应物联网系统设备到设备之间文件传输的场合的问题,本文利用MQTT协议在物联网系统中设备与设备间消息通信的优势,在 MQTT通信的基础上,通过文件拆分传输的方式,能够快速实现物联网系统中设备到设备间的小文件传输,具有实际应用价值。
一、国内外研究现状
        物联网的核心是实现物与物之间的信息共享,而数据传输作为实现物与物通信的核心技术自然成为物联网技术的研究热点。数据传输协议作为数据传输过程中的关键要素在物联网技术发展过程中,一直备受各界研究人员的关注。目前,国内外学者对物联网系统中的传输协议的研究主要分为两种路线:一种是针对物联网系统的应用特点,提出新的适合物联网环境的通信协议;一种则是对传统的互联网通信协议进行改进,使其适用于物联网环境下的数据通信。
二、MQTT协议分析
        MQTT协议是较早的物联网通信协议之一,由IBM 公司于1999 年开发,是一个为解决在不良网络状况中设备间通信、基于订阅/发布机制的轻量级传输协议。在通过MQTT客户端发布消息至服务器的主题下,任何订阅了该主题的MQTT客户端均可收到该消息,并且客户端可以通过订阅多个主题接收多个主题下的消息。MQTT是基于TCP的通信协议,并且支持TLS/SSL加密,其报文大小最小仅有2 bit。对于工业领域云边通信的应用场景,由于工业现场环境的复杂性和网络的不稳定性,以及本地传感器大量接入的要求,需要一种高质量、可靠、低带宽占用的数据交换协议。MQTT 协议因为其消息体积较小、基于发布/订阅的解耦通信模式、丰富的 QoS 选项及遗嘱(LastWill)机制,非常适合硬件资源、带宽受限的应用场景。因此, MQTT 协议在工业物联网通信系统中的应用成为一种选择。
        MQTT 协议基于 TCP 协议进行传输,当 MQTT 客户端与服务器成功建立连接后,通过心跳机制来维持客户端与服务器之间的长连接,从而确保消息传输的及时性和可靠性。MQTT协议是一个针对短帧消息传输的即时通信协议,如何使用MQTT协议实现文件数据的传输正是本章需要解决的问题。

MQTT协议控制报文的剩余字段定义了MQTT协议最大可表示256MB的控制报文,当系统需要进行文件传输时,若直接以最大报文长度进行文件传输,一方面,传输时需要开辟较大容量的缓冲区,然而资源有限的嵌入式设备很难满足其运行空间的需求,另一方面,由于MQTT 协议多工作在网络环境不稳定的情况,网络中传输的数据包长度越大,在传输过程中,出现错误的几率就越高,即文件传输的成功率也就越低。本文采取文件拆分传输的方式,发送方将需要传输的文件拆分成若干个数据包,对每个数据包进行排序和编号,再以MQTT协议进行传输,最终由接收方确认文件传输完整后,按照编号信息对文件进行恢复。
三、文件传输方案的设计
3.1文件传输问题
        分析MQTT是基于TCP/IP的即时通讯协议,采用轻量级基于代理的发布/订阅式消息传输模式,本文提出的基于MQTT协议的文件传输系统中,通信的双方既可以是数据的发送方也可以是数据的接收方,均属于MQTT客户端,而MQTT代理服务器作为文件传输过程中的中转站,不作为文件传输的对象进行考虑。
        MQTT协议是一种针对小数据量消息传输的轻量级协议,消息体主要由三部分组成:固定报头,可变报头和有效载荷,固定报头是每个命令消息都 必须要包含的部分,长度固定为2bytes,最大可表示的消息长度范围为0~256Mbyte,虽然协议规定MQTT消息体中最大可以发送的字节数为256Mbyte,但是若直接以最大长度进行文件传输,会存在以下问题:
        (1)设备端在实现文件传输过程中,需要开辟 缓冲区存放所要发送的数据,当传输的数据较大时,相应的缓冲区的容量将会增大,而工作在物联网底层的小型嵌入式硬件设备的资源是有限的, 其内存资源很难满足需求;
        (2)MQTT协议适应于工作在带宽低、网络环境不稳定的物联网环境中一旦出现网络故障等原因造成的文件传输出错现象,由于MQTT协议本身不具备断点续传等功能,在恢复新一次文件传输时,之前已经传输的文件数据将会丢弃,造成了流量的浪费,也降低了整个文件传输的效率。
        (3)MQTT协议基于主题实现端到端之间的通信,消息在发布之后,需经服务器转发后才能到达订阅方,本文为了保证应用层文件数据传输的可靠性,采用超时重传机制保证文件在端到端之间的可靠传输,文件传输过程中等待接收方确认所消耗的时间,也会对文件传输的效率产生影响。
3.2文件传输方案设计
        针对上面的分析,基于MQTT协议的文件传输方法,以MQTT通信为基础,使用文件拆分传输方式进行文件传输,在此基础上增加应答、重等机制,目的在于弥补文件拆分传输过程中可能会出现的丢包现象传,从而增强文件传输的可靠性,文件拆分传输包含以下几个环节:提取信息- 拆分-传输-接收-组装-检查.为确保文件传输的可 靠性,通信过程中,一方传输数据并接收应答,另一方接收数据并给出应答.并且通信双方各自实现超时重传,若发送方超时将重新发送上次的数据包,若接收方超时,则将重传应答数据包。
四、结束语
        本章针对物联网系统端到端的文件传输需求,提出基于 MQTT 协议的端到端文件传输方法,采用文件拆分传输的方式实现端到端之间的文件传输,以JSON格式打包文件传输过程中的控制报文,采用确认应答和超时重传机制提高文件传输的可靠性,通过分析对比确定文件的编解码方案,最后对使用MQTT协议的文件传输方法进行性能测试。随着万物互联时代的到来,物与物之间的连接方式也在不断发展和更新。如果说,传感器是物联网的触觉,那么,无线传输就是物联网的神经系统,将遍布物联网的传感器连接起来。在物联网出现以前,网络的接入需求主要体现在PC、移动终端对互联网的接入需求。如今,随着物联网技术的发展,无线接入不仅仅体现在PC、移动终端对网络的连接需求,还有工业生产环境下物与物之间的连接需求。
参考文献
[1]冯博物联网技术发展与应用[J]中国校外教育2010(21)
[2]陈海明,崔莉,谢开斌物联网体系结构与实现方法的比较研究[J]计算机学报,2013(1)
[3]李小波.基于ARM的TFTP协议的实现[J].工业仪表与 自动化装置,201618(6):4-9.
        
        
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: