本文主要是通过SMTP协议的方式提供了一种新的嵌入式远程通讯模式。即在ARM处理器中实现SMTP协议,并通过双绞线连接到Internet上。在该平台上开发的远程控制设备或仪器仪表实现了通过Internet进行数据的远程传输,在任意一台上网的计算机上都可以通过Internet对其进行远程监视和控制。
项目中选择了基于ARM体系结构的32位微处理器,介绍了模块的各组成部分,包括基于ARM的硬件结构模型、软件结构、SMTP的基本结构及其运行机制。并详细分析了ARM系统中嵌入式SMTP软件模块的具体实现和调试过程。
1.系统整体结构
在系统中,将SMTP服务器引入到ARM的平台上实现嵌入式SMTP服务器(Embedded SMTP Server)。在此软硬件系统基础上开发控制设备及仪表,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,SMTP技术为核心的基于互联网的网络测试和控制设备。嵌入式SMTP系统与传统SMTP Server相比,简化了协议结构,将信息采集和信息发布都集成到现场的测控设备中。由于SMTP是Internet中跨平台的标准通信协议,内嵌于设备的SMTP 服务器可以接收任何标准邮件发送工具发出的E-mail指令和数据。同时由于SMTP技术的开放性和独立平台特性,大大降低了软件系统和通信系统的设计、维护工作量,节省了人员培训费用等,提高了现场测试和控制设备的管理水平。
1.1系统的硬件结构
系统硬件的核心部件,由运行嵌入式操作系统的嵌入式微处理器系统构成,在嵌入式操作系统之上运行着系统的核心软件。由于ARM处理器技术成熟,市场占有率高,且成本急剧下降。从工控角度出发,我们选用MOTOROLA基于ARM 内核的MX9328MX1。该芯片是一款基于ARM9T芯片。它一方面具有ARM 处理器的低功耗、高性能等优点;同时又具有丰富的片上资源,非常适合嵌入式产品的开发。
在硬件系统中包含实现SMTP通信功能的微处理器,它可以和前端的应用系统直接集成在一起,也可以通过现场总线与应用系统相连。包括:8M 的FLASH 存储器用来存储实时操作系统的系统内核、TCP/IP 协议栈、各种控制程序及其他并行模块;32M的SDRAM存储器供系统运行时使用;以太网接口实现与Internet/Intranet 连接;现场总线扩展控制模块提供现场一定范围内设备的分布控制;通用IO口控制模块等。其硬件结构图如图1 所示[2]。
图1: 嵌入式SMTP远程控制平台硬件结构
考虑到性价比,系统的硬件结构根据应用环境的不同进行调整,硬件资源也很有限。实时操作系统的系统内核、TCP/IP 协议栈、各种应用程序都必须写入到FLASH中并在运行时调入到SDRAM 中运行,这样对软件系统提出了较高的要求。
1.2系统软件结构
整个系统的软件系统包括五个部分:①嵌入式操作系统;②虚拟文件系统;③SMTP引擎;④配置模块;⑤安全模块;⑥控制程序接口模块。
嵌入式操作系统选用Linux,作为系统的软件基础,其优异的跨平台移植能力、开放的源代码、配置的灵活性为开发提供了便利。内置的TCP/IP协议栈可使用户快速的开发出应用层协议的程序。
Linux上的虚拟文件系统在FLASH及SDRAM的基础上建立类似于磁盘的使用环境。虚拟文件系统使用数据结构存储文件大小、修改时间等信息。通过虚拟文件系统将系统中所需的控制程序以及配置文本等以文件形式存储于系统芯片上。
SMTP引擎负责响应用户的请求,通过应用程序接口使用户远程控制设备的动作,临界值状态报告及定期向用户报告工作状态。
配置模块使系统管理员可以远程使用邮件的方式设置设备的参数,在系统启动中定义的配置环境变量包括设备的临界值,状态报告周期,Socket端口等网络参数,设备的启动停止时间,工作周期等。
网络远程设备的配置和控制信息的访问是安全保护的重点。安全模块通过在服务器上定义安全域和对每个安全域定义的用户名/密码实现对敏感信息的保护。还可以对请求控制动作及数据采取加密措施实现安全保护功能。系统主要通过ESMTP来实现保护措施。ESMTP为扩展的SMTP协议,是邮件服务器系统为了限制非本系统的正式用户利用本系统散发垃圾邮件或其他不当行为而开设的一项安全认证服务。
应用程序接口模块实现和嵌入式控制系统的控制及数据交换。在本系统中,应用程序接口与嵌入式操作系统通信,通过设备的驱动程序实现对嵌入系统的配置、监视和控制,是系统控制的核心。监控程序模块使用CGI(Common Gateway InteRFace)的方式实现。
2. SMTP通讯模块设计
通过电子邮件来与网络嵌入式系统通信有如下优点:(1) 用户接口是日常使用的标准电子邮件客户程序,对技术要求较低;(2) 有现成的协议用于从各种设备(桌面电脑、手持设备及网络电话)发送电子邮件并在因特网上传输;(3) 只需稍加处理,便可对嵌入式设备上回复的电子邮件以HTML格式进行编码,使数据的表现形式更为丰富和易读;(4) 电子邮件客户程序有自己的存档日志,便于进行数据归档备份[3]。
系统中实现的是一个简化的SMTP Server。仅仅是根据基本的SMTP交互协议实现邮件接收和邮件转储。不提供邮件转发,也不需要考虑多用户的邮件并发连接。该SMTP Server仅仅为单用户提供专用连接,并按自己的特定格式接收。
因此,该SMTP Server实现的核心是实现最简单的SMTP锁步协议对话机,并从邮件中析取出命令及附件数据。在分析标准SMTP协议后,程序中仅实现符合应用需求的最简洁的SMTP对话机制。Server只是对客户命令有效的发出每一个对话的响应码及固定信息,然后接收客户机的应答。在应答消息中也仅仅分析应答的字符命令是否正确,而不理睬其他信息。在邮件处理过程中,只查找主题并判断,然后从邮件中判断出附件的标志并从附件开始处接收数据然后解码。
2.1 SMTP通讯基本流程
为实现设备的远程控制及状态响应,将SMTP软件的结构模块化。分为套接字通讯模块、E-mail编码模块、E-mail解析模块、SMTP/ESMTP协议模块、附件解析模块。其基本结构如图2。
图2: 嵌入式SMTP远程控制流程
2.2 套接字通讯模块
网络套接字模块负责与远端客户机、服务器建立TCP连接,发送和接收从客户端发送的命令和数据以及向其他SMTP服务器端返回邮件数据。这些都是基于TCP/IP栈通过Linux操作系统的标准Socket机制来实现的。在网络模块中,为便于升级,考虑到了IPv4到IPv6过渡。在用户设置服务器地址的时候,可以支持IP地址输入和域名输入两种方式,这样给用户带来很大方便。
在该模块中,提供一个TCP流套接字服务器。在端口25上绑定套接字,最多可以提供一个连接,支持5个等待。一旦服务器接受一个连接,该套接字被传给SMTP/ESMTP协议模块,来处理SMTP协议实现交互。处理完后关闭套接字,然后可以等待另一个请求。
2.3 E-mail编码模块
在系统中,远程设备需要周期性的将设备运行状态及各参数发送给管理者,以及在管理者发送查询指令时将查询的关键值发送给管理者。这需要设备能够根据运行的参数构造标准结构的E-mail并发送。
E-mail编码模块的功能是:设备发送邮件时,将设备参数及状态转变成标准的适合在Internet上传输的邮件格式。
一个完整的E-mail报文包括包封、报头和报体。包封是用SMTP命令MAIL FROM和RCPT TO来定义。报头信息包括:收件人(To:),发件人(Sender:),抄送者(CC:),发送日期(Date:),主题(Subject:),MIME版本(Mime-version:)等。在报体中信息包括:内容类型(Content-Type:),内容传输编码类型(Content-Transfer-Encoding:),边界定义(Boundary:)及信息内容等。邮件信息每行之间都以CR/LF(回车换行符)作为结尾。可以通过这些邮件头信息的关键词,解析出收件人、发件人、抄送人、发送日期,MIME版本号等[4]。
报体信息包括邮件的正文和附件。正文开始的标记是邮件头信息结束后的两个回车换行符,即两个CR/LF。邮件结束的标志是。。模块中提供了对MIME(Multipurpose Internet Mail Extensions)1.0格式邮件的处理。实现了MIME内容传输编码,包括:7-bit,8-bit, quoted-printable,Base64编解码。
2.4 SMTP/ESMTP协议模块
SMTP/ESMTP是一种基于命令/应答模式的锁步协议。客户机给出字符串命令,服务器给出数字代码应答,实现邮件的锁步传输。
在TCP连接基础上(端口号25),本模块实现SMTP/ESMTP协议的最小命令集。作为客户发送邮件时,实现的客户连接命令包括: ELHO(或者HELO)、AUTH LOGIN、USER、PASS、MAIL FROM、RCPT TO、DATA、RSET、NOOP、QUIT。作为服务器接收邮件时,响应的数字代码包括:220(服务就绪)、221(服务关闭)、250(要求的邮件操作完成)、354(开始邮件输入,以。结束)、500(命令不识别)[4][5]。
发送者的用户名和密码必须经过Base64编码后,发送到SMTP/ESMTP服务器端,认证才能成功。实现过程见图3。
图3:SMTP/ESMTP协议模块基本流程
2.5 E-mail解析模块
远端设备在收到邮件指令时,应能从邮件中正确析取出指令并做出响应。
系统中的E-mail解析模块通过查找E-mail中的主题来知道命令类型。其在E-mail报体中查找字符串Subject来发现E-mail的主题,并从中找到规定类型的命令字头。如无相应主题,返回-1,将邮件丢弃。根据主题命令字的不同,完成设备的相关动作控制或相应状态的邮件报告。对于数据块的更新,使用附件解析模块来得到附件中的数据。
3. 安全性问题
由于SMTP技术的开放性和标准性,其开发的简单便利也带来很多缺点。设备的远程控制必须对访问者有所区分,否则系统的安全将不可预料。
特别是,SMTP协议在发送邮件信息,甚至是用户名和密码的时候采用的是明文发送。通过常见的抓包工具,就可以轻易获得正在接收或发送邮件的用户的所有信息,包括用户名和密码以及邮件信息,这给设备的正常操控带来了极大的威胁。即使ESMTP协议在发送用户名和密码的时候采用的是base64编码,但其解码也是轻而易举,因此其安全性也有限。
对于安全问题,可根据不同的控制环境使用不用的策略[6]。
(1) 闭环网络访问策略:把网络访问范围局限在 Intranet 范围内,通过网内任意PC机发送的邮件命令可以进行远程监视、诊断、远程控制和参数设置。所有可能的攻击点全部局限在本网络范围内。
(2) 只读访问策略:对关键信息和敏感信息,一个重要的安全措施就是将其标记为只读特性,尤其是从Intranet 范围外的IP 地址来的访问请求。这样用户可以在任意地方查看远程设备的状况,出现问题可以及时采取措施。
(3) 引入加密机制,如:MD5加密就可以增加安全性。
4. 结束语
本文介绍了在ARM的硬件平台上,如何构建以嵌入式Linux为基础利用SMTP协议来进行设备的远程监控的实现方法。通过该方法,我们实现了对传统工控项目的远程控制改造升级。在该方案的基础上,完全可以实现设备的网络化和智能化管理,为现场可编程设备的在线远程监控、管理及维护等功能提供了实现的可能性和技术上的支持。通过对SMTP协议的合理利用,使“Action over IP”的思想得以实现,从而在远处可以对设备的“行为”进行有效的管理和控制。
评论
查看更多