成凱麗,葉瑋瓊,許林
(湖南工業(yè)大學(xué)計算機與通信學(xué)院,湖南株洲412007)
基于SMTP-POP3協(xié)議的嵌入式遠程控制設(shè)計與實現(xiàn)
成凱麗,葉瑋瓊,許林
(湖南工業(yè)大學(xué)計算機與通信學(xué)院,湖南株洲412007)
介紹了利用SMTP和POP3協(xié)議實現(xiàn)嵌入式遠程控制的方法。在PXA270處理器為核心的硬件平臺上,實現(xiàn)了簡化的SMTP Server和POP3 Server,完成郵件的解析與構(gòu)造等,從而使系統(tǒng)完成控制命令的發(fā)送、控制程序的遠程更新、用戶口令的遠程更新、控制結(jié)果的反饋等。試驗表明,系統(tǒng)可以穩(wěn)定可靠運行。
遠程控制;SMTP協(xié)議;POP3協(xié)議
隨著計算機、網(wǎng)絡(luò)、通信、控制等技術(shù)的不斷發(fā)展,信息交互溝通的重要性在工業(yè)控制領(lǐng)域不斷凸顯,工業(yè)自動化水平也隨之不斷提高。實現(xiàn)遠程控制的方式越來越多,常用的方式有基于WEB、GSM短消息、GPRS、電話網(wǎng)、SMTP協(xié)議等[1]。通過郵件方式實現(xiàn)的遠程控制具有控制命令發(fā)送免費,遠程控制端免開發(fā)、可移動的特點,而往常以這種方式實現(xiàn)的遠程控制只是簡單地利用SMTP協(xié)議來完成控制命令的發(fā)送,課題組在PXA270平臺上使用簡化的SMTP,POP3兩種協(xié)議,同時實現(xiàn)控制命令的發(fā)送和控制結(jié)果的反饋,并根據(jù)郵件解析得到的不同主題字來完成設(shè)備控制、用戶口令和設(shè)備控制程序遠程更新多項功能。該系統(tǒng)對那些比較危險、操作不方便、無人值守的設(shè)備實現(xiàn)遠程監(jiān)控具有實際意義和價值。
系統(tǒng)首先要實現(xiàn)的是中央控制器的設(shè)計,在此基礎(chǔ)上實現(xiàn)設(shè)備端和控制端的通信。課題組采用的是在以PXA270處理器為核心平臺上,引入SMTP Server和POP3 Server實現(xiàn)嵌入式SMTP-POP3服務(wù)器,通過連接Internet,實現(xiàn)對郵件的處理和控制結(jié)果的反饋,并在此基礎(chǔ)上開發(fā)控制設(shè)備,使傳統(tǒng)控制設(shè)備轉(zhuǎn)變?yōu)橐訲CP/IP為底層通信協(xié)議的遠程控制設(shè)備,進而實現(xiàn)控制端和設(shè)備端的通信。控制端可以是PC機、手機等,只要它們可以連接Internet并具有郵件收發(fā)工具(Outlook,Foxmail),就可以實現(xiàn)郵件的免費收發(fā),隨時隨地對設(shè)備進行遠程控制。控制命令的傳送和控制結(jié)果的反饋都是以郵件的形式呈現(xiàn)的,同時出于對安全問題和控制設(shè)備的擴展性問題的考慮,該設(shè)計還具有用戶口令的安全驗證和遠程更新、設(shè)備控制程序遠程更新的功能。系統(tǒng)控制結(jié)構(gòu)圖如圖1所示。
圖1 控制結(jié)構(gòu)圖Fig. 1Control structure
系統(tǒng)硬件的核心是I n t e l公司開發(fā)的基于ARMv5E的Xscale構(gòu)架的處理器PXA270,最高頻率可達624 MHz。其外圍控制器眾多,可實現(xiàn)豐富的外圍接口功能。它包含的SpeedStep技術(shù),能夠動態(tài)調(diào)節(jié)系統(tǒng)所需要的主頻,真正實現(xiàn)低功耗,并支持嵌入式Linux和Wince操作系統(tǒng)。正是由于其具有可靠性高、運行穩(wěn)定、接口豐富、功耗低等特點,適合在工控領(lǐng)域中運用。硬件結(jié)構(gòu)包含了實現(xiàn)SMTP Server,POP3 Server的嵌入式微處理器PXA270,64 MB的FLASH,64 MB的SDRAM,電源管理芯片,以太網(wǎng)接口,現(xiàn)場總線控制模塊,通用I/O控制模塊,串口等。
2.1 SMTP/ESMTP協(xié)議
SMTP是一種基于TCP協(xié)議的電子郵件傳輸協(xié)議。ESMTP是對SMTP協(xié)議的擴展,它與SMTP的區(qū)別僅僅是服務(wù)器會要求用戶提供用戶名和密碼來進行身份驗證。它們都是一種基于命令/應(yīng)答模式的鎖步交互協(xié)議(文中采用ESMTP協(xié)議),在設(shè)計中表現(xiàn)為客戶端給出字符串命令,SMTP服務(wù)器端給出應(yīng)答信息,直到客戶端命令為QUIT,服務(wù)器端回復(fù)221,結(jié)束鎖步交互。在本研究中實現(xiàn)的是協(xié)議的最小命令集,客戶端用到的主要連接命令包括:HELO/HLHO,AUTHLOGIN,MAIL FROM,RCPT TO,DATE,RSET,QUIT。服務(wù)器響應(yīng)的數(shù)字代碼主要有:220(服務(wù)準備好)、250(請求的命令成功完成)、334(等待用戶輸入驗證信息),235(用戶認證成功)、354(發(fā)送郵件內(nèi)容)、221(服務(wù)關(guān)閉)、500(命令不識別)[2]。
2.2 POP3協(xié)議
POP3協(xié)議允許用戶從服務(wù)器上把郵件存儲到本地主機上,同時根據(jù)客戶端的操作刪除或保存郵件服務(wù)器上的郵件。POP3服務(wù)器則是遵循POP3協(xié)議的接收郵件服務(wù)器,用來接收電子郵件。POP3也是一種基于命令/應(yīng)答模式的鎖步交互協(xié)議。在設(shè)計中表現(xiàn)為客戶端給出字符串命令,POP3服務(wù)器端給出應(yīng)答信息,直到客戶端命令為QUIT,服務(wù)器端回復(fù)“+OK”,結(jié)束鎖步交互。
在鎖步交互的過程中,客戶端主要連接命令有USER,PASS,STAT(總數(shù)和長度),UIDL(返回郵件唯一標識符),LIST(返回郵件的唯一標識符),RETR(返回郵件的全部文本),DELE,QUIT。
服務(wù)器響應(yīng)則以“+OK”或者“-ERR”開頭的,后跟一些參數(shù)或可讀說明。以“+OK”開始表示命令已成功執(zhí)行或者服務(wù)器準備就緒等,以“-ERR”開始表示錯誤或不可執(zhí)行的命令,當響應(yīng)信息包含多行時,只包含“.”的行表示響應(yīng)結(jié)束[3]。
2.3 客戶端功能
課題組除了要實現(xiàn)對設(shè)備的遠程控制,還要實現(xiàn)用戶口令的更新和控制程序的遠程更新,每個功能的完成都需要客戶端發(fā)送正確的命令,所有的命令都是以郵件主題字發(fā)送的。當所發(fā)送的命令不在命令范圍內(nèi),客戶端將收到表示控制命令錯誤的反饋郵件,當所發(fā)送命令是設(shè)備控制命令的時候,每一種設(shè)備都具有自己的命令格式,以及參數(shù)要求,只有當格式和參數(shù)都符合要求,設(shè)備才能執(zhí)行相應(yīng)操作,否則客戶端將收到表示設(shè)備控制命令錯誤的提示信息,當客戶端要求對用戶口令和設(shè)備控制程序進行更新時,客戶端應(yīng)發(fā)送Change和Update命令來完成。下面以幾種簡單設(shè)備為例對客戶端發(fā)送的命令格式進行說明,如表1所示??刂平Y(jié)果的反饋包括以下幾種情況:
*** subject error/success/fail(某設(shè)備控制命令錯誤/控制成功/控制失敗);
pdate success/fail(控制程序更新成功/失?。?/p>
change success/fail(用戶口令更新成功/失?。?;
subject error(控制命令錯誤)。
同時在完成用戶口令更新和控制程序更新時,新的用戶口令和控制程序都是以郵件附件的形式發(fā)送的,故當收到Change和Update命令時,需要提取郵件附件內(nèi)容,附件中的控制程序名必須與設(shè)備上已有的本地控制程序名相同,用戶口令文件名必須與已有的用戶口令文件名相同,否則無法更新。同時傳遞的用戶口令也應(yīng)該遵守一定的規(guī)則,用戶口令更新規(guī)則示例說明如下。
文件名默認:change.txt
文件格式:
<changkaili> //用戶名是<>中內(nèi)容
“1234567890” //用戶密碼是“”中內(nèi)容
表1 客戶端發(fā)送命令的格式及功能Table 1Format and function of client send commands
文件中,用戶名長度為小于等于10個字符;密碼長度為6~10個字符,用戶名和密碼使用標準ASCII碼,不可用中文或其他擴展碼。
嵌入式軟件平臺的核心部分是嵌入式操作系統(tǒng),Linux具有源代碼開放、可裁剪、易于移植和強大的網(wǎng)絡(luò)支持功能等特點,故選其為系統(tǒng)軟件平臺。構(gòu)建Linux操作系統(tǒng)的工作主要包括建立交叉編譯環(huán)境、Boot loader移植、內(nèi)核定制、根文件系統(tǒng)構(gòu)建[4]。具體制作過程可以參照文獻[5]。
3.1 系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)的軟件設(shè)計是基于嵌入式Linux操作系統(tǒng)平臺,它可以分成2大模塊:SMTP模塊和POP3模塊,2大模塊通信通過管道通信機制來完成的。SMTP模塊主要就是完成套接字的建立,綁定(端口25),監(jiān)聽,等待客戶端的連接請求,連接成功后,實現(xiàn)一個最簡潔的SMTP對話機制,同時完成郵件的接收和轉(zhuǎn)存,然后進行郵件解析,根據(jù)正確的主題字來完成相應(yīng)的控制或更新功能,最后根據(jù)命令完成情況構(gòu)造回復(fù)郵件,并寫入管道。POP3模塊主要就是實現(xiàn)套接字的建立,綁定(端口110),監(jiān)聽,等待客戶端的連接請求,連接成功后,監(jiān)聽管道中是否寫入內(nèi)容,當有內(nèi)容寫入后,實現(xiàn)一個POP3對話機制,同時完成控制結(jié)果的反饋。系統(tǒng)總體軟件結(jié)構(gòu)框圖如圖2所示。
圖2 系統(tǒng)軟件結(jié)構(gòu)框圖Fig.2 The structure diagram for system software
不是任意一個客戶端都可以與服務(wù)器建立連接,在客戶端和SMTP服務(wù)器建立聯(lián)系的過程中,需要進行用戶口令的驗證,客戶端發(fā)送的用戶名和密碼是經(jīng)過base64編碼的,而服務(wù)器自身讀取的用戶名和密碼并未經(jīng)過編碼,故需要進行base64編碼才可能驗證成功。郵件的附件內(nèi)容也是經(jīng)過base64編碼的,所以在提取郵件附件內(nèi)容時需要對其進行解碼,才能得到符合要求的更新內(nèi)容。base64是一種用于傳輸8 Bit字節(jié)代碼的編碼方式,編碼解碼示例如下所示。
對用戶名和密碼進行編碼。
用戶名:ckl900823,
編碼結(jié)果: Y2tsOTAwODIz
密碼 :abc12345
編碼結(jié)果:YWJjMTIzNDU=
對附件內(nèi)容進行解碼。
附件:
dXNlcjogPGFiYzkwMDgyMz4NCnBhc3M6ICJ3b3J
kNjc4OSI=
解碼結(jié)果 :user: <abc900823>
pass: "word6789"
以上過程雖然進行了用戶信息的驗證,但是這樣的安全性也是有限的。對此可以根據(jù)不同的控制環(huán)境使用不同的策略,例如:閉環(huán)網(wǎng)絡(luò)訪問策略,只讀訪問策略,引入加密機制等[6]。
在POP3鎖步交互過程中,當客戶端發(fā)送RETR命令后,服務(wù)器要響應(yīng)的是郵件的內(nèi)容,郵件內(nèi)容是通過讀管道獲取的,這個鎖步交互過程就實現(xiàn)了控制結(jié)果的反饋。
3.2 郵件解析與構(gòu)造
電子郵件的報文組成包括郵件頭和郵件體,郵件頭是報文的控制信息,每行的基本語法是:<keyword>:<value>,郵件體是用戶需要發(fā)送的郵件內(nèi)容,RFC822規(guī)定郵件體由7位ASCII文本組成,郵件頭和郵件體之間用空行分隔。郵件頭主要包括:發(fā)件人(From)、收件人(To)、發(fā)送時間(Date)、主題字(Subject)等。郵件體:用戶所需發(fā)送的郵件內(nèi)容,包括正文和附件[7]。郵件信息每行都是以<CR><LF>(回車換行符)作為結(jié)束符,郵件內(nèi)容是以<CR><LF><CR><LF>結(jié)束的。
郵件解析主要是從報文中提取發(fā)送者、主題字、附件名、附件內(nèi)容。這些信息的提取是通過報文中的字符串來發(fā)現(xiàn)的,例如:“From”“Subject”“filename=”等。這里重點說明的是附件內(nèi)容的提取是在字符串“filename=”附件名后,以<CR><LF><CR><LF>開始,以<CR><LF><CR><LF>結(jié)束。這些提取到的信息分別決定了控制結(jié)果回復(fù)的用戶對象,設(shè)備要實現(xiàn)的控制功能或控制程序和用戶口令的更新,更新數(shù)據(jù)的來源。文中將提取到的信息存放在一個結(jié)構(gòu)體中,結(jié)構(gòu)體聲明如下。
struct mail{
unsigned char sender[80]; //發(fā)送者地址
unsigned char recipient[80]; //接收者地址
unsigned char subject[80]; //主題字
unsigned char filename[80]; //附件名
unsigned char rawMail[MAX_MAIL] ;
//郵件內(nèi)容
unsigned char
attachment[MAX_ATTACHMENT]; //附件內(nèi)容
} ;
郵件的構(gòu)造可以通過在一份現(xiàn)有郵件報文的基礎(chǔ)上進行修改來完成,主要修改的內(nèi)容包括主題字、發(fā)送日期和接收郵件地址等。主題字的內(nèi)容可能為:遠程控制設(shè)備的執(zhí)行情況、用戶名口令更新情況、控制程序更新情況、主題字內(nèi)容報錯等。郵件發(fā)送時間通過時間函數(shù)獲取,接收郵件的地址是SMTP鎖步交互中郵件的發(fā)送方的地址。郵件構(gòu)造前的主要內(nèi)容如圖3所示,構(gòu)造后的主要內(nèi)容如圖4所示。
圖3 郵件構(gòu)造前主要內(nèi)容Fig.3 The main contents before mail constructing
圖4 郵件構(gòu)造后主要內(nèi)容Fig.4 The main contents after mail constructing
該設(shè)計在以PXA270處理器為核心的硬件平臺上進行了測試,初步實現(xiàn)了對LED,蜂鳴器等的控制以及用戶口令、設(shè)備控制程序的更新,可以達到預(yù)期的效果。例如:當發(fā)送leds 1 0/1時就會實現(xiàn)燈的亮滅操作,操作完成后就會回復(fù)控制成功。發(fā)送的燈控命令如圖5所示,控制結(jié)果反饋如圖6所示。
圖5 發(fā)送燈控命令Fig.5 Sending light control command
圖6 控制結(jié)果反饋Fig.6 The control result feedback
該設(shè)計介紹了基于ARM的硬件平臺,在嵌入式Linux操作系統(tǒng)下,利用SMTP-POP3郵件協(xié)議來實現(xiàn)遠程控制的方法??蛻舳瞬捎猛ㄓ玫泥]件收發(fā)方式,操作簡單,降低了對操控人員技術(shù)上的要求,而且省去了客戶端的開發(fā),降低了研發(fā)成本。SMTP、POP3協(xié)議又是比較簡單的通信協(xié)議,降低了對軟件系統(tǒng)、通信系統(tǒng)的設(shè)計與維護難度。增加POP3 Server用作響應(yīng)的回復(fù)機制,這使得客戶不僅能遠程控制設(shè)備而且還能對控制操作的結(jié)果了然于心,同時還提供了應(yīng)用程序更新和用戶口令更新功能,方便進行設(shè)備更新和用戶的安全使用。在此方案的基礎(chǔ)上完全可以實現(xiàn)設(shè)備智能化網(wǎng)絡(luò)化的管理。
[1]李朋飛,魯凱生,羅剛,等. 基于電話網(wǎng)的嵌入式遠程控制器的設(shè)計[J]. 微計算機信息,2006,22(17) :58-60. Li Pengfei,Lu Kaisheng,Luo Gang,et al. The Design of the Embedded Remote Controller Based on Telephone Network[J]. Microcomputer Information,2006,22(17) :58-60.
[2]段善榮. 基于Linux的局域網(wǎng)郵件服務(wù)器設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2012,11(6) :122-124. Duan Shanrong. The Design and Implementation of LAN Mail Server Based on Linux[J]. Software Tribune,2012,11(6) :122-124.
[3]吳剛,王旭仁,張信杰. 郵件審計系統(tǒng)的設(shè)計與實現(xiàn)[J]. 微計算機信息,2010,26(6) :131-132,107. Wu Gang,Wang Xuren,Zhang Xinjie. The Design and Implementation of Mail Auditing System[J]. Microcomputer Information,2010,26(6) :131-132 ,107.
[4]Wei D S. Embedded Linux Application Development Complete Manual[M]. Beijing :Post & Telecom Press,2008:1-579.
[5]付詩君,陳其松. 基于ARM9+Linux的遠程車載視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J]. 自動化與儀器儀表,2014(4) :131-134. Fu Shijun,Chen Qisong. The Design and Implementation of Remote Vehicle Video Monitor System Based on ARM+Linux[J]. Automation & Instrumentation,2014(4) :131-134.
[6]廖斌,葉瑋瓊,楊連樂. 基于ARM的嵌入式SMTP遠程控制設(shè)計[J]. 微計算機信息,2007,23(11) :19-21. Liao Bin,Ye Weiqiong,Yang Lianle. The Design of Embedded SMTP Remote Control Based on ARM[J]. Microcomputer Information,2007,23(11) :19-21.
[7]鄭曉宇. 基于SMTP服務(wù)的遠程監(jiān)控技術(shù)在項目管理中的應(yīng)用[J]. 機電信息,2010(30) :37-38. Zheng Xiaoyu. Application of SMTP-Based Remote Monitoring Technology in Project Management[J]. Mechanical and Electronic Information,2010(30):37-38.
(責(zé)任編輯:申劍)
Design and Implementation of Embedded Remote Control Based on SMTP and POP3 Protocols
Cheng Kaili,Ye Weiqiong,Xu Lin
(School of Computer and Communication,Hunan University of Technology,Zhuzhou Hunan 412007,China)
Introduces the method of embedded remote control based on SMTP and POP3 protocol. On the hardware platform with PXA270 processor as core,simplifies SMTP Server and POP3 Server,completes message parsing and strucure etc.,thus makes the system complete sending control command,remote update control program,remote update user password,and feedback control results. The experiment shows that the system is stable and reliable.
remote control; SMTP protocol; POP3 protocol
TP399
A
1673-9833(2015)01-0088-05
2014-11-09
湖南省教學(xué)改革研究重點基金資助項目(ZJA2013043),湖南工業(yè)大學(xué)教學(xué)改革研究基金資助項目(2012C66)
成凱麗(1990-),女,河南濟源人,湖南工業(yè)大學(xué)碩士生,主要研究方向為嵌入式系統(tǒng),E-mail:foxandmail@163.com
10.3969/j.issn.1673-9833.2015.01.016