《《簡易WEB服務器設計》文獻綜述》由會員分享,可在線閱讀,更多相關《《簡易WEB服務器設計》文獻綜述(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、《簡易WEB服務器設計》文獻綜述
摘要
本文主要論述了WEB服務器的設計與研究,其中介紹了WEB服務器現(xiàn)況,WEB 服務器的的基本組成,包括服務器端和瀏覽器端,WEB系統(tǒng)的工作原理,服務器/瀏覽器的通信模式,以及用VC++和SOCKET完成web服務器基本功能:頁面訪問請求響應、HTML文件的解析以及數(shù)據(jù)發(fā)送。著重介紹了分析請求和構造響應這兩項服務器與瀏覽器通信所必需的功能。同時,對軟件的界面設計、及界面的制作方法、系統(tǒng)托盤程序的制作以及程序編譯完成后的調(diào)試工作以及編程和軟件完成后各種相應問題的解決也做了簡單的介紹,另外還對Socket規(guī)范的含義,以及socket各種類的組成和操作
2、函數(shù),本次設計的開發(fā)工具Visual C++ 6.0做了介紹。并對簡易WEB服務器的頁面設計,偵聽和響應等功能模塊的設計以及具體代碼實現(xiàn)做了較為詳細的介紹。
關鍵詞:WEB服務器、WEB服務器端構架、socket、VC++
Abstract
This paper mainly talks about researching and designing on a simple web server. In this paper, I give an introduction On Web server status,WEB server of the basic compo
3、nents, include server and browser and how the web system working I also introduce how they communicate between web server and browser,and Completed basic functions of the web server with VC++ and SOCKET : In response to requests for visits to pages, HTML document analysis and data sent.introduction
4、Analysis focused on the request and to respond to these two tectonic server browser with the necessary communications functions.Meanwhile,introduce about software interface design,Interface methods,System tray production process and Compiling procedures after the completion of testing and Programmin
5、g and software after the completion of a variety of solutions.Then,What is WinSocket, how it is developing, how to write the codes with socket, how to use the develop tool Visual C++ 6.0 are related. Then I talk about how to design page and write the codes of listen and response function modules of
6、web server in detail.introduction Analysis focused on the request and to respond to these two tectonic server browser with the necessary communications functions.
Keywords: Web server, WEB server architecture, socket,VC++
如今,上網(wǎng)已成為最熱門話題,通過Internet,我們既能獲取信息又能發(fā)布信息,而迅速發(fā)展的Web技術更是給Internet應用提供了一個
7、很好的發(fā)展方向。當今的許多應用都是基于web技術的,如電子商務、視頻會議、遠程醫(yī)療診斷等。
WWW 是 World Wide Web (環(huán)球信息網(wǎng))的縮寫,也可以簡稱為 Web,中文名字為“萬維網(wǎng)”。它起源于1989年3月,由歐洲量子物理實驗室 CERN(the European Laboratory for Particle Physics)所發(fā)展出來的主從結構分布式超媒體系統(tǒng)。通過萬維網(wǎng),人們只要通過使用簡單的方法,就可以很迅速方便地取得豐富的信息資料。 由于用戶在通過 Web 瀏覽器訪問信息資源的過程中,無需再關心一些技術性的細節(jié),界面簡單容易操作。長期以來,人們只是通過傳統(tǒng)的媒體(如
8、電視、報紙、雜志和廣播等)獲得信息,但隨著計算機網(wǎng)絡的發(fā)展,人們想要獲取信息,已不再滿足于傳統(tǒng)媒體那種單方面?zhèn)鬏敽瞳@取的方式,而希望有一種主觀的選擇性?,F(xiàn)在,網(wǎng)絡上提供各種類別的數(shù)據(jù)庫系統(tǒng),如文獻期刊、產(chǎn)業(yè)信息、氣象信息、論文檢索等等。由于計算機網(wǎng)絡的發(fā)展,信息的獲取變得非常及時、迅速和便捷。
到了1993年,WWW 的技術有了突破性的進展,它解決了遠程信息服務中的文字顯示、數(shù)據(jù)連接以及圖像傳遞的問題,使得 WWW 成為 Internet 上最為流行的信息傳播方式。 現(xiàn)在,Web 服務器成為 Internet 上最大的計算機群,可以說,Web 為 Internet 的普及邁出了開創(chuàng)性的一步
9、, WWW 采用的是客戶/服務器結構,其作用是整理和儲存各種WWW資源,并響應客戶端軟件的請求,把客戶所需的資源傳送到Windows NT、UNIX 或 Linux 等平臺上。
迅速發(fā)展的Web技術給Internet應用提供了個很好的發(fā)展方向。當今的許多應用都是基于web技術的,如電子商務、視頻會議、遠程醫(yī)療診斷等。在嵌入式系統(tǒng)的應用中,由于HTMI 語言的標準統(tǒng)一性,只要在設備里建立一個微型web服務器,人們就可以使用現(xiàn)有的Web瀏覽器與該設備進行雙向交互、接收或發(fā)送信息。因此,針對微型web服務器的研究和應用,具有重大的意義,它為我們管理、控制和監(jiān)測各種各樣的設備提供了一個很好的途徑一基
10、于Internet,也就是說,只要設備接入了Internet,我們就可以在世界上的任何地方十分方便地控制、操縱那些配備有微型Web服務器的設備。
目前在市場上有20到30種Web應用服務器,每種服務器在實現(xiàn)對象組件支持、分布式計算、部署的速度和易用程度上采取了不同方式。
目前市場上主流Web服務器主要有以下幾種產(chǎn)品:
1.Apache,由SUN公司開發(fā)的Apache服務器可以運行在包括Linux等多種系統(tǒng)平臺之上。Apache支持許多特性,大部分通過編譯的模塊實現(xiàn),如很有用的URL重寫,定制日志文件以及過濾支持等。
2.Zeus Webserver3.3.8 服務器,Zeus服
11、務器在SMP (Symmetric Multi Processing的簡稱,意為對稱多處理系統(tǒng),內(nèi)有許多緊耦合多處理器,這種系統(tǒng)的最大特點就是共享所有資源) 環(huán)境下有優(yōu)秀的可伸縮性,并實現(xiàn)了常見的特性集合,如訪問控制、動態(tài)內(nèi)容產(chǎn)生和安全等。
3. iPlanet Enterprise Edition 4.1,Netscape公司開發(fā)的iPlanet具有現(xiàn)今高性能WEB服務器的特性,如具有很高的可靠性、可用性、可維護性,系統(tǒng)高度可擴展性等特點,相對其它WEB服務器iPlanet還提供更多的JAVA功能。
4.AOLserver 3.3.1 ,AOL公司開發(fā)的AOLserver 3.3.1是一
12、個多線程、可升級和擴展的WEB服務器。
5. Roxen WebServer 2.1.31,在Roxen中可以使用RXML語言生成動態(tài)網(wǎng)頁內(nèi)容。RXML是函數(shù)形式的服務器端XML腳本語言,它由Roxen服務器解析并執(zhí)行。
6. Jigsaw,它由WWW組織(W3C)開發(fā),W3C組織負責研究和規(guī)定網(wǎng)絡協(xié)議的標準(如HTTP)。它使用JAVA語言開發(fā),是成功的面向?qū)ο蟆⒐δ苋娴姆掌?。因為Jigsaw不受測試平臺的限制,所以Jigsaw是一個具有活力的、擁有無限潛能的優(yōu)秀WEB服務器。
在嵌入式系統(tǒng)的應用中,由于HTMI 語言的標準統(tǒng)一性,只要在設備里建立一個微型web服務器,人們就可以使
13、用現(xiàn)有的Web瀏覽器與該設備進行雙向交互、接收或發(fā)送信息。它為我們管理、控制和監(jiān)測各種各樣的設備提供了一個很好的途徑,只要設備接入了Internet,我們就可以在世界上的任何地方十分方便地控制、操縱那些配備有微型Web服務器的設備。
在Internet上為了發(fā)布信息,用戶必須運行Web服務器程序。但現(xiàn)成的服務器程序有時候不能滿足所有人的要求,所以可以動手開發(fā)一個自己的Web服務器程序,其功能就可由設計者定制的功能和需求決定了。
Web瀏覽器通??梢允褂昧餍械腎E或者其它的瀏覽器。服務器端的TCP/IP協(xié)議棧是操作系統(tǒng)內(nèi)嵌的,其信息流符合HTTP協(xié)議。服務器中的HTTP引擎用來分析瀏覽器的請
14、求消息,并根據(jù)請求作出相應的動作。這些動作包括向瀏覽器發(fā)送一些靜態(tài)頁面或調(diào)用一些應用服務程序。對于服務器中的靜態(tài)web頁面,可以使用一些常用軟件如FrontPage等制作,以備Web服務器調(diào)用。而服務器中的應用服務程序則用來擴展服務器所提供的服務。從圖l中可以看出,微型web服務器的核心就是:HTTP引擎。
HTTP協(xié)議是一種網(wǎng)絡應用層的標準協(xié)議,Web瀏覽器和Web服務器之間的通信都是采用HTTP協(xié)議來實現(xiàn)的。因此只要是符合HTTP協(xié)議的通訊過程和數(shù)據(jù)內(nèi)容,就可以使用瀏覽器作為客戶端進行連接和傳遞。
要完成Web服務,除了網(wǎng)絡通信鏈路的建立和拆除,之外至少還要有二方面的功能:
15、“分折請求” 和“構造響應”。客戶端與服務器交換數(shù)據(jù)之前,首先用TCP/IP建立連接,客戶端向服務器請求數(shù)據(jù),服務器則向客戶端響應并提供數(shù)據(jù).客戶端和服務器以HTTP協(xié)議進行請求和響應.服務器和客戶端只能為一次事務處理建立并維持連接,完成一次事務處理后便結束連接.
一般來說,Web服務器通常由以下幾個部分組成:(1)服務器初始化部分.這部分主要完成Web服務器的初始化工作,如建立守護進程、創(chuàng)建TCP套接字、綁定端口、將TCP套接字轉(zhuǎn)換成偵聽套接字,進入循環(huán)結構,等待接收用戶瀏覽器連接.(2)接收客戶端請求.由于客戶端請求以文本行的方式實現(xiàn),所以服務器一般也以文本行為單位接收.(3)解析客
16、戶端請求.這部分工作比較復雜,需要解析出請求的方法、URL目標、可選的查詢信息及表單信息.如果請求方法為HEAD,則簡單地返回響應首部即可;如果方法是GET,則首先返回響應首部,然后將客戶端請求的URL目標文件從服務器磁盤上讀出,再發(fā)送給客戶端;如果是POST,則比較麻煩,首先要調(diào)用相應的CGI程序,然后將用戶表單信息傳給CGI程序,CGI程序根據(jù)表單內(nèi)容完成相應的工作,并將結果數(shù)據(jù)返回.(4)發(fā)送響應信息之后,關閉與客戶機的連接.
現(xiàn)代計算機利用操作系統(tǒng)在不同通信協(xié)議層次上提供的接口實現(xiàn)網(wǎng)絡進程安全通信,主要使用軟件工程的方法(分層次、分模塊等技術)實現(xiàn)。作為網(wǎng)絡上公認的事實的通信標準,T
17、CP/IP協(xié)議成為現(xiàn)代計算機操作系統(tǒng)通過網(wǎng)絡編程實現(xiàn)網(wǎng)絡通信的重要部分。而WINSOCK就是服務器與協(xié)議間一個必不可少的橋梁,她建立一條可靠的、基于連接的通信接口,客戶機和服務器在該鏈接上傳輸數(shù)據(jù),客戶端發(fā)出請求,服務器監(jiān)聽來自客戶端的請求,并作出響應服務。
Winsock 控件與Sockets完全兼容,是一個專門用于Windows網(wǎng)絡編程的Active X控件。它提供了訪問TCP和UDP網(wǎng)絡服務的方便途徑。
計算機網(wǎng)絡是由一系列網(wǎng)絡通信協(xié)議組成,其中的核心協(xié)議是傳輸層的TCP/ IP 和UDP 協(xié)議,TCP 是面向連接的,UDP 是無連接的,通信雙方都不保持對方的狀態(tài)。Socke
18、t 是建立在傳輸層協(xié)議(主要是TCP 和UDP) 上的一種套接字規(guī)范,最初是由美國加州Berkley 大學提出,它定義兩臺計算機間進行通信的規(guī)范,如果說兩臺計算機是利用一個“通道”進行通信,那么這個通道的兩端就是兩個套接字,套接字屏蔽了底層通信軟件和具體操作系統(tǒng)的差異,使得任何兩臺安裝了TCP 協(xié)議軟件和實現(xiàn)了套接字規(guī)范的計算機之間的通信成為可能。
在Windows 網(wǎng)絡編程中,套接字接口主要有3種類型:流式套接字,數(shù)據(jù)報套接字和原始套字。流式套接字定義了一種面向連接的服務,實現(xiàn)了無差錯無重復的順序數(shù)據(jù)傳輸,無長度限制。數(shù)據(jù)報套接字接口定義了一種無連接的服務,數(shù)據(jù)通過相互獨立的報文進行傳輸,
19、它是無序的,并且不能保證可靠。原始套接字允許對低層協(xié)議IP 或ICMP直接訪問,主要應用于網(wǎng)絡協(xié)議的測試。在網(wǎng)絡應用中使用最多的是客戶/ 服務器模式,主要是采用面向連接的TCP 協(xié)議,其典型的套接字接口調(diào)用流程如圖2 所示。程序中需要用到兩個重要的組件,ClientSocket 組件為客戶端組件。它是通信的請求方,主動與服務器端建立連接。ServerSocket 組件為服務器端組件,它是通信的響應方,主要是監(jiān)聽以及被動接受客戶端的連接請求,并對請求進行回復。ServerSocket 組件可以同時接受一個或多個ClientSocket 組件的連接請求,并與每個ClientSocket組件建立單獨
20、的連接,進行單獨的通信。因此,一
個服務器端可以為多個客戶端服務。該程序包括一個服務器端程序和一個客戶端程序,其中客戶端程序可以放到多個計算機上運行,同時與服務器端進行連接通信。程序主要是解決兩個方面的問題,一是如何建立客戶端和服務器端的通信;二是當有多個客戶端同時連接到服務器端時,服務器端如何識別每個客戶端。
圖2 Socket 通信過程示意
通過Socket, 軟件的實際運行效果證明這種編程方法簡單、可項量靠。通過WinSock可以實現(xiàn)不同計算機各種信息的相互傳輸及同機中不同進程之間的相互通信,還可實現(xiàn)聯(lián)網(wǎng)計算機間的遠程控制可以成功實現(xiàn)多個客戶端和服務器的通信,同時可以保證
21、一個客戶端的連接、通信或者是斷開的情況下都不影響其它客戶端的正常通信。
參考文獻
[1] 李大亮,曲波.嵌入式Web服務器的設計與實現(xiàn)[J].鞍山科技報,2004,27(2)
[2] 羅惟,王萍.一個web服務器的設計[J].現(xiàn)代電子技術,2003,157(14)
[3] 楊陽. 基于URL的Web服務器數(shù)據(jù)訪問[J].網(wǎng)絡技術,2003,(10)
[4] 劉波濤,郭麥成. 微型WEB服務器的設計與實現(xiàn)[J].國外電子測量技, 2004, (1)
[5] 賈立華,林碧英. 在超文本協(xié)議中實現(xiàn)會話的若干方法[J].現(xiàn)代電力, 2003, (2)
[6] 盧成梁. 簡易WEB服務器應答模塊設計與研究市場周刊[J]., 2005, (4)
[7] 王茂林 賀富強,Socket 在局域網(wǎng)通信中的應用[J].2006,(5)
[8] 周小松,朱雄軍,基于TCP協(xié)議的Socket網(wǎng)絡編程模式部署及實現(xiàn),軟件技術研究[J],2006(9)
[9] 詠剛,Web開發(fā)技術發(fā)展史話