基于PXA270嵌入式Web服務器的設計與實現
(2)TCP/IP協議族的裁剪。在TCP協議中采用“停止等待算法”代替“滑動窗口算法”。一方面是由于數據量小,對網絡擁塞不會產生太大影響,從而可以裁剪TCP的流量控制功能;另一方面是因為數據量小時,采用停止等待算法的傳輸效率和滑動窗口算法的效率差不多,因此采用簡單停止等待算法代替復雜的滑動窗口算法,不但降低了實現難度,提高了處理速度,同時取消了TCP發(fā)送緩存區(qū)和接收緩存區(qū),從而減小了占用存儲空間。研究發(fā)現,如果TCP層的上層實現服務器端的應用,可以將標準TCP狀態(tài)機建立連接過程中客戶端建立連接的狀態(tài)機部分簡化掉,即將主動創(chuàng)建連接的SYN-SENT狀態(tài),主動關閉連接的FIN-WAIT1,FIN-WAIT2,CL0SING,TIME-WAIT狀態(tài)。同理,如果應用是基于客戶端的,還可以將服務器建立連接的狀態(tài)機部分簡化。當處于監(jiān)聽狀態(tài)的服務器收到客戶端的請求時,發(fā)送“ACK+對方發(fā)過來的SYN數據”。當收到來自客戶端的一個僅含有ACK的空數據片后,雙方進人Established狀態(tài)建立連接,之后可以進行TCP數據通信。這樣既節(jié)省了系統開銷,同時也保證了所有的數據段都能安全正確地到達目的端。
(3)編寫HTTP Web Server。Linux下嵌入式Web服務器主要有3個:httpd,thttpd和Boa。系統以boa作為服務器。Boa是一個單任務的http服務器,源代碼開放、性能高。建立boa Web服務器的步驟如下:
①下載boa源代碼boa-0.94.14r21.tar.gz。BoaWeb服務器的源代碼可以從http://www.boa.org下載,當前最新版本為0.94.14。
②安裝并編譯boa源代碼。首先將源碼文件進行解壓,修改Makefile文件,修改CC=gcc為CC=/usr/local/arm-linux/bin/arm-linux-gcc(//自己主機交叉編譯器的目錄),修改CPP=gcc-E為CPP=/usr/local/arm-linux/bin/arm-linux-gcc-E,執(zhí)行make,即可在SRC下得到boa可執(zhí)行文件。
③配置boa Web服務器。Boa啟動時將加載一個配置文件boa.conf,在boa程序運行前,必須對其進行修改。
④執(zhí)行Boa。成功配置以后,創(chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將靜態(tài)網頁存入該目錄下(將主機/usr/share/doc/HTML/目錄下的index.html文件和img目錄復制到/var/www目錄下),創(chuàng)建CGI腳本所在錄/var/www/cgi-bin,將cgi的腳本存放在該目錄下,另外還要將mime.types文件復制/etc目錄下。在實際運行時,可以將index.html,index_Zcn.html文件、img目錄和mime.types文件放到CF卡目錄下,建立目錄后,拷貝至相應目錄。啟動ARM-Linux,在終端運行./boa,用網頁瀏覽器訪問,看到/usr/share/doc/HTML/目錄下的index.html網頁,嵌入式Web服務器移植成功。
(4)CGI程序設計
嵌入式Web服務器,其為用戶提供基于HTTP協議的網絡接入方式,再通過編寫適當的CGI程序來實現動態(tài)網頁的交互。
要使用CGI程序,一般使用HTML中的FORM結構:FORM ACTION=/cgi-bin/文件名;METHOD=傳送方法>內容/FORM>,其ACTION屬性指定相關的CGI程序,METHOD屬性指明提交數據的方法(POST或GET);也可以在A>標簽的HREF屬性中調用CGI程序,結構如:A HREF=/cgi-bin/文件名>START CGI/A>;還可以在IMG>的HTML標簽中調用CGI程序,如果把CGI程序的路徑當作SRC屬性的話,服務器就會去運行程序并把運行結果當成圖像的來源,結構如:IMGSRC=/cgi-bin/文件名>。
4 結 語
嵌入式Web服務器是實現嵌入式系統通過Web方式與Intenet互聯的關鍵組成部分,直接影響網絡應用系統運行的質量與效率,對其進行研究對Intenet技術的發(fā)展有重要意義。本文提出一種基于ARM-Linux操作系統的嵌入式Web服務器的設計方法,并給出相應的軟硬件設計,并利用Socket編程和CGI程序完成整個Web服務器的設計。該嵌入式Web服務器具有成本低、開放性好、可移植性強等優(yōu)點,便于后期維護和升級。由于此設計的嵌入式Web服務器是一個單獨的模塊,提供的是標準接口,只要在軟件上作少許的修改就能很容易地應用到其他的嵌入式設備(如智能家電、現場節(jié)點等)中,具有一定的推廣價值。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論