嵌入式linux系統(tǒng)中http協(xié)議的實(shí)現(xiàn)方法研究-嵌入式論文_第1頁(yè)
已閱讀1頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  論文題目:嵌入式LINUX系統(tǒng)中HTTP協(xié)議的實(shí)現(xiàn)方法研究</p><p>  學(xué) 生 姓 名: </p><p>  指 導(dǎo) 老 師: </p><p>  所 在 學(xué) 院: </p><p>  時(shí) 間: 2017 年 6

2、月 </p><p><b>  摘要</b></p><p>  隨著計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式系統(tǒng)已成為計(jì)算機(jī)應(yīng)用領(lǐng)域的一個(gè)重要組成部分。隨著網(wǎng)絡(luò)技術(shù)與嵌入式技術(shù)的結(jié)合,Internet 網(wǎng)絡(luò)體系結(jié)構(gòu)中應(yīng)用層的各種協(xié)議,在嵌入式系統(tǒng)設(shè)備中有了實(shí)現(xiàn)的可能。本文就是在嵌入式系統(tǒng)設(shè)備上實(shí)現(xiàn) HTTP1.0 協(xié)議的部分功能。本論文從嵌入式系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)入

3、手,到在嵌入式系統(tǒng)硬件設(shè)備上,實(shí)現(xiàn)基于Linux 操作系統(tǒng)上實(shí)現(xiàn) HTTP 協(xié)議的服務(wù)端功能程序。整個(gè)發(fā)生過(guò)程如下: 首先,嵌入式系統(tǒng)的硬件設(shè)備的選擇與實(shí)現(xiàn)。在眾多的嵌入式CPU中,考慮到實(shí)現(xiàn)HTTP協(xié)議的服務(wù)端功能程序,對(duì)CPU的性能要求不是很高,最終選擇了性?xún)r(jià)比較高的SAMSUNG公司的基于ARM7TDMI的S3C44B0X一款CPU芯片。以太網(wǎng)控制芯片為RTL8019AS。博創(chuàng)科技公司開(kāi)發(fā)的一款實(shí)驗(yàn)箱恰好恰符合這種要求。</

4、p><p>  其次,嵌入式軟件系統(tǒng)的實(shí)現(xiàn)。對(duì)于嵌入式系統(tǒng)操作系統(tǒng)的選擇,由于硬件功能的限制,通過(guò)比較幾個(gè)常用的嵌入式操作系統(tǒng),最后選擇了 linux 操作系統(tǒng)。在該系統(tǒng)下,選用 C 程序設(shè)計(jì)語(yǔ)言,利用 linux 操作系統(tǒng)地系統(tǒng)函數(shù)庫(kù)和SOCKET 編程技術(shù),實(shí)現(xiàn) http 服務(wù)端的功能。</p><p>  最后,該項(xiàng)目的實(shí)際意義主要在于兩個(gè)方面的應(yīng)用,一個(gè)是監(jiān)視功能,用于在服務(wù)器端進(jìn)行某

5、項(xiàng)監(jiān)視任務(wù),使在客戶(hù)端的瀏覽器中的顯示監(jiān)視的信息,這樣</p><p>  能幫助用戶(hù)主動(dòng)獲取信息。另一個(gè)是控制儀器設(shè)備。用戶(hù)可以通過(guò)執(zhí)行 CGI 程序或腳本語(yǔ)言,通過(guò) Internet 獲得交互式信息,對(duì)其進(jìn)行遠(yuǎn)程控制。 </p><p>  關(guān)鍵詞:嵌入式系統(tǒng); 超文本傳輸協(xié)議; Linux; </p><p><b>  Abstract</

6、b></p><p>  With the development of the computer technology, embedded system technology has become an important part of the computer application. After the computer network technology and the embedded sys

7、tem technology combines, some protocols of the application layer in the internet network architecture can be translated into programs that run on the embedded devices. The thesis presents the design and implementation of

8、 part of the HTTP1.0 protocol based on embedded hardware and operation system. The serve</p><p>  First, the thesis introduces the choice and the realization of the embedded system hardware. Because the perf

9、ormance and complexion of the program of the HTTP server function is not too much, I chose Samsung’s S3C44B0X CPU that is based on ARM7TDMI among the many embedded CPU and the Ethernet controller chip of the system is RT

10、L8019AS.fortunately, UP-NETARM3000 experiment system based on ARM7 platform meets the need, which is made by universal pioneering Technology Co., LTD. </p><p>  Second, the embedded system realizes. Consider

11、ing the limited performance of the embedded system hardware, I finally choose µCLinux OS as the software platform by comparing several operation systems of current embedded system. I choose C programming language to

12、 program by use of the operation system functions and socket technology offered by µCLinux in order to realize the HTTP server function. </p><p>  Finally, the application of the project consists of two

13、 primary parts. One is monitoring function, that is, the information monitored by the HTTP server can be sent to the client that gets it by the browser; the other is remote controlling appliances and devices. Users can

14、control them remotely by running CGI programs or scripts language programs through the internet. </p><p>  Key words:Embedded system; HTTP protocol,; Linux</p><p><b>  目錄</b></p&

15、gt;<p>  第一章 嵌入式的基礎(chǔ)簡(jiǎn)介...................................................1</p><p>  1.1嵌入式系統(tǒng)的歷史、現(xiàn)狀與發(fā)展........................................1</p><p>  1.2嵌入式系統(tǒng)概述..........................

16、...........................2</p><p>  1.3 Linux的主要特性...................................................4</p><p>  1.4嵌入式 Web 服務(wù)器..................................................5</p><

17、;p>  第二章 HTTP 協(xié)議簡(jiǎn)介......................................................7</p><p>  2.1 HTTP 協(xié)議基礎(chǔ).....................................................7</p><p>  2.2 HTTP 協(xié)議的運(yùn)作過(guò)程...............

18、................................8</p><p>  2.3 HTTP 協(xié)議的工作模式及特點(diǎn).........................................10 </p><p>  第三章 HTTP 設(shè)計(jì)思想.....................................................11</p>

19、<p>  3.1系統(tǒng)總體設(shè)計(jì)......................................................11</p><p>  3.1.1系統(tǒng)的結(jié)構(gòu)圖說(shuō)明............................................11</p><p>  3.1.2 功能分配...........................

20、........................12</p><p>  3.2詳細(xì)設(shè)計(jì)..........................................................12</p><p>  3.2.1主程序設(shè)計(jì)..................................................12</p><p&g

21、t;  3.2.2 客戶(hù)請(qǐng)求連接處理模塊設(shè)計(jì)...................................14</p><p>  3.2.3 客戶(hù)請(qǐng)求解析處理模塊設(shè)計(jì)...................................15</p><p>  3.2.4 發(fā)送 HTTP 協(xié)議數(shù)據(jù)頭模塊設(shè)計(jì)...............................16<

22、/p><p>  3.3 程序設(shè)計(jì)需求分析.................................................16</p><p>  第四章 程序?qū)崿F(xiàn)..........................................................19</p><p>  4.1主程序?qū)崿F(xiàn)的主要思想...........

23、...................................19</p><p>  4.2 幾個(gè)主要函數(shù)的名稱(chēng)及相關(guān)參數(shù)說(shuō)明.................................20</p><p>  4.3 系統(tǒng)程序(函數(shù))源碼..............................................21</p><p>

24、;  第五章 嵌入式Web服務(wù)器的實(shí)現(xiàn).............................................22</p><p>  5.1 Web服務(wù)器的模塊框圖..............................................22</p><p>  5.2介紹......................................。.

25、......................22</p><p>  第六章 測(cè)試與固化........................................................24</p><p>  6.1測(cè)試..............................................................24</p>&l

26、t;p>  6.2程序的固化階段....................................................24</p><p>  第七章 現(xiàn)實(shí)意義..........................................................26</p><p>  參考文獻(xiàn).............................

27、....................................29</p><p>  附錄.....................................................................30</p><p>  第一章 嵌入式的基礎(chǔ)簡(jiǎn)介</p><p>  近年來(lái)嵌入式技術(shù)作為計(jì)算機(jī)科學(xué)與技術(shù)發(fā)展的一個(gè)新的分支,

28、發(fā)展非常迅速,應(yīng)用的前景被業(yè)內(nèi)人士非??春?。隨著Internet的普及,網(wǎng)絡(luò)在人們的日常生活和工作中扮演著越來(lái)越重要的角色, 已經(jīng)成為人們生活和工作中不可缺少的部分。[1] </p><p>  隨著嵌入式技術(shù)和Internet技術(shù)的發(fā)展與結(jié)合,嵌入式系統(tǒng)在互聯(lián)網(wǎng)方面的應(yīng)用越來(lái)越廣泛,由于嵌入式系統(tǒng)帶有網(wǎng)絡(luò)接口,把嵌入式系統(tǒng)設(shè)備掛接互聯(lián)網(wǎng)上,可以實(shí)現(xiàn)嵌入式設(shè)備系統(tǒng)的數(shù)據(jù)通過(guò)Internet實(shí)現(xiàn)共享, 這樣對(duì)于遠(yuǎn)端

29、的許多用戶(hù)就可以通過(guò)瀏覽器以網(wǎng)頁(yè)的形式和嵌入式設(shè)備進(jìn)行通訊, 從而實(shí)現(xiàn)各典型的基于X86的CPU的微型計(jì)算機(jī)和Linux操作系統(tǒng)下的web服務(wù)器技術(shù)已經(jīng)成熟。但由于Linux內(nèi)核龐大,而嵌入式系統(tǒng)的硬件資源(CPU和存儲(chǔ)器)遠(yuǎn)遠(yuǎn)比不上微型計(jì)算機(jī),因此,要把Linux操作系統(tǒng)裝入有限的內(nèi)存,就要對(duì)它進(jìn)行裁剪。對(duì)于內(nèi)存資源很寶貴的嵌入式系統(tǒng)來(lái),設(shè)計(jì)一個(gè)嵌入式HTTP網(wǎng)絡(luò)服務(wù)器,用瀏覽器進(jìn)行訪問(wèn)控制,在嵌入式網(wǎng)絡(luò)設(shè)備中的應(yīng)用將是非常有前景的。

30、為了實(shí)現(xiàn)嵌入式HTTP服務(wù)端的功能,采用基于ARM7TDMI 內(nèi)核的S3C44B0X CPU芯片,操作系統(tǒng)選用μCLinux來(lái)作為嵌入式操作系統(tǒng),利用μCLinux提供的庫(kù)函數(shù)及SOCKET編程技術(shù),依據(jù)采用軟件工程學(xué)的原理,來(lái)指導(dǎo)開(kāi)發(fā)過(guò)程。</p><p>  目前用于Web頁(yè)面訪問(wèn)的應(yīng)用都是基于HTTP(Hypertext Transfer Protocol)應(yīng)用協(xié)議的,它對(duì)于設(shè)計(jì)Web瀏覽器等應(yīng)用軟件是必須

31、需的。我們?cè)谇度胧疆a(chǎn)品無(wú)線PDA(personal Digital Assistant)中為了實(shí)現(xiàn)嵌入式的瀏覽器,自行設(shè)計(jì)和實(shí)現(xiàn)了HTTP/1.1協(xié)議,為無(wú)線PDA提供訪問(wèn)Web頁(yè)面提供了基本的支持。在設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,我們應(yīng)用了HTTP/1.1不同于HTTP/1.0之處,如可持續(xù)連接、緩存等減少了響應(yīng)時(shí)間,改善了無(wú)線網(wǎng)絡(luò)帶寬窄而帶來(lái)的延時(shí),同時(shí)也提高了嵌入式設(shè)備的資源利用,為嵌入式設(shè)備提供了較好的實(shí)現(xiàn)方案。</p>&l

32、t;p>  該項(xiàng)目的實(shí)際意義包括以下兩個(gè)方面的應(yīng)用,一個(gè)是監(jiān)視功能,用于在服務(wù)器端進(jìn)行某項(xiàng)監(jiān)視任務(wù),使在客戶(hù)端的瀏覽器中的顯示監(jiān)控的信息。它能幫助用戶(hù)主動(dòng)獲取信息。另一個(gè)是控制儀器設(shè)備。用戶(hù)可以通過(guò)普通的 HTML 頁(yè)面,在任何時(shí)間、任何地方瀏覽電器設(shè)備的運(yùn)行狀態(tài),并可對(duì)其進(jìn)行遠(yuǎn)程控制,特別是通過(guò) Internet 獲得交互式信息。</p><p>  1.1嵌入式系統(tǒng)的歷史、現(xiàn)狀與發(fā)展</p>

33、<p>  20 多年前,芬蘭赫爾辛基大學(xué)的一名名為L(zhǎng)inus Torvalds的計(jì)算機(jī)業(yè)余愛(ài)好者設(shè)計(jì)了一個(gè)可以代替 Minix 的操作系統(tǒng),這個(gè)系統(tǒng)不但可以運(yùn)行在當(dāng)時(shí)最為流行的x86平臺(tái)的處理器,并且還具有Unix 所能實(shí)現(xiàn)的一切功能,這就是早期 Linux 的前身。1991 年的 9 月,它將第一個(gè) Linux 版本發(fā)布在網(wǎng)絡(luò)上,并在十個(gè)月以后發(fā)布了第二個(gè)版本,同時(shí),借助于網(wǎng)絡(luò),越來(lái)越多的計(jì)算機(jī)愛(ài)好者也加入了新版本開(kāi)發(fā)

34、的行列,它們慢慢的成為了Linux 強(qiáng)大的技術(shù)支持力量,也就是當(dāng)今著名的 Linux 社區(qū)。到現(xiàn)在,Linux已經(jīng)發(fā)行了超過(guò)了30個(gè)版本,并且每三個(gè)月就會(huì)更新一個(gè)新版本,成為全世界最具影響力的操作系統(tǒng)之一?,F(xiàn)代社會(huì)信息化,智能化,網(wǎng)絡(luò)化發(fā)展迅速,嵌入式系統(tǒng)的發(fā)展空間也越來(lái)越大。從二十世紀(jì)九十年代起,嵌入式技術(shù)全面展開(kāi),發(fā)展到現(xiàn)在已成為通信,工業(yè)和消費(fèi)類(lèi)產(chǎn)品不可轉(zhuǎn)變的共同發(fā)展方向。</p><p>  二十一世紀(jì)是

35、信息化的社會(huì),互聯(lián)網(wǎng)的發(fā)展不可抑制,網(wǎng)絡(luò)化是提高生產(chǎn)效率,保證產(chǎn)品質(zhì)量,降低人工成本的有效方法。在工業(yè)工程控制,數(shù)字機(jī)床,電力系統(tǒng),電網(wǎng)安全,石油化工系統(tǒng)等方面的發(fā)展,就離不開(kāi)嵌入式系統(tǒng),從老式的低端的八位單片機(jī)到如今以32 位,64 位處理器為核心的工業(yè)控制設(shè)備,足以讓我們明白目前工業(yè)設(shè)備的發(fā)展是以嵌入式系統(tǒng)的發(fā)展為前提的。尤其在數(shù)控技術(shù)中,嵌入式LINUX 數(shù)控系統(tǒng)完成了系統(tǒng)人機(jī)界面的開(kāi)發(fā),利用C

36、60;語(yǔ)言完成了控制層面的開(kāi)發(fā)?,F(xiàn)在一些大型商場(chǎng)中的自動(dòng)售貨機(jī)早已進(jìn)入人們的視野,居民出行方便省錢(qián)的公交卡,隨處可見(jiàn)的智能ATM 終端,各種超市商場(chǎng)的會(huì)員卡,這些卡伴隨著嵌入式系統(tǒng)的發(fā)展在人們生活中發(fā)揮著越來(lái)越重要的作用,一卡在手走遍天下已不是遙不可及的夢(mèng)想。</p><p>  嵌入式系統(tǒng)的市場(chǎng)是巨大的,嵌入式系統(tǒng)的應(yīng)用幾乎無(wú)處不在:移動(dòng)通信、數(shù)字辦公、家電應(yīng)用、交通運(yùn)輸、互動(dòng)娛樂(lè)等無(wú)不有它的蹤影。體

37、積小、可靠性高、功能強(qiáng)、靈活方便等嵌入控制器獨(dú)有的特點(diǎn)與優(yōu)勢(shì),使其被廣泛運(yùn)用到教育、國(guó)防、工農(nóng)業(yè)、科學(xué)研究以及日常生活等各個(gè)領(lǐng)域,對(duì)各行各業(yè)的技術(shù)進(jìn)步、自動(dòng)化發(fā)展、產(chǎn)品更換、提高生產(chǎn)率等方面起到了十分重要的促進(jìn)作用。 嵌入式系統(tǒng)作為人類(lèi)青睞的系統(tǒng)工具,要想不被淘汰,只有吸引人們的目光,不斷進(jìn)步,給人類(lèi)生活帶來(lái)便利,打開(kāi)新的消費(fèi)市場(chǎng),適應(yīng)快速發(fā)展的社會(huì)狀況。近幾年我國(guó)對(duì)物聯(lián)網(wǎng)行業(yè)發(fā)展的大力支持和相關(guān)產(chǎn)業(yè)發(fā)展的不斷推動(dòng),使得具有高

38、度智能化的電子產(chǎn)品的應(yīng)用范圍也因此而不斷的擴(kuò)大,從而使得更多的嵌入式產(chǎn)品也不斷的進(jìn)入到了我們?nèi)粘5纳a(chǎn)生活之中,這就標(biāo)志著嵌入式系統(tǒng)也進(jìn)入到了飛速發(fā)展的時(shí)期,其應(yīng)用的規(guī)模也隨之不斷的擴(kuò)大、在此種背景下,本文首先對(duì)當(dāng)前我國(guó)各行業(yè)對(duì)嵌入式系統(tǒng)的概念及應(yīng)用情況進(jìn)行簡(jiǎn)單的介紹和講解,然后對(duì)嵌入式系統(tǒng)未來(lái)的發(fā)展趨勢(shì)進(jìn)行研究,進(jìn)而了解嵌入式系統(tǒng)在我國(guó)各行業(yè)的深入應(yīng)用。</p><p>  1.2嵌入式系統(tǒng)概述</p&g

39、t;<p>  什么是嵌入式系統(tǒng)嵌入式系統(tǒng)本身的定義比較模糊,小到、手機(jī)、智能、電子儀表等微型數(shù)字化產(chǎn)品,大到數(shù)字家電、車(chē)載衛(wèi)星定位器以及一些工業(yè)控制設(shè)備等都可以稱(chēng)為嵌入式系統(tǒng)。根據(jù)國(guó)際電氣和電子工程師協(xié)會(huì)的定義嵌入式系統(tǒng)是“用于控制、監(jiān)視或者、輔助操作機(jī)器和設(shè)備的裝置”,國(guó)內(nèi)一般定義為“以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪,功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)?!鼻度胧较到y(tǒng)是電腦軟件與硬件的

40、綜合體。也可以涵蓋機(jī)械或其它的附屬裝置。硬件包括處理器微處理器、存儲(chǔ)器及外設(shè)器件</p><p>  和拍端口、圖形控制器等。軟件部分包括操作系統(tǒng)軟件要求實(shí)時(shí)和多任務(wù)操作和應(yīng)用程序編程。這種系統(tǒng)具有軟件代碼小,高度智能化,響應(yīng)速度快等特點(diǎn),特別適合于要求實(shí)時(shí)的和多任務(wù)的體系。有時(shí)設(shè)計(jì)人員把這兩種軟件組合在一起。應(yīng)用程序控制著系統(tǒng)的運(yùn)作和行為而操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用。整個(gè)綜合體設(shè)計(jì)的目的在于滿(mǎn)足

41、某種特殊功能??梢哉J(rèn)為凡是帶有微處理器的專(zhuān)用軟硬件系統(tǒng)都可以稱(chēng)為嵌入式系統(tǒng)。</p><p>  圖1-1 HTTP/1.1協(xié)議的實(shí)現(xiàn)框架</p><p>  國(guó)際電氣和電子工程師協(xié)會(huì)(Institute of Electrical and Electronics Engineers,IEEE)曾給出了明確的定義:“用于控制、監(jiān)視或者輔助機(jī)器和設(shè)備操作的裝置”(Devices Used t

42、o Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。但隨著技術(shù)的發(fā)展,當(dāng)前則普遍認(rèn)為其定義應(yīng)為:依附計(jì)算機(jī)相關(guān)技術(shù)作為核心技術(shù),重在應(yīng)用,軟件與硬件可以根據(jù)需要裁減,靈活的適應(yīng)系統(tǒng)對(duì)體積、功耗,成本與可靠性的要求。一般來(lái)講,嵌入式系統(tǒng)由硬件層、中間層、軟件層三個(gè)方面組成,而被控對(duì)象或者系統(tǒng)的執(zhí)行機(jī)構(gòu)主要接收系統(tǒng)發(fā)來(lái)的控制指令,完成所規(guī)定的

43、任務(wù),最終實(shí)現(xiàn)嵌入式系統(tǒng)所預(yù)定的工作。 作為計(jì)算機(jī)系統(tǒng)技術(shù)的分支,嵌入式技術(shù)發(fā)展非常迅速,嵌入式控制器的應(yīng)用幾乎無(wú)處不在:手持終端設(shè)備、智能家電、汽車(chē)電子等都能找到它的蹤跡。由于其出色的性能,靈活的應(yīng)用方式,以及體積功耗理想等特點(diǎn),其對(duì)當(dāng)今社會(huì)生產(chǎn)生活產(chǎn)生的影響是不可估量的。</p><p>  1.3 Linux的主要特性 </p><p><b>  完全自由免費(fèi)</b

44、></p><p>  到目前為止,Linux仍然是一種絕對(duì)免費(fèi)的開(kāi)放自由的操作系統(tǒng),所有的使用者都可以通過(guò)其官方網(wǎng)站方便的下載獲得其源碼。并可在沒(méi)有獲得許可的情況下任意的修改其源碼。這是其它操作系統(tǒng)所不可想象的。當(dāng)然,也正是由于這一優(yōu)勢(shì),來(lái)自全球各地的數(shù)以萬(wàn)計(jì)的程序員、操作系統(tǒng)愛(ài)好者參加了對(duì)Linux內(nèi)核的修改、編寫(xiě)與設(shè)計(jì)工作,程序愛(ài)好者可以根據(jù)自己的興趣和靈感對(duì)其進(jìn)行修改。這不但讓Linux的內(nèi)核吸收了

45、無(wú)數(shù)程序員大量的的精華,還避免了版權(quán)等諸多紛爭(zhēng)風(fēng)險(xiǎn)的存在。</p><p>  完全兼容POSIX標(biāo)準(zhǔn)</p><p>  由于其支持 POSIX 標(biāo)準(zhǔn),這使得用戶(hù)可以在Linux下通過(guò)相應(yīng)的模擬器運(yùn)行其它操作系統(tǒng)下開(kāi)發(fā)的程序,如 DOS、Windows 的程序。這為許多用戶(hù)從 Windows 操作系統(tǒng)過(guò)渡到 Linux 操作系統(tǒng)提供了保障。當(dāng)許多使用者在考慮Linux 操作系統(tǒng)時(shí),就不必

46、擔(dān)心早先在Windows 操作系統(tǒng)下開(kāi)發(fā)過(guò)的程序是否能在 Linux 操作系統(tǒng)下正常運(yùn)行了,這也是 Linux 操作系統(tǒng)優(yōu)勢(shì)所在。 </p><p><b>  多用戶(hù)、多任務(wù)</b></p><p>  Linux 操作系統(tǒng)的另外一個(gè)特點(diǎn)就是對(duì)多用戶(hù)的支持,通常不同的用戶(hù)對(duì)于自己所使用的文件設(shè)備會(huì)有特殊的操作權(quán)利,為了保證各用戶(hù)之間在使用上互不影響,Linux 操作

47、系統(tǒng)采用了多用戶(hù)的設(shè)計(jì)模式。多任務(wù)則是現(xiàn)在計(jì)算機(jī)操作系統(tǒng)的最重要的一個(gè)特點(diǎn),Linux 操作系統(tǒng)可以使多個(gè)應(yīng)用程序同時(shí)運(yùn)行而相互之間沒(méi)有影響。 </p><p><b>  良好的界面</b></p><p>  Linux 操作系統(tǒng)不但帶有字符界面而且還具有圖形界面。在字符界面下,用戶(hù)可以通過(guò)輸入相應(yīng)的操作指令對(duì)計(jì)算機(jī)操作。它還同時(shí)提供了具有與Windows 操 作

48、系統(tǒng)的圖形界面非常相似的X-Window 圖形界面操作系統(tǒng),用戶(hù)除使用鍵盤(pán)外,還可以使用鼠標(biāo)對(duì)計(jì)算機(jī)實(shí)時(shí)操作。由于在 X-Window 系統(tǒng)環(huán)境中的操作就和在 Windows 操作系統(tǒng)中進(jìn)行操作非常相似,因此可以說(shuō) X-Window 操作系統(tǒng)是一個(gè) Linux 版的Windows 操作系統(tǒng)。 </p><p><b>  豐富的網(wǎng)絡(luò)功能</b></p><p>  由

49、于 Unix 操作系統(tǒng)是在互聯(lián)網(wǎng)的基礎(chǔ)上發(fā)展而來(lái)的,作為其繼承者,Linux 操作系統(tǒng)同樣具有強(qiáng)大的網(wǎng)絡(luò)功能。它的網(wǎng)絡(luò)功能與其系統(tǒng)內(nèi)核聯(lián)系非常緊密,因此,在網(wǎng)絡(luò)功能方面,Linux 操作系統(tǒng)明顯強(qiáng)于其它的操作系統(tǒng)。在 Linux 操作系統(tǒng)中,用戶(hù)可以輕松實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)的瀏覽、傳輸各類(lèi)文件、以及遠(yuǎn)程登陸計(jì)算機(jī)等網(wǎng)絡(luò)功能。另外基于其強(qiáng)大的網(wǎng)絡(luò)功能,Linux 操作系統(tǒng)通常用來(lái)作為服務(wù)器提供 WWW、FTP、E-Mail 等服務(wù)。 </p&

50、gt;<p>  高安全、可靠、穩(wěn)定性能</p><p>  Linux 操作系統(tǒng)采取了許多安全技術(shù)第二章 系統(tǒng)涉及到的關(guān)鍵技術(shù)措施,其中主要包括對(duì)用戶(hù)讀寫(xiě)權(quán)限控制、審核跟蹤、嚴(yán)格的用戶(hù)授權(quán)機(jī)制,這些措施都為系統(tǒng)的安全提供了必要地保障。許多情況下,由于其出色的穩(wěn)定性,Linux 操作系統(tǒng)被作為網(wǎng)絡(luò)服務(wù)器使用。 </p><p><b>  支持多種平臺(tái)</b

51、></p><p>  目前,Linux 操作系統(tǒng)可以運(yùn)行非常多的硬件平臺(tái)之上,例如 x86、ARM,AVR 等架構(gòu)的處理器。另外 Linux 還是一種嵌入式操作系統(tǒng),它可以應(yīng)用在手機(jī)、數(shù)碼相機(jī)、電視機(jī)頂盒、游戲機(jī)等數(shù)碼設(shè)備上。2001 年 1 月開(kāi)始發(fā)布的 Linux2.4 版內(nèi)核系統(tǒng)已經(jīng)實(shí)現(xiàn)了對(duì) Intel 64 位芯片架構(gòu)的支持。同時(shí) Linux 操作系統(tǒng)還對(duì)多處理器具有很好的支持。當(dāng)系統(tǒng)采用多個(gè)處理

52、器同時(shí)工作時(shí),其性能將大大的提高。</p><p>  1.4嵌入式 Web 服務(wù)器</p><p>  通俗來(lái)講,Web服務(wù)器可以認(rèn)為是一種存在于因特網(wǎng)上某種特定類(lèi)型的計(jì)算機(jī)應(yīng)用程序。當(dāng)有 Web 瀏覽器(客戶(hù)端)連接到 Web 服務(wù)器 IP 地址并請(qǐng)求訪問(wèn)文件時(shí),Web 服務(wù)器便會(huì)把存放在本地計(jì)算機(jī)上的相關(guān)文件發(fā)送至來(lái)訪的瀏覽器,并通過(guò)附帶信息的方式告知瀏覽器如何瀏覽相關(guān)文件。目前,W

53、eb 服務(wù)器進(jìn)行文件通信時(shí)使用的是超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)。因此,也可稱(chēng)其為 HTTP 服務(wù)器。除了存儲(chǔ)被訪問(wèn)的數(shù)據(jù)文件之外,Web 服務(wù)器還可以與客戶(hù)端進(jìn)行交互,并運(yùn)行相關(guān)的腳本程序。這些程序或者腳本一般稱(chēng)之為通用網(wǎng)關(guān)接口(Common Cateway Interface,CGI)。Web 服務(wù)器可駐留于各種類(lèi)型的計(jì)算機(jī),從常見(jiàn)的 PC 機(jī)到巨型的 UNIX 網(wǎng)絡(luò)服務(wù)器,以及

54、其它各種類(lèi)型的計(jì)算機(jī)。但在嵌入式系統(tǒng)中,由于資源有限,一般使用體積較小的 Web 服務(wù)器,其中多為單任務(wù)服務(wù)器,例如 Boa。系統(tǒng)中 Web 服務(wù)器采用的就是 Boa。</p><p>  通常是在遠(yuǎn)程機(jī)器上,負(fù)責(zé)對(duì)瀏覽器頁(yè)面請(qǐng)求作出響應(yīng),返回HTML編碼或類(lèi)似的數(shù)據(jù)流。通俗的講,Web服務(wù)器傳送(serves)頁(yè)面使瀏覽器可以瀏覽,然而應(yīng)用程序服務(wù)器提供的是客戶(hù)端應(yīng)用程序可以調(diào)用(call)的方法(method

55、s)。確切一點(diǎn),你可以說(shuō):Web服務(wù)器專(zhuān)門(mén)處理HTTP請(qǐng)求(request),但是應(yīng)用程序服務(wù)器是通過(guò)很多協(xié)議來(lái)為應(yīng)用程序提供(serves)商業(yè)邏輯(business logic)。  </p><p>  隨著Internet技術(shù)的興起,在嵌入式設(shè)備的管理與交互中,基于Web方式的應(yīng)用成為目前的主流,這種程序結(jié)構(gòu)也就是大家非常熟悉的B/S結(jié)構(gòu),即在嵌入式設(shè)備上運(yùn)行一個(gè)支持腳本或C

56、GI功能的Web服務(wù)器,能夠生成動(dòng)態(tài)頁(yè)面,在用戶(hù)端只需要通過(guò)Web瀏覽器就可以對(duì)嵌入式設(shè)備進(jìn)行管理和監(jiān)控,非常方便實(shí)用。</p><p>  第二章 HTTP 協(xié)議簡(jiǎn)介</p><p>  2.1 HTTP 協(xié)議基礎(chǔ)</p><p>  Internet 使用的基本協(xié)議是 TCP/IP 協(xié)議,在 TCP/IP 協(xié)議模型最上層的是應(yīng)用層,它包含所有高層的協(xié)議。高層協(xié)議

57、有:文件傳輸協(xié)議 FTP、電子郵件傳輸協(xié)議 SMTP、域名系統(tǒng)服務(wù) DNS、網(wǎng)絡(luò)新聞傳輸協(xié)議 NNTP 和 HTTP 協(xié)議等。[2] </p><p>  HTTP(Hypertext Transfer Protocol)協(xié)議,即:超文本傳輸協(xié)議,是用于WWW 服務(wù)器與本地瀏覽器進(jìn)行超文本傳輸傳送的協(xié)議。它可以使瀏覽器與 Web 服務(wù)器通過(guò)互聯(lián)網(wǎng),更加高效使傳輸網(wǎng)絡(luò)信息,并使之成為標(biāo)準(zhǔn)化。它不僅保證計(jì)算機(jī)正確快速

58、地傳輸超文本文檔,還確定傳輸文檔中的哪一部分以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。 </p><p>  由于 HTTP 協(xié)議是基于請(qǐng)求/響應(yīng)范式的(相當(dāng)于客戶(hù)機(jī)/服務(wù)器)。一個(gè)客戶(hù)機(jī)與服務(wù)器建立連接后,發(fā)送一個(gè)請(qǐng)求給服務(wù)器,請(qǐng)求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)、協(xié)議版本號(hào)后邊是 MIME 信息包括請(qǐng)求修飾符、客戶(hù)機(jī)信息等內(nèi)容。</p><p>  服務(wù)器在接收到請(qǐng)求后,給予相

59、應(yīng)的響應(yīng)信息。其格式為:一個(gè)狀態(tài)行(包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼),后邊是 MIME 信息包括服務(wù)器信息、實(shí)體信息和其他的一些內(nèi)容。 </p><p>  許多 HTTP 通訊是由一個(gè)用戶(hù)代理初始化的,并且包括一個(gè)申請(qǐng)?jiān)谠捶?wù)器上資源的請(qǐng)求。最簡(jiǎn)單的情況可能是在用戶(hù)代理和服務(wù)器之間通過(guò)一個(gè)單獨(dú)的連接來(lái)完成。在 Internet 上 HTTP 通訊經(jīng)常發(fā)生在 TCP/IP 連接之上。其缺省端口是 TC

60、P 協(xié)議的 80 端口,當(dāng)然,其它的端口也是可以使用的。但這并不預(yù)示著 HTTP協(xié)議在 Internet 或其它網(wǎng)絡(luò)的其它協(xié)議之上才能完成。HTTP 只預(yù)示著一個(gè)可靠的傳輸。 </p><p>  HTTP 協(xié)議的內(nèi)部操作過(guò)程大致如下,在 WWW 中“客戶(hù)”與“服務(wù)器”是一個(gè)相對(duì)的概念,只存在于一個(gè)特定的連接期間,即:某個(gè)計(jì)算機(jī)在某個(gè)連接中的可能是客戶(hù)機(jī),而在另一個(gè)連接中可能作為服務(wù)器?;?HTTP 協(xié)議的客戶(hù)

61、/服務(wù)器模式的信息交換過(guò)程它分四個(gè)過(guò)程:建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。</p><p>  其實(shí)簡(jiǎn)單說(shuō),就是任何服務(wù)器除了包括 HTML 文件以外,還有一個(gè) HTTP 協(xié)議駐留程序用于響應(yīng)用戶(hù)請(qǐng)求。瀏覽器是 HTTP 協(xié)議客戶(hù)機(jī),當(dāng)瀏覽器向服務(wù)器發(fā)送請(qǐng)求,在瀏覽器中輸入了一個(gè)開(kāi)始文件或點(diǎn)擊了一個(gè)超級(jí)鏈接時(shí),瀏覽器就向服務(wù)器發(fā)送了 HTTP 請(qǐng)求,此請(qǐng)求被送往由 IP 地址指定的 URL。駐留程序

62、接收到請(qǐng)求后,進(jìn)行必要的操作后回送所要求的文件。在這一過(guò)程中,在網(wǎng)絡(luò)上發(fā)送和接收的數(shù)據(jù)已經(jīng)被分成一個(gè)或多個(gè)數(shù)據(jù)包(packet),每個(gè)數(shù)據(jù)包包括:要傳送的數(shù)據(jù);控制信息(即告訴網(wǎng)絡(luò)怎樣處理數(shù)據(jù)包)。TCP/IP 協(xié)議決定了每個(gè)數(shù)據(jù)包的格式。 </p><p>  HTTP 請(qǐng)求和 HTTP 響應(yīng)都使用頭發(fā)送有關(guān) HTTP 協(xié)議消息的信息。頭由一系列行組成,每行都包含名稱(chēng),然后依次是冒號(hào)、空格、值。字段可按任何順序

63、排列。某些頭字段既能用于請(qǐng)求頭也能用于響應(yīng)頭,而另一些頭字段只能用于其中之一。許多請(qǐng)求頭字段都允許客戶(hù)端指定多個(gè)可接受的選項(xiàng),有時(shí)甚至可以對(duì)這些選項(xiàng)的首選項(xiàng)進(jìn)行排名,多個(gè)項(xiàng)以逗號(hào)分隔。所有請(qǐng)求行后面的內(nèi)容都是頭的一部分。緊接著頭之后是一個(gè)空行,表示頭已結(jié)束。Web 服務(wù)器可以通過(guò)多種方式響應(yīng)前一個(gè)請(qǐng)求。 </p><p>  2.2 HTTP 協(xié)議的運(yùn)作過(guò)程</p><p>  當(dāng)一個(gè)或多

64、個(gè)中介出現(xiàn)在請(qǐng)求/響應(yīng)鏈中時(shí),HTTP 協(xié)議的運(yùn)作情況就變得比較復(fù)雜。中介由三種:代理(Proxy)、網(wǎng)關(guān)(Gateway)和通道(Tunnel)。一個(gè)代理根據(jù) URL 的絕對(duì)格式來(lái)接受請(qǐng)求,重寫(xiě)全部或部分消息,通過(guò) URL 的標(biāo)識(shí)把已格式化過(guò)的請(qǐng)求發(fā)送到服務(wù)器。網(wǎng)關(guān)是一個(gè)接收代理,作為一些其它服務(wù)器的上層,并且如果必須的話(huà),可以把請(qǐng)求翻譯給下層的服務(wù)器協(xié)議。一個(gè)通道作為不改變消息的兩個(gè)連接之間的中繼點(diǎn)。當(dāng)通訊需要通過(guò)一個(gè)中介(例如:防

65、火墻等)或者是中介不能識(shí)別消息的內(nèi)容時(shí),通道經(jīng)常被使用。 </p><p>  簡(jiǎn)要介紹了 HTTP 協(xié)議的宏觀運(yùn)作方式,下面介紹一下 HTTP 協(xié)議的內(nèi)部操作過(guò)程。 </p><p>  首先,簡(jiǎn)單介紹基于 HTTP 協(xié)議的客戶(hù)/服務(wù)器模式的信息交換過(guò)程,它分四個(gè)過(guò)程,建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。 </p><p>  在 WWW 中,“客戶(hù)”

66、與“服務(wù)器”是一個(gè)相對(duì)的概念,只存在于一個(gè)特定的連接期間,即在某個(gè)連接中的客戶(hù)在另一個(gè)連接中可能作為服務(wù)器。WWW 服務(wù)器運(yùn)行時(shí),一直在 TCP80 端口(WWW 的缺省端口)監(jiān)聽(tīng),等待連接的出現(xiàn)。下面,討論 HTTP 協(xié)議下客戶(hù)/服務(wù)器模式中信息交換的實(shí)現(xiàn)。 </p><p><b>  1.建立連接 </b></p><p>  連接的建立是通過(guò)申請(qǐng)?zhí)捉幼?S

67、ocket)實(shí)現(xiàn)的??蛻?hù)打開(kāi)一個(gè)套接字并把它綁定在一個(gè)端口上,如果成功,就相當(dāng)于建立了一個(gè)虛擬文件。以后就可以在該虛擬文件上寫(xiě)數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)向外傳送。 </p><p><b>  2.發(fā)送請(qǐng)求 </b></p><p>  打開(kāi)一個(gè)連接后,客戶(hù)機(jī)把請(qǐng)求消息送到服務(wù)器的特定端口上,完成提出請(qǐng)求動(dòng)作。 </p><p>  HTTP/1.0

68、請(qǐng)求消息的格式為: </p><p>  請(qǐng)求消息=請(qǐng)求行(通用信息|請(qǐng)求頭|實(shí)體頭)CRLF[實(shí)體內(nèi)容] </p><p>  請(qǐng)求行=方法 請(qǐng)求 URL HTTP 版本號(hào) CRLF </p><p>  方法=GET|HEAD|POST|擴(kuò)展方法 </p><p>  URL=協(xié)議名稱(chēng)+宿主名+目錄與文件名 </p>

69、<p>  請(qǐng)求行中的方法描述指定資源中應(yīng)該執(zhí)行的動(dòng)作,常用的方法有 GET、HEAD和 POST。不同的請(qǐng)求對(duì)象對(duì)應(yīng) GET 的結(jié)果是不同的,對(duì)應(yīng)關(guān)系如下: </p><p>  對(duì)象 GET 的結(jié)果 </p><p>  文件 文件的內(nèi)容 </p><p>  程序 該程序的執(zhí)行結(jié)果 </p&

70、gt;<p>  數(shù)據(jù)庫(kù)查詢(xún) 查詢(xún)結(jié)果 </p><p>  HEAD——要求服務(wù)器查找某對(duì)象的元信息,而不是對(duì)象本身。 </p><p>  POST——從客戶(hù)機(jī)向服務(wù)器傳送數(shù)據(jù),在要求服務(wù)器和 CGI 做進(jìn)一步處理時(shí)會(huì)用到 POST 方法。POST 主要用于發(fā)送 HTML 文本中 FORM 的內(nèi)容,讓 CGI 程序處理。</p><p>  

71、頭信息又稱(chēng)為元信息,即信息的信息,利用元信息可以實(shí)現(xiàn)有條件的請(qǐng)求或應(yīng)答。 </p><p>  請(qǐng)求頭——告訴服務(wù)器怎樣解釋本次請(qǐng)求,主要包括用戶(hù)可以接受的數(shù)據(jù)類(lèi)型、壓縮方法和語(yǔ)言等。 </p><p>  實(shí)體頭——實(shí)體信息類(lèi)型、長(zhǎng)度、壓縮方法、最后一次修改時(shí)間、數(shù)據(jù)有效期等。 </p><p>  實(shí)體——請(qǐng)求或應(yīng)答對(duì)象本身。 </p><p

72、>  3.發(fā)送響應(yīng) 服務(wù)器在處理完客戶(hù)的請(qǐng)求之后,要向客戶(hù)機(jī)發(fā)送響應(yīng)消息。 </p><p>  HTTP/1.0 的響應(yīng)消息格式如下: </p><p>  響應(yīng)消息=狀態(tài)行(通用信息頭|響應(yīng)頭|實(shí)體頭) CRLF 〔實(shí)體內(nèi)容〕 </p><p>  狀態(tài)行=HTTP 版本號(hào) 狀態(tài)碼 原因敘述 </p><p>  狀態(tài)碼

73、表示響應(yīng)類(lèi)型 </p><p><b>  1×× 保留 </b></p><p>  2×× 表示請(qǐng)求成功地接收 </p><p>  3×× 為完成請(qǐng)求客戶(hù)需進(jìn)一步細(xì)化請(qǐng)求 </p><p>  4×× 客戶(hù)錯(cuò)誤 <

74、/p><p>  5×× 服務(wù)器錯(cuò)誤 </p><p>  響應(yīng)頭的信息包括:服務(wù)程序名,通知客戶(hù)請(qǐng)求的 URL 需要認(rèn)證,請(qǐng)求的資源何時(shí)能使用。 </p><p>  4.關(guān)閉連接 客戶(hù)和服務(wù)器雙方都可以通過(guò)關(guān)閉套接字來(lái)結(jié)束 TCP/IP 對(duì)話(huà)。 </p><p>  2.3 HTTP 協(xié)議的工作模式及特點(diǎn) <

75、/p><p>  HTTP 協(xié)議是一種用于分布式、合作式的多媒體信息系統(tǒng)的應(yīng)用層協(xié)議,它在 1990 年 WWW 全球信息剛剛起步的時(shí)候就得到了應(yīng)用。HTTP 協(xié)議是一種請(qǐng)求/響應(yīng)協(xié)議,在與主機(jī)建立連接后,客戶(hù)以請(qǐng)求方法、URI 和協(xié)議版本的形式向服務(wù)器發(fā)送請(qǐng)求,隨后是類(lèi) MIME 信息(包括請(qǐng)求修改,客戶(hù)信息和可能的正文內(nèi)容)。服務(wù)器用包括消息協(xié)議版本和一個(gè)成功或錯(cuò)誤代碼的狀態(tài)行進(jìn)行應(yīng)答,隨后也是類(lèi) MIME 信息

76、(包括服務(wù)器信息,實(shí)體維護(hù)信息和可能的實(shí)體內(nèi)容)。HTTP 通信通常發(fā)生在 TCP 連接上,雖然 TCP 是面向連接的傳輸層協(xié)議,但 HTTP 本身是一個(gè)無(wú)連接的協(xié)議,其無(wú)連接性表現(xiàn)在每一次請(qǐng)求和相應(yīng)完成后,該連接就自動(dòng)斷開(kāi),解決此問(wèn)題的方法可以通過(guò)在網(wǎng)頁(yè)中加入刷新機(jī)制,使網(wǎng)頁(yè)不斷請(qǐng)求連接服務(wù)器。HTTP 通信的默認(rèn)端口是 80,不過(guò)其它端口也可以使用。在互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)上,這并不妨礙 HTTP 應(yīng)用在其他協(xié)議的頂端。僅僅期望可靠的傳輸

77、,任何能提供這種保證的協(xié)議都可以使用。在基于 HTTP 協(xié)議的客戶(hù)/服務(wù)器數(shù)據(jù)交換時(shí),當(dāng) HTTP 請(qǐng)求產(chǎn)生時(shí),就開(kāi)始一次 HTTP 通信,過(guò)程如下:</p><p>  瀏覽器提取出 URL 中的主機(jī)后,向 DNS 發(fā)出請(qǐng)求,解析主機(jī)名的 IP 地址;</p><p>  DNS 解析地址并將結(jié)果返回給瀏覽器;</p><p>  瀏覽器向該地址請(qǐng)求建立 TCP

78、連接; </p><p>  瀏覽器發(fā)出請(qǐng)求報(bào)文; </p><p>  服務(wù)器向?yàn)g覽器發(fā)送響應(yīng)報(bào)文,并將指定數(shù)據(jù)發(fā)送給瀏覽器; </p><p><b>  斷開(kāi)連接。</b></p><p><b>  第三章 設(shè)計(jì)思想</b></p><p><b>  3.

79、1系統(tǒng)總體設(shè)計(jì)</b></p><p>  通過(guò)軟件需求分析來(lái)確定軟件系統(tǒng)開(kāi)發(fā)目標(biāo)、需求規(guī)格??傮w設(shè)計(jì)的任務(wù)是解決怎么做,實(shí)現(xiàn)將需求規(guī)格轉(zhuǎn)換為體系結(jié)構(gòu)并劃分程序的模塊組成,以及模塊間的相互聯(lián)系。確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),即組成系統(tǒng)的元素、程序、文件文檔等,但是每一個(gè)物理元素仍然是黑盒子狀態(tài)。軟件結(jié)構(gòu)反映系統(tǒng)中模塊的相互調(diào)用關(guān)系:頂層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能,每個(gè)下層模塊再調(diào)用更下層的模塊,最

80、下層的模塊完成最具體的功能。當(dāng)數(shù)據(jù)流圖細(xì)化到適當(dāng)?shù)膶哟危瑒t可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。</p><p>  設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)通過(guò)模塊分解或合并審查,力求降低耦合提高內(nèi)聚。模塊的劃分要符合獨(dú)立性原則。模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因,應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。詳細(xì)通訊過(guò)程見(jiàn)附錄。</p><p>  3.1.1系統(tǒng)的結(jié)構(gòu)圖說(shuō)明<

81、;/p><p>  圖3-1 系統(tǒng)結(jié)構(gòu)圖</p><p>  主程序:服務(wù)端程序開(kāi)始運(yùn)行時(shí),主進(jìn)程就創(chuàng)建一個(gè)套接口,并和主機(jī)地址及端口綁定到一起,隨后置為被動(dòng)監(jiān)聽(tīng)狀態(tài),等待客戶(hù)端連接請(qǐng)求的到來(lái)。一旦接收了一個(gè)連接,ACCEPT會(huì)返回一個(gè)新的套接口描述符,主進(jìn)程則創(chuàng)建一個(gè)新的子進(jìn)程來(lái)處理這個(gè)新的連接,這樣系統(tǒng)可以同時(shí)接受最多5個(gè)客戶(hù)端來(lái)的請(qǐng)求。建立TCP類(lèi)型SOCKE在80端口進(jìn)行監(jiān)聽(tīng)連接請(qǐng)求。

82、接收到連接請(qǐng)求將請(qǐng)求傳送給連接處理模塊處理。并繼續(xù)進(jìn)行監(jiān)聽(tīng)。</p><p>  3.1.2 功能分配</p><p>  發(fā)送當(dāng)前目錄文件列表信息 </p><p>  將服務(wù)器當(dāng)前目錄下所有文件的信息發(fā)送給客戶(hù)端信息包括: 文件名、大小、日期。 </p><p>  發(fā)送 HTML 類(lèi)型文件 </p><p>

83、  將客戶(hù)請(qǐng)求的 HTML 類(lèi)型文件發(fā)送給客戶(hù)。 </p><p><b>  發(fā)送純文本文件 </b></p><p>  將客戶(hù)請(qǐng)求的純文本發(fā)送給客戶(hù)。 </p><p>  發(fā)送 JPG 圖像文件 </p><p>  將客戶(hù)請(qǐng)求的 JPG 圖像文件發(fā)送給客戶(hù)。 </p><p>  發(fā)送

84、 GIF 圖像文件 </p><p>  將客戶(hù)請(qǐng)求的 GIF 圖像文件發(fā)送給客戶(hù)。 </p><p>  解析客戶(hù)請(qǐng)求 HTTP 協(xié)議頭 </p><p>  分析客戶(hù)的請(qǐng)求包括: </p><p><b>  1. 空格處理 </b></p><p>  2. 解析客戶(hù)請(qǐng)求命令 </p&

85、gt;<p>  3. 解析客戶(hù)請(qǐng)求的資源名 </p><p>  4. 解析客戶(hù)請(qǐng)求的資源類(lèi)型。 </p><p><b>  客戶(hù)連接處理 </b></p><p>  解析 Referrer 和 content_length 字段值并調(diào)用客戶(hù)請(qǐng)求解析函數(shù)。 </p><p>  發(fā)送 HTTP 協(xié)議數(shù)

86、據(jù)頭 </p><p>  根據(jù)發(fā)送文件類(lèi)型發(fā)送相應(yīng)的 HTTP 協(xié)議頭信息。[3]</p><p><b>  3.2詳細(xì)設(shè)計(jì)</b></p><p>  3.2.1主程序設(shè)計(jì)</p><p>  功能說(shuō)明:系統(tǒng)的總?cè)肟谝彩窍到y(tǒng)的主要控制函數(shù)。分別完成如下功能: </p><p><b&g

87、t;  建立環(huán)境設(shè)置。 </b></p><p>  設(shè)置信號(hào)處理方式。 </p><p>  建立偵聽(tīng) TCP 流方式 SOCKET 并綁定 80 端口。 </p><p>  建立連接偵聽(tīng)及客戶(hù)連接處理調(diào)用主循環(huán)。 </p><p>  該系統(tǒng)基于TCP/ IP 的套接口通信,具體的消息處理遵循HTTP 協(xié)議,服務(wù)端程序的工作

88、狀態(tài)如下圖。 </p><p>  圖3-3 主程序流程圖</p><p>  圖3-2 主進(jìn)程與線程</p><p>  3.2.2 客戶(hù)請(qǐng)求連接處理模塊設(shè)計(jì)</p><p><b>  功能說(shuō)明 </b></p><p>  當(dāng)用戶(hù)的請(qǐng)求達(dá)到 HTTP 服務(wù)端程序的時(shí)候,通過(guò)客戶(hù)連接處理模塊來(lái)

89、初步處理客戶(hù)的連接請(qǐng)求,并將請(qǐng)求信息傳遞給客戶(hù)請(qǐng)求解析函數(shù)處理。 </p><p><b>  算法描述: </b></p><p>  圖3-4 客戶(hù)請(qǐng)求連接處理模塊 N-S 盒圖</p><p>  3.2.3 客戶(hù)請(qǐng)求解析處理模塊設(shè)計(jì)</p><p><b>  功能說(shuō)明 </b></p

90、><p>  用于解析客戶(hù)的請(qǐng)求并根據(jù)請(qǐng)求信息調(diào)用相應(yīng)的函數(shù)進(jìn)行請(qǐng)求處理。</p><p>  圖3-5 客戶(hù)請(qǐng)求解析處理模塊的流程圖</p><p>  3.2.4 發(fā)送 HTTP 協(xié)議數(shù)據(jù)頭模塊設(shè)計(jì)</p><p><b>  功能說(shuō)明:</b></p><p>  根據(jù)客戶(hù)瀏覽器請(qǐng)求的不同參數(shù),

91、發(fā)送不同的 HTTP 協(xié)議頭信息。</p><p>  圖3-6 協(xié)議數(shù)據(jù)頭模塊的 N—S 盒圖</p><p>  至此,系統(tǒng)的軟件設(shè)計(jì)部分已經(jīng)完成,下一階段的工作就是根據(jù)系統(tǒng)的詳細(xì)設(shè)計(jì),實(shí)現(xiàn)各模塊的編程,以及將各個(gè)模塊組裝成一個(gè)完整的系統(tǒng)。</p><p>  3.3 程序設(shè)計(jì)需求分析</p><p>  嵌入式系統(tǒng)中服務(wù)器的實(shí)現(xiàn)方法主要

92、有兩種:目標(biāo)嵌入式系統(tǒng)設(shè)備使用嵌入式操作系統(tǒng)和目標(biāo)嵌入式系統(tǒng)設(shè)備不使用操作系統(tǒng)。本課題采用EOS的服務(wù)端功能的程序?qū)崿F(xiàn)。[4]</p><p>  在低端嵌入式設(shè)備上實(shí)現(xiàn) HTTP 服務(wù)端功能的程序,要根據(jù)該系統(tǒng)對(duì) HTTP 服務(wù)的功能需求簡(jiǎn)化 HTTP 協(xié)議的一些機(jī)制,在資源有限的情況下設(shè)計(jì)滿(mǎn)足需求的嵌入式 HTTP 服務(wù)端程序。</p><p>  圖3-7 嵌入式 HTTP 服務(wù)端

93、程序的原理</p><p>  需求分析的結(jié)果是系統(tǒng)開(kāi)發(fā)的基礎(chǔ),關(guān)系到系統(tǒng)開(kāi)發(fā)的整過(guò)過(guò)程,以及軟件的成敗和質(zhì)量。嵌入式系統(tǒng)的特點(diǎn)決定了系統(tǒng)在開(kāi)發(fā)初期的需求分析過(guò)程中就要完成的任務(wù)在需求分析階段需要分析客戶(hù)需求,包括功能需求、數(shù)據(jù)流圖以及系統(tǒng)地?cái)?shù)據(jù)要求等。</p><p><b>  1、功能要求 </b></p><p> ?、僭谇度胧较到y(tǒng)中實(shí)

94、現(xiàn) HTTP(服務(wù)端)的程序,在客戶(hù)端向服務(wù)端發(fā)出請(qǐng)求,時(shí)將服務(wù)器當(dāng)前目錄下所有文件的信息發(fā)送給客戶(hù)端信息包括:</p><p>  文件名、大小、日期; </p><p> ?、讷@取指定的文件,并解析文件類(lèi)型(HTML、TXT、JPG、GIF 等文件); </p><p> ?、垌憫?yīng)客戶(hù)端程序的要求,析客戶(hù)的請(qǐng)求將請(qǐng)求信息解析為幾個(gè)變量包括:請(qǐng)求的命令、請(qǐng)求的文件

95、名、請(qǐng)求的文件類(lèi)型。 </p><p>  2、系統(tǒng)的數(shù)據(jù)流分析——數(shù)據(jù)流圖(Data Flow Diagram,簡(jiǎn)稱(chēng) DFD) </p><p>  圖3-8 系統(tǒng)數(shù)據(jù)流圖</p><p><b>  、</b></p><p><b>  第四章 程序?qū)崿F(xiàn)</b></p><

96、p>  4.1主程序?qū)崿F(xiàn)的主要思想</p><p>  主進(jìn)程(HTTP服務(wù)端程序)開(kāi)始運(yùn)行時(shí),主進(jìn)程就創(chuàng)建一個(gè)套接口,并和主機(jī)地址綁定到一起,隨后置為被動(dòng)監(jiān)聽(tīng)狀態(tài),等待客戶(hù)端連接請(qǐng)求的到來(lái)。一旦接收了一個(gè)連接,ACCEPT 會(huì)返回一個(gè)新的套接口描述符,[5]主進(jìn)程則開(kāi)辟一個(gè)新的子進(jìn)程來(lái)處理這個(gè)新的連接,這樣系統(tǒng)可以同時(shí)接受多個(gè)客戶(hù)端來(lái)的請(qǐng)求。 </p><p><b> 

97、 具體如下: </b></p><p>  int socket (int family ,int type ,int protocol); </p><p>  family:一般為 AF_INET,代表 Internet(TCP/IP)地址族; </p><p>  type:參數(shù)指定 socket 的類(lèi)型:SOCK_STREAM 或 SOCK_DG

98、RAM; </p><p>  protocol:通常賦值"0"。該函數(shù)用來(lái)創(chuàng)建一個(gè)套接口, 并返回一個(gè)短整數(shù)的套接口描述符,可以在后面的程序中調(diào)用使用它。 </p><p>  Socket 描述符是一個(gè)指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用 Socket 函數(shù)時(shí),socket 執(zhí)行體將建立一個(gè) Socket,實(shí)際上“建立一個(gè) Socket”意味著為一個(gè) S

99、ocket 數(shù)據(jù)結(jié)構(gòu)分配存儲(chǔ)空間。Socket 執(zhí)行體為你管理描述符表。 </p><p>  Bind 函數(shù)將 socket 與本機(jī)上的一個(gè)端口相關(guān)聯(lián),隨后可以在該端口監(jiān)聽(tīng)服務(wù)請(qǐng)求。Bind 函數(shù)原型為: </p><p>  int bind(int sockfd,struct sockaddr *my_addr, int addrlen); </p><p&g

100、t;  Sockfd是調(diào)用socket函數(shù)返回的socket描述符,my_addr是一個(gè)指向包含有本機(jī)IP地址及端口號(hào)等信息的sockaddr類(lèi)型的指針;addrlen常被設(shè)置為sizeof(struct sockaddr)。Bind()函數(shù)在成功被調(diào)用時(shí)返回0;出現(xiàn)錯(cuò)誤時(shí)返回"-1"并將errno置為相應(yīng)的錯(cuò)誤號(hào)。 </p><p>  Listen 函數(shù)使 socket 處于被動(dòng)的監(jiān)聽(tīng)模式

101、,并為該 socket 建立一個(gè)輸入數(shù)據(jù)隊(duì)列,將到達(dá)的服務(wù)請(qǐng)求保存在此隊(duì)列中,直到程序處理它們。</p><p>  int listen(int sockfd, int backlog); </p><p>  Sockfd 是 Socket 系統(tǒng)調(diào)用返回的 socket 描述符;backlog 指定在請(qǐng)求隊(duì)列中允許的最大請(qǐng)求數(shù),進(jìn)入的連接請(qǐng)求將在隊(duì)列中等待 accept()它們。Ba

102、cklog對(duì)隊(duì)列中等待服務(wù)的請(qǐng)求的數(shù)目進(jìn)行了限制,大多數(shù)系統(tǒng)缺省值為 20。如果一個(gè)服務(wù)請(qǐng)求到來(lái)時(shí),輸入隊(duì)列已滿(mǎn),該 socket 將拒絕連接請(qǐng)求,客戶(hù)將收到一個(gè)出錯(cuò)信息。當(dāng)出現(xiàn)錯(cuò)誤時(shí) listen 函數(shù)返回-1,并置相應(yīng)的 errno 錯(cuò)誤碼。 </p><p>  accept()函數(shù)讓服務(wù)器接收客戶(hù)的連接請(qǐng)求。在建立好輸入隊(duì)列后,服務(wù)器就調(diào)用 accept 函數(shù),然后睡眠并等待客戶(hù)的連接請(qǐng)求。 <

103、/p><p>  int accept(int sockfd, void *addr, int *addrlen); </p><p>  sockfd 是被監(jiān)聽(tīng)的 socket 描述符,addr 通常是一個(gè)指向 sockaddr_in 變量的指針,該變量用來(lái)存放提出連接請(qǐng)求服務(wù)的主機(jī)的信息(某臺(tái)主機(jī)從某個(gè)端口發(fā)出該請(qǐng)求);addrten 通常為一個(gè)指向值為 sizeof(struct so

104、ckaddr_in)的整型指針變量。出現(xiàn)錯(cuò)誤時(shí) accept 函數(shù)返回-1 并置相應(yīng)的 errno 值。 </p><p>  當(dāng) accept 函數(shù)監(jiān)視的 socket 收到連接請(qǐng)求時(shí),socket 執(zhí)行體將建立一個(gè)新的 socket,執(zhí)行體將這個(gè)新 socket 和請(qǐng)求連接進(jìn)程的地址聯(lián)系起來(lái),收到服務(wù)請(qǐng)求的初始 socket 仍可以繼續(xù)在以前的 socket 上監(jiān)聽(tīng),同時(shí)可以在新的socket 描述符上進(jìn)行

105、數(shù)據(jù)傳輸操作。 </p><p>  線程:用來(lái)處理每個(gè)具體請(qǐng)求,線程中主要由幾個(gè)處理模塊組成:通用函數(shù)模塊、靜態(tài)文本處理模塊、CGI 模塊和出錯(cuò)處理。</p><p>  4.2 幾個(gè)主要函數(shù)的名稱(chēng)及相關(guān)參數(shù)說(shuō)明</p><p><b>  Copy 函數(shù) </b></p><p>  函數(shù)名: int copy(F

106、ILE *read_f, FILE *write_f) </p><p>  參數(shù) 1:文件流 FILE 結(jié)構(gòu)指針用于表示讀文件流指針。 </p><p>  參數(shù) 2:文件流 FILE 結(jié)構(gòu)指針用于表示寫(xiě)文件流指針。 </p><p><b>  客戶(hù)連接處理 </b></p><p>  函數(shù)名:int Handle

107、 Connect(int fd) </p><p>  參數(shù):客戶(hù)連接文件描述字 </p><p><b>  解析客戶(hù)請(qǐng)求 </b></p><p>  函數(shù)名:int Parse Cli Req(FILE *file_pointer, char *r) HTTP </p><p>  參數(shù) 1:文件流 FILE 結(jié)構(gòu)

108、指針用于表示客戶(hù)連接的文件流指針。 </p><p>  參數(shù) 2:字符串指針待解析的字符串。 </p><p>  發(fā)送 HTTP 協(xié)議數(shù)據(jù)頭 </p><p>  函數(shù)名:int Send Header(FILE *file_pointer, int content_type) </p><p>  參數(shù) 1:文件流 FILE 結(jié)構(gòu)指針用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論