遥测站采用 HTTP 协议传输图片的应用研究

2021-08-27 12:03熊启龙
水利信息化 2021年4期
关键词:中心站规约应用层

熊启龙

(水利部淮河水利委员会水文局(信息中心),安徽 蚌埠 233001)

0 引言

为实现水文全要素、全量程的自动监测,水文自动测报系统要求具有的功能越来越丰富,自动采集传输的数据类型越来越多,遥测站拍摄现场高清图片并传输至中心站作为测站简单高效的可视化解决方案之一,应用越来越广泛。通过分析采集的数据和查看现场图片,可以判断和追溯测站的工作状态,特别是近年来随着人工智能识别技术的飞速发展,可以通过分析遥测站拍摄的水尺图片识别测站水位,因此拍摄图片并快速传输至中心站,成为遥测站一个重要的功能。

水文自动测报系统中传输的数据类型有水文数据、设备状态信息、遥调命令、告警数据、运行日志数据、设备远程升级固件包等,随着新技术的发展,近年来还增加了高清图片、短视频多媒体数据,这些类型的数据都不大,遥测站可以在短时间内传输完毕。水文自动测报系统遥测站运行在偏远无人值守地区,通常采用太阳能、蓄电池供电系统提供电源,因此低功耗是其最重要的特征,为节省功耗,系统传输都是轻量级的数据,不适合大量数据传输。遥测通信数据量虽然较小,但是准确性和实时性要求很高,是互联网传输通用数据的一种类型。

目前,水文自动测报系统中遥测站传输图片常用的行业规约有水利行业标准 SL 651—2014《水文监测数据传输规约》[1]和国家水资源监控能力建设项目标准 SZY 206—2016《水资源监测数据传输规约》[2]2 种行业规约。 这 2 种水利行业规约都规定了一系列通信机制以保证数据传输的可靠性,可以工作在有线 RS-232/485、超短波、2.5G/3G/4G 移动通信网络、有线以太网、LoRa 及 NB-IoT 等多种物理通信介质上。采用这 2 种水利行业规约,遥测站需要在应用层根据物理信道的特点将数据分包,再分包发送,每包数据发送失败具有自动重发功能,为保证数据正确,每包数据均需加上校验。因此,这 2 种水利行业传输规约适合低带宽、小数据量、自建通道、测站地处偏远的自动监测应用场景。

随着物联网的兴起和移动通信网络技术的快速发展,终端机内嵌以太网 TCP/IP 协议且具有网络通信能力成为其最基本的功能,而 TCP/IP 协议本身已提供复杂高效的传输机制,能确保链路的可靠性,因此,在 TCP/IP 协议的应用层传输图片和短视频这类相较于水文数据比较大的数据类型时,不需要再考虑数据分包、失败重传、正确性校验等机制。在这种情况下,如果再使用 2 种水利行业规约对图片进行分包,每包数据加上校验,失败重传,而没有充分利用 TCP/IP 协议的特点,效率就比较低。

除了 2 种水利行业规约外,还有很多基于 TCP/IP协议广泛使用的文件传输协议适合图片数据传输,比如 FTP(File Transfer Protocol),TFTP(Trivial File Transfer Protocol)和 HTTP/HTTPS 等应用层协议,这些协议已经成为一种事实上的互联网通用技术标准,他们充分利用了底层 TCP/IP 协议可靠传输的特点,快速高效。其中:FTP 和 TFTP 协议[3]需要打开中心站专用的 TCP/UDP(User Datagram Protocol)接收端口,由于这些协议采用明文传输而没有充分考虑网络安全,很容易造成网络安全的隐患,因此已经很少使用;HTTP 可用于传输包括文本、图片、短视频、HTML 文件等多种类型的数据,且充分利用底层 TCP/IP 协议提供的可靠传输链路,不需要考虑复杂的传输过程,具有简单、灵活和高效的特点。为此研究采用 HTTP 协议替代水利行业规约传输高清图片,以充分利用高速网络通信信道的特点,提高水文自动测报系统图片数据的传输效率和适用性。

HTTP 协议是互联网的基础协议,目前使用最广泛的版本是 HTTP/1.1,是互联网最流行也是最典型的应用层协议,下层通常采用 TCP/IP 协议,默认的 HTTP 服务端口是 80。

1 采集图片格式和传输方式的介绍

遥测站图片的采集由遥测终端机完成,通常采用 RS-232/485 串口、RJ45 网络接口或者 USB 接口连接摄像机并控制其拍摄图片,再传输至遥测终端机中。由于终端机存储资源有限,为了用较少的存储空间得到较好的图片品质,摄像机采用压缩方式保存和传输图片,通常是 JPEG 格式。JPEG 格式有很高的压缩率,使得图片尺寸相对较小,有利于在有限带宽的情况下快速传输。

通常,发送端在带宽有限、信道可靠性不是很好的条件下传输图片数据时,为了更好地控制传输,采用断点续传功能。将 JPEG 格式图片的二进制流数据采用平均分帧的方式传输数据,每帧数据顺序编号。发送端根据分帧大小计算传输 1 幅图片总共需要的帧数(假设总帧数为N),并在与接收端首次通信时告知总帧数,则接收端返回发送端已经接收的帧数X(数值为 0~(N- 2)),然后发送端从图片的第(X+ 1)帧开始传输数据,直至所有数据传输完毕。假设在传输过程中,接收端在接收到第Y帧数据后中断,在重新建立连接再次传输时,发送端直接从第(Y+ 1)帧开始传输,而不是从第0 帧开始传输。

2 采用 HTTP 协议传输图片的流程

遥测终端机采用 HTTP 协议向中心站发送图片,首先要通过移动通信网络或者有线以太网与中心站 HTTP 服务端口建立 TCP 连接,然后将要发送的图片数据按照 HTTP/1.1 协议组织成请求报文发送到中心站,中心站在接收到请求报文后,返回HTTP 响应,并断开 TCP 连接。采用 HTTP 协议传输图片的流程图如图 1 所示。

图1 采用 HTTP 协议发送图片的流程图

遥测站向中心站传输图片,遥测站是客户端,中心站是服务器,遥测站采用 POST 方法向服务器提交 HTTP 请求,图片数据包含在请求正文中。

2.1 建立 TCP 连接

遥测终端机通常内置 2.5G/3G/4G 移动通信模组[4],终端机通过 AT 指令控制模组与服务器 HTTP服务端口建立 TCP 连接。

如果遥测终端机集成 RJ45 网络接口并内嵌TCP/IP 协议栈,终端机可以直接与服务器 HTTP 服务端口建立 TCP 连接。

2.2 发送 HTTP 请求报文

客户端采用 POST 请求方法按照以下 4 个组成部分生成 HTTP 请求并发送至服务器 HTTP 服务端口:

1)状态行。状态行主要由请求方法、URL(统一资源定位器)、HTTP Version 协议版本 3 个部分组成,发送图片请求方法为 POST,HTTP Version协议版本为 HTTP/1.1,URL 字段格式为 http://host[":"port][abs_path],其中:http 表示要通过HTTP 协议定位网络资源;host 表示合法的 Internet主机域名或者 IP 地址;port 指定 1 个端口号;abs_path 指定请求资源的统一资源标志符 URI。

2)消息报头。常用的键值对为

a. Accept:*/*,指定客户端能够接收所有的内容类型。

b. User-Agent:Telemetry_system,描述客户端的类型为遥测站。

c. Connection:Close,不需要保持持久连接。

d. Content-Type:image/jpg,传输文件类型为JPG 格式的图片。

e. Content-Length:81920,该字段数值为请求发送的正文长度,也就是图片的大小,81920 为本次请求传输的数据长度,以 B 为单位,每次请求传输时该字段数值将会根据要传输数据的长度而改变。

3)空行。回车换行。

4)报文正文。报文正文是 HTTP 协议的负载,可以将图片数据二进制流放在报文正文部分,为更清晰地描述图片信息,可以在图片数据头包含一些用户自定义的属性,比如图片的文件名称和大小、拍摄时间、图片编号等信息,以回车换行符结束。

下面是遥测站向服务器发送的一个 HTTP 请求报文,用以传输图片,其中状态行和消息报头的每行内容都以回车换行符结束。

回车换行

图片二进制流。

2.3 返回响应报文

服务器在接收到客户端发送的 HTTP 请求报文后[5],首先读取状态行,如果请求方法为 POST,并且 Content-Type 为 image/jpg,读取长度为 Content-Length 字段键值的报文正文,将读取的二进制流数据保存成图片即可。

接下来,服务器返回客户端 HTTP 响应报文,响应报文主要由以下 4 个部分组成:

1)状态行。包括协议码、状态码和状态码描述。

2)响应报头。常用的键值对为

a. Date:服务器时间,遥测站获取该信息用以保持时钟同步。

b. Content-Type:报文数据类型。

c. Content-Length:响应正文长度。

3)回车换行。

4)响应正文。响应正文可以为 JSON 格式编码正文信息,JSON 对象可以由用户自定义。下面是服务器典型的 HTTP 响应报文,其中状态行和响应报头的每行内容都以回车换行符结束。

2.4 关闭 TCP 连接

服务器根据客户端发送的消息报头中Connection 键值决定是否关闭连接:如果该字段为Close,服务器立即关闭 TCP 连接;如果该字段为Keep-alive,则该连接会保持一段时间,服务器在该时间内可以继续接收客户端的请求,直到接收到客户端发送消息报头 Connection 字段为 close 的请求报文时,立即关闭连接。

通过建立 TCP 连接,发送 HTTP 请求报文,服务器返回响应报文,关闭 TCP 连接 4 个步骤,就可以将 1 幅图片传输至服务器。

3 采用 HTTP 协议传输图片的特点和时效分析

3.1 特点分析

HTTP 协议通常被用来提供网页浏览服务,只要有网页信息服务就必须打开 HTTP 协议服务端口,因此各企业和单位的防火墙都针对 HTTP 协议服务端口做出特殊性重点防护,防止非法入侵。遥测站采用 HTTP 协议传输图片,不需要改变中心站网络设置就可以完成,适用性强,同时由于具有无连接、无状态的特点,不易引起网络安全问题,因此被广泛采用。

相较于 2 种水利行业规约,遥测站采用 HTTP互联网通用协议传输图片具有以下特点:

1)HTTP 协议是一种事实上的互联网通信标准,遥测站遵循 HTTP 协议传输图片,可以兼容很多互联网的通信应用,实现跨平台、行业、领域的数据传输。

2)HTTP 协议是 TCP/IP 协议层之上的应用层协议,不需要考虑分包、校验和重传机制,数据传输的可靠性由下层 TCP/IP 负责。HTTP 协议一次性将全部数据提交给传输层,由 TCP/IP 负责将数据可靠地传输至服务器,应用较为简单。

3)随着高带宽、低延时的 4G/5G 移动通信技术的发展和信号覆盖范围的扩大,带宽和速度不再是遥测站数据传输的瓶颈,采用 HTTP 协议传输图片,可以充分发挥 HTTP 协议简单灵活的特点,简化通信流程,减轻应用层的开发负担。

4)随着 SaaS(Software-as-a-Service)新的软件应用模式的兴起,遥测站作为物联网的 1 个节点,可能需要与各种软件服务接口进行对接,这些服务接口很多都基于 TCP/IP 的通用互联网协议,比如 HTTP,WebService 等接口,遥测站遵循这些标准,方便与各种服务接口对接。

5)HTTP 协议作为一种广泛使用的互联网协议,有着非常成熟的应用框架。遥测站和中心站都遵循 HTTP 协议,用户不需要理解和处理复杂的专用协议,通过简单开发和软件部署就可以建立从发送到接收完整的应用平台。

随着物联网技术的发展,物联网常用的应用层协议(包括 MQTT,HTTP,CoAP 等)也逐渐应用广泛起来,与 HTTP 通信协议一样,MQTT 和 CoAP协议也是基于 TCP/IP 的上层应用层协议,其中:MQTT 协议基于 TCP,请求方式遵循发布/订阅的异步通信方式;CoAP 协议基于 UDP,请求方式和HTTP 协议一样遵循的是请求/响应方式。MQTT 和CoAP 协议是为计算能力有限,且工作在低带宽、不可靠网络的远程传感器和控制设备通信而设计的一种协议,特别适合类似传感器数据的小数据量传输,而对于图片、设备程序升级包这类数据量相对大一些的数据通常采用 HTTP 协议比较合适。

3.2 时效分析

在嵌入式系统中,TCP/IP 协议的应用层不能获取底层协议的传输过程信息,因此都是以固定时间间隔或者采用发送/确认方式传输多帧数据的。在嵌入式以太网环境中,IP 链路层数据帧 MTU(Maximum Tran-smission Unit)的最大长度通常设定为 1 500 B[6],减去 IP 数据报、TCP 报文段和应用层报文的首部信息,应用层每帧数据以 1 kB 最为合适。如果要传输 1 幅 100 kB 大小的图片,总共需要 100 帧数据才能完成传输。如果不考虑中间传输失败,所有数据传输均为一次性完成,以 4G 移动通信网络作为传输通道,3 种规约的时效性分析如下:

1)采用 SL 651—2014《水文监测数据传输规约》“多包发送/确认”的链路传输模式,考虑到嵌入式系统的任务切换时间,应用层每两帧数据之间的时间间隔通常设置为 100~200 ms,完成所有数据传输至少需要 10~20 s。

2)采用 SZY 206—2016《水资源监测数据传输规约》的“发送/确认”传输服务类别,考虑到嵌入式系统的任务切换和返回确认帧时间,应用层每两帧数据之间的时间间隔通常为 150~200 ms,完成所有数据传输至少需要 15~20 s。

3)采用 HTTP 协议传输,应用层一次性提交所有图片数据,不考虑分帧,底层 TCP/IP 协议进行分包传输,实际测试表明,1 幅 100 kB 左右的图片传输可以在 5 s 内完成。

从分析可以看出,同样的通信条件下,传输相同数据量的数据,采用 HTTP 协议所用时间要少很多。

4 结语

水文自动测报系统中遥测站通过移动通信网络或者有线以太网采用 HTTP 协议向中心站传输图片,与水利行业传输规约相比,具有灵活、高效的特点,可为移动通信网络覆盖比较好或者具备有线网络通信条件的遥测站传输图片数据提供参考和借鉴,能够满足大多数对于实时性要求较高的水文自动测报系统的需求。对于其他类型的数据,可以根据数据大小、通信信道和具体项目应用环境选择合适的通信规约。

由于 HTTP 协议采用明文传输数据,没有充分考虑安全性,容易被窃听截取,对于保密数据的传输,可以进一步研究终端机在已经实现的 HTTP 协议基础上加入加密机制,采用 HTTPS 协议传输;HTTP 协议也支持断点续传功能,适合数据量特别大的数据类型的传输,针对断点续传的应用,需要做进一步研究。

猜你喜欢
中心站规约应用层
更正
传统自然资源保护规约的民俗控制机制及其现实意义
一种在复杂环境中支持容错的高性能规约框架
一带一路
一种改进的LLL模糊度规约算法
传输层和应用层的隧道技术
基于分级保护的OA系统应用层访问控制研究
基于改进LLL规约的MIMO系统解码算法*
铁路集装箱中心站经营产品分析
物联网技术在信息机房制冷系统中的应用