亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種簡易Web服務器的設計與實現(xiàn)

        2016-02-29 03:58:10
        電子科技 2016年1期

        王 棟

        (西安電子科技大學 電子信息攻防對抗與仿真重點實驗室,陜西 西安 710071)

        一種簡易Web服務器的設計與實現(xiàn)

        王棟

        (西安電子科技大學 電子信息攻防對抗與仿真重點實驗室,陜西 西安710071)

        摘要文中基于Linux操作系統(tǒng),介紹了在Linux下實現(xiàn)Web服務器的一種方法。通過對HTTP協(xié)議的分析,給出了Web服務器的實現(xiàn)細節(jié)。在一個局域網中,將此Web服務器程序運行在一臺裝有Ubuntu Linux的電腦上,并通過局域網中其他計算機上的瀏覽器正常訪問,驗證了文中所實現(xiàn)的Web服務器的正確性。

        關鍵詞Linux;HTTP;Web服務器

        Design and Implementation of a Simple Web Server

        WANG Dong

        (Key Laboratory of Electronic Information Countermeasure and Simulation,Xidian University,Xi’an 710071,China)

        AbstractThis paper describes the detailed implementation of a web server under Linux with the HTTP protocol.This web server program running on a computer with Ubuntu Linux can be normally accessed by other computer in the LAN,thus verifying the correctness of this Web server.

        KeywordsLinux;HTTP;Web server

        Linux操作系統(tǒng)自1991年誕生以來,由于其安全性好且成本低,而被越來越多的服務器、工作站以及個人電腦使用[1]?;贚inux以上優(yōu)點,本文選擇在Ubuntu環(huán)境下實現(xiàn)一個簡單的Web服務器。

        1設計流程

        1.1 實驗室環(huán)境搭建

        本文在一臺裝有Ubuntu的電腦上實現(xiàn)Web服務器。并通過網線將此電腦連接在與其他電腦在一起的局域網中,當此電腦的Web服務器開始運行后,局域網中的其他電腦可以通過各自的瀏覽器訪問服務器的Web頁面,如圖1所示。

        圖1 環(huán)境搭建

        1.2 HTTP協(xié)議概述

        應用層協(xié)議HTTP是Web的核心。HTTP協(xié)議在Web的客戶端程序和服務器程序中得以實現(xiàn),運行在不同系統(tǒng)上的客戶端程序和服務器程序,通過HTTP得到信息的交流。

        HTTP協(xié)議是基于客戶端/服務器之間的請求響應進行交互的。一個客戶端與服務器建立連接后,發(fā)送一個請求給服務器,請求方式的格式為:統(tǒng)一資源標識符、協(xié)議版本號等。服務器接收到客戶端的請求后向客戶端發(fā)送響應的響應信息。如圖2所示,是一個客戶端和服務器之間的HTTP協(xié)議訪問基本過程。

        在Internet上,HTTP通信通常發(fā)生在TCP/IP連接之上[2]。默認端口是TCP協(xié)議的80端口,本文的端口號設為8080。HTTP只能在TCP協(xié)議的基礎上進行傳輸。

        圖2 客戶端和服務器之間的HTTP請求響應過程

        HTTP協(xié)議的C/S模式的信息交換過程分為:建立連接、發(fā)送請求信息、發(fā)送響應信息、關閉連接4個過程。(1)建立連接。連接的建立是通過申請?zhí)捉幼?Socket)實現(xiàn)的;(2)發(fā)送請求。打開一個連接后,客戶端把請求消息送到服務器的監(jiān)聽端口上,完成請求操作。請求常用的方法有GET和POST,GET方法會將請求參數(shù)放在URL中,而POST方法不會放到URL中這樣比較安全;(3)發(fā)送響應。服務器在處理完客戶的請求之后,要向客戶端發(fā)送響應消息。響應頭信息包括:服務程序名、通知客戶請求的URL需要認證、請求的資源核實能使用;(4)關閉連接。客戶和服務器雙方都可以通過關閉套接字來結束TCP/IP對話。

        1.3 服務器軟件設計

        本文設計的Web服務器使用的是并發(fā)服務器,即多個用戶可同時訪問本Web服務器。如圖3所示,主父進程調用函數(shù)Socket()[3]函數(shù)建立套接字文件描述符,調用函數(shù)Bind()綁定地址,調用Listen()函數(shù)來設定偵聽隊列長度。然后主進程進入主處理進程,等待客戶端連接的到來。當客戶端的連接請求到來時,服務器的Accept()[4]成功返回,此時服務器端進行進程分叉,父進程繼續(xù)等待客戶端的連接請求;而子進程則處理客戶端的業(yè)務請求,接收客戶端的數(shù)據(jù),分析數(shù)據(jù)并返回結果。

        圖3 服務器結構

        (1)Socket()。由于應用層協(xié)議HTTP的傳輸層使用的是TCP協(xié)議,使用Socket(AF_INET,SOCK_STREAM,0)建立套接字;

        (2)Bind()。將地址信息和申請的套接字綁定起來,這里使用IP地址為服務器任意IP地址,端口號使用8080。

        sin.sin_family=AF_INET;

        sin.sin_port=htons(8080);

        sin.sin_addr.s_addr=htons(INADDR_ANY);

        bzero(&(sin.sin_zero),8);

        bind(httpd,(struct sockaddr *)&sin,sizeof(struct sockaddr));

        (3)listen()。偵聽端口,這里設置為20;

        (4)accept()??蛻舳诉B接到了服務器,這個函數(shù)會返回一個套接字文件描述符,使用這個文件描述符便可與客戶機進行數(shù)據(jù)交互了;

        (5)fork()。由于子進程完全復制父進程里的數(shù)據(jù),所以處理數(shù)據(jù)部分交給子進程處理,減輕父進程處理數(shù)據(jù)壓力;

        (6)數(shù)據(jù)處理部分。首先客戶機會通過瀏覽器發(fā)送一個GET請求,服務器接收到此數(shù)據(jù)后,首先判斷客戶端請求的是否為GET方法,若是,則進一步判斷請求的文件是否存在;若存在,則根據(jù)客戶端的請求發(fā)送對應的數(shù)據(jù)內容。如圖4所示。

        圖4 數(shù)據(jù)處理部分

        響應信息是對請求的回應,在HTTP響應信息中包括4個部分:狀態(tài)行、響應頭標、空行和響應數(shù)據(jù)。響應信息的狀態(tài)行格式為[5]:

        HTTP-Version Status-Code Reason-Phrase CRLF

        其中各個字段的含義如下

        HTTP-Version:代表向客戶端表示當前服務器可處理的最高協(xié)議版本。

        Status-Code:代表3為的響應代碼,指出本次請求的結果是成功或失敗,如果失敗則指出響應的原因。

        Reason-Phrase:為響應代碼作進一步解釋。

        例如,在響應信息HTTP/1.1 200 OK中,HTTP/1.1代表服務器端所支持的協(xié)議版本號為HTTP/1.1;200代表請求成功;OK是200的進一步解釋[6]。響應碼信息如表1所示。

        表1 響應碼信息

        發(fā)送完響應頭信息,便可向客戶端發(fā)送數(shù)據(jù)內容了。若成功,本文發(fā)送的頭的信息為:

        HTTP/1.1 200 OK

        Server:WDServer

        Content-Type:text/html;charset=utf-8

        接下來就是HTML文檔了。HTML(Hypertext Marked Language)即超文本標記語言,是一種用來制作超文本文檔的簡單標記語言。在瀏覽網頁時,看到的一些豐富的影像、文字、圖片等內容都是通過HTML表現(xiàn)出來的。用HTML編寫的超文本文檔被稱作HTML文檔,其能獨立于各種操作系統(tǒng)平臺,移植被用作WWW的信息表示語言。在HTML中,每個用來作為標簽的符號都是一條命令、其告訴瀏覽器如何顯示文本。這些標簽均由”<”和”>”符號,以及一個字符串組成。而瀏覽器的功能是對這些標記進行解釋后,顯示出文字、圖像、動畫等效果[7]。而本文只是實現(xiàn)一個Web服務器,故只寫一個簡單HTML[8]文檔來驗證服務器的功能。

        本文發(fā)送的HTML文檔內容為:

        如上所示,瀏覽器會將此代碼轉化成頁面的標題為wd’ HomePage,內容為“Hello! I’m Web Server”的頁面。若在測試時看到此頁面則說明Web服務器工作正常。

        2運行和測試

        本文利用在Ubuntu下運行Web Server 服務器端程序,然后在其他客戶端的瀏覽器地址上輸入服務器端的IP地址,通過返回過來的頁面內容判斷其運行的正確性。測試步驟如下:

        (1)在服務器端運行服務器端程序,等待客戶端的連接。如圖5所示,可看出Web Server的IP地址為219.245.66.116。

        圖5 Web服務器開始運行

        (2)由于此服務器設置的端口是8080端口,所以在客戶機瀏覽器中輸入219.245.66.116:8080。如圖6所示,可看出服務器端得到了響應,也能在服務器端看出接進來的服務器的IP地址為219.245.66.83,所使用的端口號分別為58050,58051和58052。并看到瀏覽器顯示的頁面,內容為“Hello! I’m Web Server!”標題為wd’s HomePage,說明此服務器工作正常。

        圖6 客戶機通過瀏覽器連接服務器

        3結束語

        本文通過提出基于Linux的Web服務器的設計思路,采用Linux C語言編程,滿足了實現(xiàn)HTTP請求響應的要求。尤其是其開源特性,使得諸多公司或個人均喜歡將其作為開發(fā)平臺。再加上Linux具有較強的移植性,可將其移植到ARM,PowerPC,MIPS等主流處理器中[9]。所以也可將本文所實現(xiàn)的Web服務器應用到基于這些處理器的嵌入式設備當中。

        參考文獻

        [1]鳥哥.鳥哥的Linux私房菜:基礎學習篇[M].3版.北京:人民郵電出版社,2010.

        [2]宋敬彬,孫海濱.Linux網絡編程[M].2版.北京:清華大學出版社,2014.

        [3]RichardStevensW,StephenARago.Unix環(huán)境高級編程[M].3版.戚正偉,張亞英,尤晉元,譯.北京:人民郵電出版社,2014.

        [4]NeilMatthew,RichardStones.Linux程序設計[M].4版.陳健,宋健建,譯.北京:人民郵電出版社,2010.

        [5]劉冰,趙廷濤,邵文豪,等.LinuxC程序基礎與實例講解[M].北京:清華大學出版社,2009.

        [6]DavidGourley,BrianTotty,MarjorieSayer,etal.HTTP權威指南[M].陳娟,趙振平,譯.北京:人民郵電出版社,2012.

        [7]高洛峰.細說PHP[M].北京:電子工業(yè)出版社,2009.

        [8]JonDuckett.Web編程入門經典-HTML.XHTML和CSS[M].2版.杜靜,敖富江,譯.北京:清華大學出版社,2010.

        [9]韋東山.嵌入式Linux應用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.

        作者簡介:王棟(1990—),男,碩士研究生。研究方向:Linux系統(tǒng)應用。

        收稿日期:2015- 05- 13

        中圖分類號TP316.85

        文獻標識碼A

        文章編號1007-7820(2016)01-121-04

        doi:10.16180/j.cnki.issn1007-7820.2016.01.033

        真实国产乱子伦精品视频| 日本a一区二区三区在线| 国产黄色一级大片一区二区| 久久无码潮喷a片无码高潮| 女邻居的大乳中文字幕| 国产最新地址| 日韩精品一区二区亚洲av性色| 日韩精品免费在线视频一区| 亚洲av永久无码精品漫画| 亚洲av无码一区二区三区性色| 在线看片国产免费不卡| 国产女主播一区二区三区在线观看| 国产精品高清网站| 亚洲日韩欧洲无码av夜夜摸| 国产亚洲欧洲AⅤ综合一区| 天堂精品人妻一卡二卡| 日韩av无码中文字幕| 加勒比婷婷色综合久久| 中文字幕色av一区二区三区| 欧美最猛黑人xxxxx猛交| 亚洲日日噜噜噜夜夜爽爽| 亚洲一区二区蜜桃视频| 一区二区三区四区草逼福利视频| 亚洲国产成人精品无码区在线秒播| 亚洲一本大道无码av天堂| 国产欧美亚洲精品第二区首页| 国产午夜精品视频观看| 曰韩无码无遮挡a级毛片| 无码人妻一区二区三区免费n鬼沢 人禽无码视频在线观看 | 午夜男女爽爽爽在线视频| 99精品免费视频| 人妻少妇中文字幕专区| 夜夜躁狠狠躁日日躁视频| 品色堂永远的免费论坛| 中文字幕人妻少妇美臀| 国产一区二区三区仙踪林| 亚洲欧美aⅴ在线资源| 国产一级黄色录像| 国产精品毛片一区二区三区| 一二区成人影院电影网| 911国产精品|