版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 題目:基于ARM的嵌入式Web服務器設(shè)計與實現(xiàn) 學 號: 1308010139姓 名: 吳明川班 級: 1308010139專 業(yè): 計算機科學與技術(shù)課程老師: 孔軍二零一六年五月 摘 要隨著計算機、網(wǎng)絡(luò)通信和Internet 技術(shù)的飛速發(fā)展和不斷進步,嵌入式系統(tǒng)在家庭和工業(yè)應用越來越廣泛。如何將嵌入式系統(tǒng)和工業(yè)控制系統(tǒng)接入Internet,綜合利用嵌入式系統(tǒng)資源,實現(xiàn)嵌入式系統(tǒng)的遠程管理和控制,已成為倍受關(guān)注的研究課題,而實現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)化則成為嵌入式系統(tǒng)的發(fā)展趨勢。網(wǎng)絡(luò)通信時,應用程序使用C/S(客戶/服務器)模式進行信息交互。傳統(tǒng)的服務器程序一般運行在大型的擁有高級操作系統(tǒng)的服務器
2、的計算機上,這樣服務器軟件需要強大的硬件和系統(tǒng)軟件支持。嵌入式網(wǎng)絡(luò)服務器是利用嵌入式系統(tǒng)實現(xiàn)服務器的軟件和硬件功能,是嵌入式技術(shù)和網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物。與傳統(tǒng)服務器相比,嵌入式Web服務器具有結(jié)構(gòu)簡單、體積小、可靠性強以及方便靈活等特點。這些讓它具有很大的發(fā)展?jié)摿?。另一方面,嵌入式Web服務器與傳統(tǒng)的web服務器相比,也受到一些限制。傳統(tǒng)的Web服務器主要用于處理較大的客戶量的同時并發(fā)訪問,硬件方面有強大的處理器和內(nèi)存支持,軟件方面有商業(yè)數(shù)據(jù)庫支持,而嵌入式Web服務器的處理能力和存儲容量都有限,這就要求嵌入式Web服務器在設(shè)計過程中需要盡量合理利用資源。將嵌入式技術(shù)與Web 技術(shù)相結(jié)合,已成
3、為目前嵌入式系統(tǒng)的一個重要發(fā)展方向和必然趨勢。利用源代碼開放的uClinux 為操作系統(tǒng)平臺,實現(xiàn)了以ARM微處理器為核心的嵌入式Web 服務器,在分析了嵌入式Web 服務器的體系結(jié)構(gòu)后,給出了系統(tǒng)的硬件結(jié)構(gòu)組成和軟件設(shè)計。對Web 服務器的測試結(jié)果表明,該服務器運行穩(wěn)定、控制方便,將在智能家居、遠程數(shù)據(jù)采集、工業(yè)控制等領(lǐng)域有著廣泛的應用前景。 關(guān)鍵詞:網(wǎng)絡(luò)通信;嵌入式系統(tǒng);ARM處理器;uClinux;Boa服務器;引言 隨著Internet 技術(shù)的飛速發(fā)展,導致許多領(lǐng)域的傳統(tǒng)控制方式發(fā)生變革。這些領(lǐng)域的控制系統(tǒng)可以通過Web 服務器接入Internet,這樣用戶在世界任何一個地方都可以通過
4、Internet 獲取Web 服務器提供的信息,進而實現(xiàn)系統(tǒng)的遠程控制和管理。但以具有高運算處理能力和海量存儲容量的工作站或PC機為硬件平臺,以非實時操作系統(tǒng)為軟件平臺,運行著大型復雜程序的傳統(tǒng)Web 服務器,并非在任何環(huán)境下都適用,尤其是對實時性要求比較高的領(lǐng)域,如工業(yè)控制、遠程數(shù)據(jù)采集等?;谇度胧较到y(tǒng)的Web服務器的出現(xiàn),為以上問題的解決開辟了一條新途徑。1 發(fā)展背景 隨著計算機技術(shù)的發(fā)展,嵌入式系統(tǒng)已成為計算機領(lǐng)域的一個重要組成部分。廣義講,凡是帶有微處理器的專用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng)。所謂嵌入式設(shè)備,是指具有計算機功能,但又不稱為計算機的設(shè)備或器材,幾乎包括了我們周期的所有電
5、路設(shè)備:PDA、手機機頂盒、汽車、微波爐、電梯、安全系統(tǒng)、自動售貨機、醫(yī)療儀器、自動取款機等。嵌入式系統(tǒng)可以通過各種無線形式(如WAP、BlueTooth等)和有線形式(TCP/IP、PPP等)的網(wǎng)絡(luò)連接方式實現(xiàn)它們之間的相互連接,因此,在網(wǎng)絡(luò)通信市場上極具生命力。現(xiàn)在人們對Internet應用的依賴程序日漸增加,也促進了嵌入式技術(shù)的增長。信息家電的發(fā)展也為嵌入式Internet技術(shù)提供空間,如面向Internet的信息冰箱。這種信息家電的特點就是價格低廉、軟件功能強大、全面支持Internet訪問、軟件可通過網(wǎng)絡(luò)升級、有效保護用戶投資。 嵌入式Internet技術(shù)主要包括傳感器技術(shù)、通信技術(shù)
6、、計算機技術(shù)和集成電路技術(shù)等。以前的設(shè)備控制系統(tǒng)一般是通過專用通信線中進行的,其通信介質(zhì)、通信協(xié)議、相關(guān)軟件和硬件都是專用的,而Internet技術(shù)的發(fā)展使嵌入式設(shè)備的遠程控制和管理方式有了改變。不需要專用的通信線路,并且傳輸?shù)男畔⒉痪志钟跀?shù)據(jù)信號,還有聲音和圖像。最重要的是其通信協(xié)議是標準且公開的。隨著Web技術(shù)的發(fā)展,幾乎改變了現(xiàn)在的信息表達形式,很多應用都是基于Web技術(shù)的。由于HTML語言的標準統(tǒng)一性,只要在嵌入式設(shè)備中有一個微型服務器,就可以使用任意一種Web瀏覽器接收和發(fā)送信息。所以如何設(shè)計這種特別Web服務器,如何在嵌入式設(shè)備中安裝Web服務器,就成了嵌入式Web服務器的發(fā)展和研
7、究方向。 對于嵌入式Web服務器的研究和應用,其意義是重大的。它為我們管理、控制和監(jiān)測各種各樣設(shè)備提供了一個很好的途徑。這種設(shè)備可以是具有有限內(nèi)存資源的8位或16位系統(tǒng),已足夠提供一個用戶界面,而且這種方式是基于Internet的。這種設(shè)備可以在世界任何一個地方,只要它連入Internet就能夠控制它。1.1 課題的研究意義Internet的迅猛發(fā)展,傳統(tǒng)的Client/server體系結(jié)構(gòu)(客戶機/服務器),漸漸的在某些方面顯示出它的局限性,Browser/server結(jié)構(gòu)(瀏覽器/服務器)的出現(xiàn)恰恰彌補了這種缺陷。B/S方式已成為一種時尚,大部分網(wǎng)絡(luò)應用系統(tǒng)都是以這種B/S方式與網(wǎng)絡(luò)用戶交
8、換信息。B/S的基礎(chǔ)是客戶端要有一個瀏覽器程序,服務器端要有一個與之對應的Web服務器。顯然,Web服務器在B/S方式下起著決定性的作用,因此,一般互聯(lián)網(wǎng)站都采用功能強大的通用Web服務器。隨著網(wǎng)絡(luò)各個核心部分業(yè)務量的提高,其訪問量和數(shù)據(jù)流量快速增長,處理能力和計算強度也相應增大,使得單一設(shè)備根本無法承擔,而且許多企業(yè)級應用系統(tǒng)的應用請求具有突發(fā)性和緊急性的特點,當應用訪問急劇上升時,容易造成網(wǎng)絡(luò)瓶頸。解決這一問題的辦法是采用多臺嵌入式Web服務器為一個應用服務,集群負載均衡機制就是為解決多個網(wǎng)絡(luò)設(shè)備之間實現(xiàn)合理的業(yè)務量分配而提出的。 1.2 論文研究內(nèi)容嵌入式Web服務器是指將Web服務器引
9、入到現(xiàn)場測試和控制設(shè)備中,在相應的硬件平臺和軟件系統(tǒng)的支持下,使傳統(tǒng)的測試和控制設(shè)備轉(zhuǎn)變?yōu)榫邆淞艘訲CP/IP為底層通信協(xié)議,Web技術(shù)為核心的基于互聯(lián)網(wǎng)的網(wǎng)絡(luò)測試和控制設(shè)備。EWS系統(tǒng)與傳統(tǒng)的Web應用相比,簡化了系統(tǒng)結(jié)構(gòu),將信息采集和信息發(fā)布都集成到現(xiàn)場的測控設(shè)備中。而有了標準的接口形式和通信協(xié)議,內(nèi)嵌于設(shè)備的從Web服務器同樣可以向任何接入它所在網(wǎng)絡(luò)的合法用戶提供統(tǒng)一的基于瀏覽器方式的操作和控制界面,瀏覽器成了設(shè)備的前端控制板。由于Web技術(shù)的開放性和獨立平臺特性,大大降低了軟件系統(tǒng)和通信系統(tǒng)的設(shè)計、維護工作量,節(jié)省了人員培訓費用等,提高了現(xiàn)場測試和控制設(shè)備的管理水平。本文設(shè)計的基于AR
10、M的嵌入式Web服務器,響應速度快,實時性強,用戶通過瀏覽器中的表單向服務器發(fā)送控制信息,操作方便、快捷,經(jīng)過適當修改,能夠很好地適應智能家居等遠程監(jiān)控的需要。2 嵌入式Web服務器的軟件構(gòu)成嵌入式 Web 服務器主要解決的問題是通過 Internet 來進行遠程訪問和控制現(xiàn)場的設(shè)備,所以必須在嵌入式設(shè)備中配置 TCP/IP 協(xié)議和 Web 服務器 , 以解決網(wǎng)絡(luò)互聯(lián)問題。但是嵌入式服務器系統(tǒng)只需要使用其中的某些基本 的功能,也要減去一些使用不到有功能 ,以節(jié)省有限的嵌入式資源。TCP/IP 此外還要用到的軟件資源有嵌入式實時操作系統(tǒng) 、HTTP 協(xié)議 ,同時帶有 SMTP 和 SNMP 協(xié)議
11、 ,使其具有網(wǎng)絡(luò)管理的簡單功能 ,通過網(wǎng)絡(luò)可以對接 入到 Internet 上的設(shè)備進行管理和控制。 2.1 CGI技術(shù)2.1.1 CGI概述由于傳統(tǒng)的Web 服務器無法實現(xiàn)Web 數(shù)據(jù)庫訪問功能,CGI 技術(shù)充當了訪問數(shù)據(jù)庫的重要媒介。CGI 是使用應用相關(guān)軟件增強Web 服務器的一種標準方法, 可以用任何語言書寫。CGI 根據(jù)需求更新網(wǎng)頁, 是一種公共網(wǎng)關(guān)接口。它通過客戶提供給Web 服務器的各種信息, 由Web 服務器啟動指定CGI 模塊函數(shù), 完成客戶端與服務器端動態(tài)的交互, 從而實現(xiàn)靜態(tài)HTML 網(wǎng)頁無法實現(xiàn)的功能( 如表單查詢、數(shù)據(jù)庫查詢等)。通常CGI 應用程序處于休眠狀態(tài), 通
12、過使用一定的網(wǎng)絡(luò)事件觸發(fā)回調(diào)函數(shù)來實現(xiàn), 并顯示動態(tài)頁面。例如,Web 服務器收到一個URL 里面包含的網(wǎng)頁請求時, 將執(zhí)行結(jié)果返回給HTML 網(wǎng)頁,CGI 可實現(xiàn)處理表格、數(shù)據(jù)庫查詢和電子郵件等操作。2.1.2CGI工作原理系統(tǒng)嵌入式Web服務器通過CGI程序來獲取用戶的請求、查詢條件,使用HTML方式描述結(jié)果并直接回送到客戶端的瀏覽器上,此過程中瀏覽器將用戶輸入的數(shù)據(jù)發(fā)送到Web服務器,Web服務器將數(shù)據(jù)使用STDIN(標準輸入)送到CGI程序。在執(zhí)行CGI程序后,會訪問數(shù)據(jù)庫的記錄,最后使用STDOUT輸出HTML形式的結(jié)果文件,經(jīng)Web服務器送回瀏覽器顯示給用戶。使用CGI實現(xiàn)客戶與服
13、務器的交互分一下九個標準步驟:Web客戶(瀏覽器)通過URL與Web服務器相連;服務發(fā)送HTML(和別的組成請求頁面的文件)給用戶,一旦頁面內(nèi)容傳完,這個連接自動斷開;在客戶方,HTML腳本提示用戶做動作或輸入,當用戶響應后客戶請求Web服務器建立一個新的連接;一旦建立連接,客戶把用戶輸入的數(shù)據(jù)傳送給Web服務器;Web服務器把這些信息和別的進程變量傳給由HTML以URL形式提交的CGI程序;CGI程序根據(jù)輸入作出相應的操作,產(chǎn)生對客戶的響應(一般以一個HTML文檔的形式),并將其傳送給Web服務器;Web服務器把應答數(shù)據(jù)傳送給客戶,并關(guān)閉連接;圖2.4 CGI工作原理其中CGI與表單之間的信
14、息交互方法有兩種模式:“GET”和“POST”。選擇哪一種模式取決于表單(FORM)的“METHOD”字段的設(shè)置,如果METHOD設(shè)定為GET,CGI程序從環(huán)境變量QUER_STRING中獲取數(shù)據(jù)。為了解釋數(shù)據(jù)和執(zhí)行需要的動作,CGI程序必須要分析(處理)此字符串;如果METHOD設(shè)定為POST,數(shù)據(jù)會以STDIN,必須使用CONTENT_LENGTH值。在本設(shè)計中CGI程序采用的是POST方法。如果想從服務器獲得數(shù)據(jù)并且不改變服務器上的數(shù)據(jù)時,應該選用GET方法;也有例外,當傳輸?shù)臄?shù)據(jù)很長時,選用POST方法較好;使用GET方式編寫CGI程序會更加簡單,但是POST方式則更加先進;當發(fā)送的數(shù)
15、據(jù)將改變Web服務器端的數(shù)據(jù)時,或者想給CGI程序傳輸大量數(shù)據(jù)(一般地,超過1024字節(jié),這是URL的極限長度)時,應該選用POST方法。 3 嵌入式Web 服務器簡述 嵌入式Web 服務器(Embedded Web Server)是指將Web 服務器嵌入到控制設(shè)備和現(xiàn)場測試中,借助于相關(guān)的軟硬件平臺系統(tǒng),將傳統(tǒng)嵌入式設(shè)備轉(zhuǎn)變成了以TCP/IP 為底層通信協(xié)議和Web 技術(shù)為核心的網(wǎng)絡(luò)測試及遠程控制設(shè)備。嵌入式Web 服務器基于HTTP 協(xié)議運作,具有標準的接口形式和通信協(xié)議,所以它可以向接入其所在網(wǎng)絡(luò)的用戶提供統(tǒng)一的基于瀏覽器的控制界面和相關(guān)操作。這種技術(shù)因具有平臺獨立特性和開放性,在某種程
16、度上降低了開發(fā)難度,使通信系統(tǒng)和軟件系統(tǒng)的設(shè)計維護工作更容易,提升了控制設(shè)備和現(xiàn)場測試的管理水平。如圖1所示是典型的嵌入式Web服務器的系統(tǒng)模型:圖1 典型的嵌入式Web服務器系統(tǒng)模型Internet可以提供多種網(wǎng)絡(luò)服務,比如通過SMTP(簡單郵件傳輸協(xié)議)收發(fā)郵件,通過FTP(文件傳輸協(xié)議)傳輸文件。Internet能得到如此大規(guī)模的流行,WWW(World Wide Web)技術(shù)居功至偉。可以說如果沒有WWW和HTTP技術(shù)就不會有這么多人使用Internet,正是WWW技術(shù)把Internet的結(jié)構(gòu)、服務和應用引上了一個新臺階。3.1 嵌入式Web 服務器的主要應用目前嵌入式Web 服務器主
17、要用于設(shè)備管理和企業(yè)應用程序網(wǎng)絡(luò)擴展,它作為后臺程序在運行嵌入式設(shè)備上,用戶可以通過網(wǎng)絡(luò)對設(shè)備進行配置、監(jiān)測和控制,以保證設(shè)備正常而高效地運作。Web 接口可以讓用戶借助于Web 瀏覽器和網(wǎng)絡(luò)來訪問嵌入式設(shè)備。以這種方式對設(shè)備進行管理不僅可以監(jiān)測和控制,而且可以根據(jù)設(shè)備的特點設(shè)計地更加人性化和智能化。Web 服務已成為支撐現(xiàn)代應用程序的技術(shù)和系統(tǒng)的核心組件,目前大部分企業(yè)用戶都希望為他們的程序添加上基于Web 的用戶接口。3.2 嵌入式Web 服務器的優(yōu)點嵌入Web 服務器的優(yōu)點主要體現(xiàn)在以下幾個方面:1)它可以與Internet 連接,不再使用專用的線路,這樣就具有了最大的普及范圍;2)傳輸
18、內(nèi)容不局限于數(shù)據(jù)信息,還有圖像和聲音等多媒體信息;3)通信協(xié)議(HTTP)獨立于系統(tǒng)平臺,而且是標準而且公開的;4)Web 頁面使用的HTML 語言是統(tǒng)一的網(wǎng)頁語言, 這使標準化界面與客戶端的軟硬件平臺相互獨立, 節(jié)省了客戶端的開發(fā)工作;5)Web 架構(gòu)能夠減少了在設(shè)計系統(tǒng)時的工作量;6)存在大量的工具和函數(shù)庫,減少了開發(fā)的工作量;7)嵌入式Web 服務器具有通用性,能夠嵌入到任何設(shè)備當中。通過應用程序接口,服務器可以運行程序去實現(xiàn)高級功能,普通的監(jiān)控方式達不到這樣的效果。3.3 嵌入式Web 服務器實現(xiàn)原理Web 服務器監(jiān)聽來自客戶端請求,并根據(jù)請求類型提供相對應的服務。它將Web 服務器引
19、入到現(xiàn)場嵌入式設(shè)備中,并將信息采集與發(fā)布都集成到現(xiàn)場的嵌入式設(shè)備中。在相應的軟硬件平臺支持下,利用標準的通信協(xié)議和接口形式,內(nèi)嵌于嵌入式設(shè)備的Web 服務器就具備了向接入它所在網(wǎng)絡(luò)的合法用戶提供統(tǒng)一的基于瀏覽器方式的控制界面和操作,此時瀏覽器成了設(shè)備的前端控制板。當前在嵌入式應用領(lǐng)域,主要通過兩種方式將嵌入式系統(tǒng)轉(zhuǎn)變?yōu)榍度胧絎ebServer:1)通過網(wǎng)關(guān)服務器實現(xiàn)Internet 接入;2)直接通過TCP/IP 協(xié)議實現(xiàn)嵌入式設(shè)備的Internet 接入。4 嵌入式Web 服務器硬件整體結(jié)構(gòu) 嵌入式Web 服務器的硬件系統(tǒng)包含了具有Web 通信能力的微處理器,它可以通過現(xiàn)場總線與應用系統(tǒng)相連
20、,也可以與前端的應用系統(tǒng)直接集成在一起。其硬件結(jié)構(gòu)如圖2所示。系統(tǒng)中的FLASH ROM 存儲器是用來存儲軟件系統(tǒng)的內(nèi)核、HTML 文檔、TCP/IP 協(xié)議;RAM 存儲器用于存儲各種數(shù)據(jù);網(wǎng)絡(luò)接口用于與Internet 連接;前端現(xiàn)場測控的硬件完成對現(xiàn)場設(shè)備的監(jiān)測、監(jiān)測、報警、自動控制等功能;微型處理器負責全體的管理與運行;人機接口是可選條件,實現(xiàn)在本地對現(xiàn)場設(shè)備的人工監(jiān)控。數(shù)據(jù)存儲器RAM存儲器FLASH ROM 網(wǎng)絡(luò)接口部件 微型處理器 應用系統(tǒng)硬件 圖2 (a) 嵌入式系統(tǒng)web 服務器硬件結(jié)構(gòu) Internet虛擬文件系統(tǒng)文檔(網(wǎng)頁頁面小程序)HTP引擎配置模塊安全模塊應用程序接口嵌
21、入式操作系統(tǒng) 應用系統(tǒng)管理嵌入式應用系統(tǒng) 圖2(b) 嵌入式系統(tǒng)Web 服務器軟件系統(tǒng)4.1 嵌入式Web 服務器軟件構(gòu)成 嵌入式Web 服務器主要解決的問題是通過Internet 來進行遠程訪問和控制現(xiàn)場的設(shè)備,所以必須在嵌入式設(shè)備中配置TCP/IP 協(xié)議和Web 服務器,以解決網(wǎng)絡(luò)互聯(lián)問題。但是嵌入式服務器系統(tǒng)只需要使用其中的某些基本的功能,TCP/IP 也要減去一些使用不到有功能,以節(jié)省有限的嵌入式資源。此外還要用到的軟件資源有嵌入式實時操作系統(tǒng)、HTTP 協(xié)議, 同時帶有SMT P 和SNMP 協(xié)議,使其具有網(wǎng)絡(luò)管理的簡單功能,通過網(wǎng)絡(luò)可以對接入到Internet 上的設(shè)備進行管理和控
22、制。4.2 精簡TCP/IP 協(xié)議及實現(xiàn) 嵌入式Web 服務器軟件中必須實現(xiàn)TCP/IP 協(xié)議,但要根據(jù)實際的需求作相應的裁減。精簡的TCP/IP 協(xié)議通常只包含TCP,IP,ARP,ICMP 等協(xié)議。4.2.1 ARP 協(xié)議及其實現(xiàn) 嵌入式Web 服務器軟件方面需實現(xiàn)ARP 協(xié)議中的應答部分: 嵌入式Web 服務器在收到遠程ARP 請求后, 將ARP 請求報文中目標機和本地IP、物理地址進行了交換處理,并將EWS 的物理地址寫在ARP 應答報文的本地物理地址段。實際上此ARP 協(xié)議的實現(xiàn)是通過向網(wǎng)絡(luò)接口層發(fā)送含有目標機物理地址和本機IP 地址的ARP 應答報文這一過程來完成。4.2.2 IC
23、MP 協(xié)議及其實現(xiàn) ICMP(網(wǎng)際控制報文協(xié)議)主要用來將處理一個IP 數(shù)據(jù)過程中的錯誤顯示出來,并提供相關(guān)狀態(tài)和管理信息。ICMP 的差錯信息由8 位代碼和8 位類型組成。嵌入式Web 服務器簡化了ICMP 協(xié)議,只需簡化實現(xiàn)與Ping 命令相關(guān)的ICMP 報文處理部分。具體可通過編制PingACK()過程來完成,用PingACK()監(jiān)測Ping 命令,如果監(jiān)測到對本機的Ping 連接,則發(fā)送類型為0 的ICMP 報文。4.2.3 IP 協(xié)議及其實現(xiàn) IP 協(xié)議提供無連接的、不可靠的數(shù)據(jù)分組傳送服務,在嵌入式Web 服務器中,IP 協(xié)議只需要完成接收數(shù)據(jù)的IP 解包和發(fā)送數(shù)據(jù)的IP 封裝。I
24、P 協(xié)議在嵌入式Web 服務器中的實現(xiàn)可通過以下兩個過程來完成:1)IPPack(),此過程將傳輸層傳來數(shù)據(jù)的前部添加20 字節(jié)的IP 報頭。2)IPUnpack( ),此過程提取網(wǎng)絡(luò)接口層送來的IP 報頭的20 字節(jié)數(shù)據(jù)并與本機的IP 地址進行比較,如果相同,記錄對方的IP 地址,并去除報數(shù)據(jù)的前20 字節(jié)的報頭;否則,丟棄。4.2.4 TCP 協(xié)議及實現(xiàn) TCP 協(xié)議提供面向連接的、可靠的字節(jié)流傳輸服務。建立連接、數(shù)據(jù)傳輸和關(guān)閉連接的工作過程,保證了TCP 協(xié)議數(shù)據(jù)傳輸?shù)目煽啃?。在?shù)據(jù)傳輸前,必須在信源與信宿建立一條連接,只有連接成功才可以發(fā)送數(shù)據(jù)。此外,接收端也要對收到的第一個報文進行確
25、認,未經(jīng)確認的報文被認為是出錯。由于嵌入式Web 服務器傳輸數(shù)據(jù)量較少,支持單進程的TCP 任務即可,故只需要簡化TCP協(xié)議的數(shù)據(jù)重組和分組的功能。方法為:嵌入式Web 服務器在本地打開一個端口監(jiān)聽TCP 報文數(shù)據(jù),監(jiān)測到遠程用戶對系統(tǒng)的TCP請求連接時,系統(tǒng)發(fā)送確認報文并建立TCP 連接,然后開始傳送數(shù)據(jù)。發(fā)送數(shù)據(jù)時,TCP 狀態(tài)機會在數(shù)據(jù)前面加上TCP 報頭后發(fā)送到IP 層; 接收數(shù)據(jù)時, 從IP 層來的數(shù)據(jù)經(jīng)過TCP 狀態(tài)機去掉TCP 報頭后送到應用層。TCP 協(xié)議軟件可通過兩個過程來實現(xiàn):1)TCPPack( ),將TCP 報頭添加到應用層送來的數(shù)據(jù)前部;2)TCPUnpack( ),
26、將網(wǎng)絡(luò)接口層送來的TCP 報數(shù)據(jù)的34 字節(jié)數(shù)據(jù)(目的端口號)與系統(tǒng)默認端口作對比,如相同,則去除數(shù)據(jù)報的前20 字節(jié)的報頭;否則,丟棄。TCP 數(shù)據(jù)報重發(fā)、確認是通過發(fā)送特定內(nèi)容的報文來控制。4.3 HTTP 協(xié)議 HTTP 引擎是嵌入式Web 服務器的核心,它是瀏覽器與Web 服務器通信的協(xié)議。HTTP 規(guī)定了瀏覽器和服務器之間傳輸?shù)南⒏袷郊案鞣N控制信息和發(fā)送和處理請求的標準方式,從而定義了所有Web 通信的基本框架。如圖所示,在嵌入式Web 服務器中,為了不影響嵌入式系統(tǒng)的CPU 和內(nèi)存資源而又得到一個穩(wěn)定的用戶界面,應該使用HTTP1.0 標準。 HTTP客戶端 HTML文檔 HTT
27、P服務器端 CGI4.4 CGI 接口 CGI 也就是通用網(wǎng)關(guān)接口,它定義了CGI 腳本與Web 服務器之間的接口標準,其主要功能是在Web 環(huán)境下,將客戶端的一些信息傳送給服務器端,Web 服務器接收有關(guān)信息并放入環(huán)境變量,然后啟動所指定的CGI 腳本以完成特定的工作。CGI 腳本從環(huán)境變量中獲取相關(guān)信息來運行,最后以HTML 格式輸出相應的執(zhí)行結(jié)果返回給瀏覽器端。由于用戶能傳遞不同的參數(shù)給CGI 腳本,所以CGI 技術(shù)使得瀏覽器和服務器之間具有交互性。5 系統(tǒng)軟件設(shè)計5.1 嵌入式操作系統(tǒng) uClinux 是一種專為嵌入式系統(tǒng)設(shè)計的Linux,它從Linux 2.0/2.4 內(nèi)核派生而來,
28、專門應用于沒有MMU的CPU9。uClinux 帶有一個完整的TCP/IP 協(xié)議,同時它還支持許多其他網(wǎng)絡(luò)協(xié)議。因此,uClinux對于嵌入式系統(tǒng)來說,是一個網(wǎng)絡(luò)完備的操作系統(tǒng)。另外,由于Linux 的源代碼開放性,任何新的網(wǎng)絡(luò)協(xié)議都可以很容易加入到內(nèi)核中,用戶可以方便地開發(fā)定制,不受任何限制。正是基于以上原因,本系統(tǒng)采用了uClinux作為嵌入式Web服務器的操作系統(tǒng)。5.2 Boa的移植 在uClinux 下構(gòu)建Boa服務器的方法由以下步驟完成: (1)從 上下載Boa的源代碼,將其解壓后生成Makefile 文件。修改Makefile 文件,將文件中的CC=gcc
29、改為CC=arm-linux-gcc,CPP=gcc-E 改為CPP=arm-linux-gcc-E。然后運行make 進行編譯,得到可執(zhí)行文件boa,再將調(diào)試信息舍去,使其瘦身。 (2)修改boa.conf文件。Boa啟動時需要用到一個配置文件boa.conf,該文件用于配置Boa服務器的相應接口、服務器名稱、相關(guān)文件路徑等。在這里,將Usernobody 改為User 0,將Group nogroup 改為Group 0,將DocumentRoot/var/www 改為DocumentRoot/etc/boa/html,將ScriptAlias/cgi-bin/usr/lib/cgi-bi
30、n/修改為ScriptAlias/cgi-bin/etc/boa/cgi-bin/。 (3)由于默認的根文件系統(tǒng)是只讀的,所以在編譯內(nèi)核前,需要根據(jù)配置文件boa.conf 在文件系統(tǒng)中建立相關(guān)目錄。 (4)將可執(zhí)行文件boa、配置文件boa.conf、可執(zhí)行的CGI程序和網(wǎng)頁文件分別放入對應的目錄中,并在/etc/boa/html中建立主頁文件index.html。 (5)重新編譯內(nèi)核,將編譯好的內(nèi)核下載到開發(fā)板。5.3 軟件實現(xiàn) 為了實現(xiàn)客戶瀏覽器同Web 服務器之間的動態(tài)交互性,需要采用某種服務器端技術(shù)來動態(tài)生成Web頁。目前,實現(xiàn)動態(tài)網(wǎng)頁的四種技術(shù)分別是CGI、ASP、PHP 和JSP
31、,但uClinux 不支持ASP 和PHP,故采用CGI來實現(xiàn)動態(tài)Web頁面。 CGI是一種在Web 服務器中運行的程序,它定義了Web 服務器與其他可執(zhí)行程序之間進行交互的接口標準。當Web 服務器接收到客戶瀏覽器發(fā)送的HTTP請求時,先判斷它是靜態(tài)頁面請求還是CGI 動態(tài)請求,如果是后者就將數(shù)據(jù)傳遞給CGI 程序,并重定向CGI程序的輸出到Web 頁,CGI程序在處理時將數(shù)據(jù)封裝成HTML形式發(fā)送到輸出,這樣客戶端瀏覽器就可以看到對應的Web 頁。軟件的設(shè)計框架如圖3所示。開始 監(jiān)聽連接連接是否合法 N Y 接受并解析HTTP請求 靜態(tài)頁面請求/CGI動態(tài)請求靜態(tài)頁面請求 CGI動態(tài)請求
32、直接輸出HTML靜態(tài)文件數(shù)據(jù)封裝并發(fā)送由CGI程序產(chǎn)生網(wǎng)頁內(nèi)容 圖3 軟件設(shè)計框圖 其中的監(jiān)聽連接部分是一個無限循環(huán),它總在監(jiān)聽來自瀏覽器端的連接請求,如果發(fā)現(xiàn)連接合法,就建立起客戶端瀏覽器和Web 服務器的連接。可以利用uClinux提供的Socket套接字在80端口進行監(jiān)聽連接,其過程為:socket()bind()listen()accept()。 在Web 環(huán)境中,瀏覽器與服務器之間的數(shù)據(jù)交互,很多是通過HTTP中的Form表單完成的,F(xiàn)orm提供了兩種數(shù)據(jù)傳輸?shù)姆绞紾ET 和POST 方法。雖然HTTP支持的方法有多種,考慮到硬件資源的限制和系統(tǒng)響應的速度,這里只響應GET和POST
33、兩種請求。在嵌入式服務器端,CGI程序接收到來自客戶端瀏覽器的請求,將請求分解后,查看其請求的方法是GET還是POST。當為GET請求時,從請求行中讀取用戶請求的文件名;當為POST 請求時,讀取請求行中的文件名和報文主體中用戶提交的表單數(shù)據(jù),并對表單數(shù)據(jù)進行處理。 當用戶在網(wǎng)頁中輸入數(shù)據(jù)時,數(shù)據(jù)會先傳給Web服務器,再傳給CGI 程序,而Web 服務器將數(shù)據(jù)傳給CGI 程序前,會先經(jīng)過一個編碼程序,這樣CGI 程序如果想要得到用戶輸入的原始數(shù)據(jù),就需要對數(shù)據(jù)進行解碼。Web 服務器中對用戶數(shù)據(jù)進行編碼的原則是:每個輸入字段的名稱和用戶輸入的數(shù)據(jù)會形成一系列的鍵-值對,鍵和值由“=”分開;每個
34、配好對的鍵-值之間,由“&”分開;對字段中的特殊符號,用十六進制的ASCII 碼的方式來編碼,空格則以“+”來編碼。因此,CGI 程序要想對數(shù)據(jù)解碼,就需要將每個配好對的鍵=值分離出來,去除配對數(shù)據(jù)間的“&”,把“+”置換成空格,將十六進制的ASCII 碼置換成原來的數(shù)據(jù)。最后,就可以得到用戶輸入的原始數(shù)據(jù)。 雖然動態(tài)網(wǎng)頁的處理由CGI完全可以實現(xiàn),但由于Web 服務器每運行一個CGI程序,就需要fork 一個進程為其服務,這樣服務器與瀏覽器的交互越多,對服務器的總體性能影響就越大。因此,對于數(shù)據(jù)的后期處理和顯示方式等任務,可以采用基于客戶端瀏覽器的動態(tài)HTML技術(shù)來完成,這里由腳本語言Jav
35、aScript來實現(xiàn),以減輕Web服務器的負擔。6 實驗測試在Web 服務器端生成網(wǎng)頁index.html,放置在目錄etc/boa/html 下。編寫的CGI程序,放置在目錄etc/boa/cgi-bin 下。將目標板的IP 地址設(shè)置為25 后,啟動Boa 服務器。在任意一個Web 瀏覽器上輸入http:/25,可以看到服務器的默認網(wǎng)頁。當用戶選擇相關(guān)信息并提交后,CGI將其接收,并根據(jù)提交內(nèi)容對家居設(shè)備進行相應控制,圖3(a)就是用戶對空調(diào)進行設(shè)置的測試頁面。同時,用戶也可以對家居設(shè)備的目前狀態(tài)進行查詢,查詢結(jié)果如圖4(b)所示?!?圖4(a)Web服務器的空調(diào)控制測試頁面 圖4(b)Web服務器的家居狀態(tài)查詢頁面7 結(jié)束語 本文從整體上介紹了嵌入式Web 服務器的體系結(jié)構(gòu)、程序的組件視圖、嵌入式Web 服務器的組成模塊以及怎樣精簡TCP/IP協(xié)議以減少不必要的資源開支和適應嵌入式系統(tǒng)對資源的要求。支持Web 瀏覽功能的嵌入式設(shè)備不但可以簡化設(shè)備的設(shè)計,而且減輕了用戶的應用難度,可以通過瀏覽器方便地設(shè)置嵌入式設(shè)備的參數(shù)。通過嵌入式Web 技術(shù)實現(xiàn)設(shè)備的遠程監(jiān)控、管理和維護,將降
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源發(fā)電項目投資合同標的收益分配與風險控制
- 2025年度智能化設(shè)備轉(zhuǎn)讓合同模板(含售后服務協(xié)議)
- 2025年度建筑廢棄物資源化利用工程施工合同規(guī)范文本
- 2025年提花舒棉絨項目投資可行性研究分析報告
- 高新企業(yè)認定申請書
- 中國專業(yè)勞保鞋市場運行態(tài)勢及行業(yè)發(fā)展前景預測報告
- 2025年度婚戀行業(yè)資源整合服務合同
- 2025年度新型城鎮(zhèn)化道路建設(shè)材料采購合同
- 2025年中國胱氨酸片行業(yè)市場全景調(diào)研及投資規(guī)劃建議報告
- 2025年度建筑施工安全應急救援預案合同范本
- 江蘇省鹽城市鹿鳴路初級中學2024-2025學年八年級上學期期末考試語文試題(含答案)
- 《反家庭暴力》課件
- 【物理】《跨學科實踐:制作簡易桿秤》(教學設(shè)計)-2024-2025學年人教版(2024)初中物理八年級下冊
- 新蘇教版一年級數(shù)學下冊第六單元《簡單的數(shù)量關(guān)系(一)》教案(共2課時)
- GA/T 2146-2024法庭科學涉火案件物證檢驗移動實驗室建設(shè)通用要求
- 社會兒童福利院項目可行性研究報告
- JBT 1306-2024 電動單梁起重機(正式版)
- 2024年輔警招聘考試試題庫含完整答案(各地真題)
- 初中生成長檔案模板
- GB_T 17468-2019 電力變壓器選用導則(高清正版)
- QES三體系內(nèi)審作業(yè)指導書(開源銘記初稿)
評論
0/150
提交評論