嵌入式web服务器的设计与实现本科学位论文.docx
- 文档编号:10318915
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:64
- 大小:480.81KB
嵌入式web服务器的设计与实现本科学位论文.docx
《嵌入式web服务器的设计与实现本科学位论文.docx》由会员分享,可在线阅读,更多相关《嵌入式web服务器的设计与实现本科学位论文.docx(64页珍藏版)》请在冰点文库上搜索。
嵌入式web服务器的设计与实现本科学位论文
嵌入式WEB服务器
摘要
Linux操作系统是一个开放源代码的免费操作系统,它不仅有安全、稳定、成本低的特点,而且很少发现有病毒传播。
近年来,随着linux操作系统在我国的不断普及,越来越多的服务器、工作站和个人电脑开始使用linux软件。
基于linux具有稳定、可靠、安全和强大的网络功能这些优点,本文选择在linux环境下实现一个Web服务器。
本文研究了HTTP协议实现了数据的传输,阐述了采用linux套接字编程接口的方法实现HTTP协议的方案,详细分析了客户端和服务器之间的通信过程。
本文在linux系统下实现一个Web服务器程序,在局域网内,将此服务器程序在一台计算机上运行,使网内其它计算机访问这台服务器时,实现客户端和服务器以HTTP协议进行请求和响应的功能。
此外还编写了Web浏览器。
Web服务器实现的全部代码采用linux下的C语言编程,可进一步提高系统运行速度,并且增强了系统的安全性和可靠性。
Web浏览器代码是采用C++和Qt的编程,界面设计是用Qt实现的。
关键词:
嵌入式;linux操作系统;HTTP协议;Web服务器;Socket;Internet;Qt
EmbeddedWEBserver
ABSTRACT
TheLinuxoperatesystemisafreeoperatesystemwhichopensasourcecode.Notonlyithascharacteristicssuchassafe,stability,andthelowcost,butalsoitseldomdissemiantestheVirus.Inrecentyears,alongwiththeLinuxoperatesysteminourcountrymakeswidelyavailablecontinuously,moreandmoreservers,workstationsandpersonalcomputerstartusingLinuxsoftware.AstheLinuxopertingsystemhasthefunctionofstablereliable,safeandformidablenetwork,torealizeaWebserverintheLinuxenvironmentisthebestchoice.
ThispaperintroducesdesignandimplementofWebserverinLinuxoperatingsystem.TheproblemofhowtorealizedatatransmissionbyHTTPprotocolwhichbasedonLinuxisvaluabletoresearch.ThispaperexpoundsrealizingschemeforHTTPprotocol,andgivesoutprotocolcommunicationmodule,wihthemethodofLinuxsocketprogrammingintefface,andanalyzethecommunicationprocessbetweenclientandserver.ThispaperrealizesaWebserverprocedureinLinuxoperatingsysytem.Inthelocalareanetwork,ifthisserverprocedurerunsonacomputer,whichcanrealizesthefunctionthattheclientrequestsandtheserverrespondsbyHTTPagreement,whenothercomputersinthenetvisitit.
ThecompletecodeoftheWebserver’srealizationusestheClanguageprogramminginLinuxoperatingsystem,whichmayfurtherenhancetherunningrate,andstrengthenedthesecurityandreliabilityofthesystem.ThecodeofWebbrowser’srealizationusesTheC++languageandQt,
Keywords:
Embedded;Linuxoperatingsystem;HTTPprotocol;Webserver;Socket;
1绪论
1.1课题的研究意义
Internet的迅猛发展,传统的Client/server体系结构(客户机/服务器),渐渐的在某些方面显示出它的局限性,Browser/server结构(浏览器/服务器)的出现恰恰弥补了这种缺陷。
B/S方式已成为一种时尚,大部分网络应用系统都是以这种B/S方式与网络用户交换信息。
B/S的基础是客户端要有一个浏览器程序,服务器端要有一个与之对应的Web服务器。
显然,Web服务器在B/S方式下起着决定性的作用,因此,一般互联网站都采用功能强大的通用Web服务器。
随着网络各个核心部分业务量的提高,其访问量和数据流量快速增长,处理能力和计算强度也相应增大,使得单一设备根本无法承担,而且许多企业级应用系统的应用请求具有突发性和紧急性的特点,当应用访问急剧上升时,容易造成网络瓶颈。
解决这一问题的办法是采用多台嵌入式Web服务器为一个应用服务,集群负载均衡机制就是为解决多个网络设备之间实现合理的业务量分配而提出的。
1.2国内外研究现状
目前在市场上有20到30种Web应用服务器,每种服务器在实现对象组件支持、 分布式计算、部署的速度和易用程度上采取了不同方式。
目前市场上主流Web服务器主要有以下几种产品:
1.Apache,由SUN公司开发的Apache服务器可以运行在包括Linux等多种系统平台之上。
Apache支持许多特性,大部分通过编译的模块实现,如很有用的URL重写,定制日志文件以及过滤支持等。
2.ZeusWebserver3.3.8服务器,Zeus服务器在SMP(SymmetricMultiProcessing的简称,意为对称多处理系统,内有许多紧耦合多处理器,这种系统的最大特点就是共享所有资源)环境下有优秀的可伸缩性,并实现了常见的特性集合,如访问控制、动态内容产生和安全等。
3.iPlanetEnterpriseEdition4.1,Netscape公司开发的iPlanet具有现今高性能WEB服务器的特性,如具有很高的可靠性、可用性、可维护性,系统高度可扩展性等特点,相对其它WEB服务器iPlanet还提供更多的JAVA功能。
4.AOLserver3.3.1,AOL公司开发的AOLserver3.3.1是一个多线程、可升级和扩展的WEB服务器。
5.RoxenWebServer2.1.31,在Roxen中可以使用RXML语言生成动态网页内容。
RXML是函数形式的服务器端XML脚本语言,它由Roxen服务器解析并执行。
6.Jigsaw,它由WWW组织(W3C)开发,W3C组织负责研究和规定网络协议的标准(如HTTP)。
它使用JAVA语言开发,是成功的面向对象、功能全面的服务器。
因为Jigsaw不受测试平台的限制,所以Jigsaw是一个具有活力的、拥有无限潜能的优秀WEB服务器。
在嵌入式系统的应用中,由于HTMI语言的标准统一性,只要在设备里建立一个微型web服务器,人们就可以使用现有的Web浏览器与该设备进行双向交互、接收或发送信息。
它为我们管理、控制和监测各种各样的设备提供了一个很好的途径,只要设备接入了Internet,我们就可以在世界上的任何地方十分方便地控制、操纵那些配备有微型Web服务器的设备。
在Internet上为了发布信息,用户必须运行Web服务器程序。
但现成的服务器程序有时候不能满足所有人的要求,所以可以动手开发一个自己的Web服务器程序,其功能就可由设计者定制的功能和需求决定了。
1.3论文研究内容和主要工作
本次设计就是需要完成一个简易的WEB服务器的设计,实现web服务器基本功能:
页面访问请求响应、HTML文件的解析以及数据发送。
所以在完成设计之前,必须先了解WEB服务器设计的原理与结构。
一般来说,Web服务器通常由以下几个部分组成:
(1)服务器初始化部分.这部分主要完成Web服务器的初始化工作,如建立守护进程、创建TCP套接字、绑定端口、将TCP套接字转换成侦听套接字,进入循环结构,等待接收用户浏览器连接.
(2)接收客户端请求.由于客户端请求以文本行的方式实现,所以服务器一般也以文本行为单位接收.(3)解析客户端请求.这部分工作比较复杂,需要解析出请求的方法、URL目标、可选的查询信息及表单信息.如果请求方法为HEAD,则简单地返回响应首部即可;如果方法是GET,则首先返回响应首部,然后将客户端请求的URL目标文件从服务器磁盘上读出,再发送给客户端。
(4)发送响应信息之后,关闭与客户机的连接.
2相关理论与知识
2.1Linux操作系统简介
简单点说,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于可移植操作系统接口和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
同事它能运行一些主要的的Unix工具软件、网络协议和应用程序。
它还支持64和32位硬件。
Linux是一个性能稳定的多用户网络操作系统,继承了Unix以网络为核心的设计思想。
它是由全世界成千上万的程序员设计与实现的。
是一个不受任何商品化软件版权制约、全世界都能够自由使用的Unix兼容产品。
Linux模块化的设计结构,使它既能在廉价的PC机上实现Unix特性,也能在价格高昂的工作站上运行,具备多任务及多用户能力。
Linux系统软件不仅仅包括完整的Linux操作系统,还包括了高级语言编译器、文本编辑器、等应用软件。
另外它还包括图形用户界面,就像WindowsNT一样,我们能够使用窗口、菜单和图标进行操作。
Linux的优点:
可靠、稳定、安全和强大的网络功能。
在一些软件的支持下,能够实现WWW、FTP、DHCP、E-mail、DNS等服务,利用iptables/ipchains构建NAT和功能比较全面的防火墙。
2.2Web服务器的概念
WWW是WorldWideWeb(环球信息网)的缩写,也可以简称为Web,中文名字为“万维网”。
WWW(WorldWideWeb)是一种建立在Internet上的全球性的、交互的、动态、多平台、分布式、图形信息系统。
它只是建立在Internet上的一种网络服务。
它的开发最初是为了在科学家之间共享成果,科学家们可以将科研成果以图文形式方在网上进行共享。
它的最基本的概念就是Hypertext(超文本),如果你用过Windows上的任何一种在线帮助系统你就会比较了解它的结构了。
它起源于1989年3月,由欧洲量子物理实验室CERN(theEuropeanLaboratoryforParticlePhysics)所发展出来的主从结构分布式超媒体系统。
通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。
由于用户在通过Web浏览器访问信息资源的过程中,无需再关心一些技术性的细节,界面简单容易操作。
长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息,但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。
现在,网络上提供各种类别的数据库系统,如文献期刊、产业信息、气象信息、论文检索等等。
由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。
到了1993年,WWW的技术有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得WWW成为Internet上最为流行的信息传播方式。
现在,Web服务器成为Internet上最大的计算机群,可以说,Web为Internet的普及迈出了开创性的一步,WWW采用的是客户/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到WindowsNT、UNIX或Linux等平台上。
Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。
确切一点,你可以说:
Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(businesslogic)。
Web服务器(WebServer)Web服务器可以解析(handles)HTTP协议。
当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。
为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamicresponse)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServerPages)脚本,servlets,ASP(ActiveServerPages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。
无论它们(译者注:
脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
要知道,Web服务器的代理模型(delegationmodel)非常简单。
当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:
服务器端脚本)。
Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。
服务器端(server-side)程序通常具有事务处理(transactionprocessing),数据库连接(databaseconnectivity)和消息(messaging)等功能。
2.3WEB服务器基本构架
Web应用的基本构架包括浏览器、网络和Web服务器。
浏览器向服务器请求Web页,Web页可能包括由浏览器解释执行的客户端脚本,而且可以与浏览器、页内容和页中包含的其他控件(JavaApplet、ActiveX控件和插件等)进行交互。
用户向Web页输入信息或通过超级链接导航到其它Web页,与系统进行交互,改变系统的“业务状态”。
2.3.1WEB服务器和浏览器
WEB是基于请求和响应的系统,它是在C/S(Client/Server)结构的基础上发展而来的。
为了实现世界范围内的信息共享和发布,它规范了通讯协议,并规范、强化Client/Server两端的系统功能,WEB为用户在Internet上查看文档提供了一个图形化的,易于进入的界面,WEB是一种基于超文本传输协议(HypertextTransportPotocol简称HTTP)向计算机传送多媒体信息(如文本、图片、声音、视频、交互式应用程序)的Internet服务。
同C/S结构一样,WEB由两部分构成,即WEB服务器端和WEB浏览器端,WEB服务器的主要功能是:
创建、管理和维护WEB页面,对浏览器的请求进行应答并返回HTML页,WEB浏览器(Browser)用来观看WEB资源的客户端软件,主要负责请求,解释并显示WEB页,其工作过程见图2.3。
Web浏览器通常可以使用流行的IE或者其它的浏览器。
服务器端的TCP/IP协议是操作系统内嵌的,其信息流符合HTTP协议。
服务器中的HTTP引擎用来分析浏览器的请求消息,并根据请求做出相应的动作。
这些动作包括向浏览器发送一些静态页面或调用一些应用服务程序。
对于服务器中的静态web页面,可以使用一些常用软件如FrontPage等制作,以备Web服务器调用。
而服务器中的应用服务程序则用来扩展服务器所提供的服务。
从图l中可以看出,微型web服务器的核心就是:
HTTP引擎。
HTTP协议是一种网络应用层的标准协议,Web浏览器和Web服务器之间的通信都是采用HTTP协议来实现的。
因此只要是符合HTTP协议的通讯过程和数据内容,就可以使用浏览器作为客户端进行连接和传递。
图2.3Web工作原理
图2.3主要过程为:
(1)WEB浏览器通过将URL发给WEB服务器请求信息;
(2)WEB服务器响应请求,并返回给客户机超文本标记语言(HTML)页面;
(3)WEB浏览器对超文本标记语言(HTML)页面进行解释并显示。
2.3.2WEB页面
WEB页面是WEB系统实现发布、进行管理的主要对象。
WEB页面像一个大的容器,将要发布的文字、图片、声音、动画、视频等多种媒体信息封装到一起,供WEB系统实现发布,进行管理。
对于WEB系统而言,在众多的WEB页面中,有一个称为WEB主页的页面,它是访问者浏览WEB系统的起点。
每个WEB页面都具有唯一的地址,称为统一资源定位符(URL),URL由存储此页面的计算机名和此页面的确切路径构成。
WEB页面是超文本标记语言(HTML)编写的。
HTML是一种嵌入式语言,通过在普通文本中嵌入各种标记(TAG),使普通文本具有了超级文本的功能。
根据WEB页面的内容,可将WEB页面分为三种类型:
静态页面,动态页面,目录列表页面。
2.4WEB系统的基本原理是请求/响应
客户端,浏览器接受用户输入的网页地址(URL)并进行分析,从而得到网页的文件名字和存放网页的计算机地址以及服务程序的端口号,首先根据计算机地址及端口号与服务器建立连接,然后把网页名称及浏览器本身的有关信息按照一定的格式组织起来,发给服务器,这就是‘请求’。
比如用户输入http:
//kulin.ts/index.html,从而可知:
(1)计算机名称为briup根据这个名字能获知其计算机地址
(2)端口号为80(http服务的默认端口号)
(3)页面的文件名为index.html
浏览器就与briup上端口号为80的服务程序建立连接,并把类似下面的数
据发过(作为服务‘请求’):
GET/index.htmHTTP/1.1
Accept:
image/gif,image/x-xbitmap,application/vnd.ms-powerpoint,*/
Accept-Language:
ch
UA-pixels:
800*600
UA-color:
color16
UA-OS:
Windowsxp
UA-CPU:
P41.6
User-Agent:
Mozilla/2.0(compatible’MSIE3.01;WindowXP
Host:
briup
Connection:
Keep-Alive
其中第一行说明了文件名称(index.html)、请求的类型(GET)及浏览器支持的协议版本(HTTP/1.0)
服务器端接受到请求后,对其进行分析,解析出网页的文件名称及其他信息(比如请求的类型、处理要求等),根据网页的文件名称到磁盘上提取文件内容,把文件内容和一些必要的说明信息打包后发给浏览器,然后断开连接,这就是“响应”。
(浏览器接到文件内容后就将其中的内容显示出来了)比如对于文件长度为2559B的index.html来说,可以发送如下数据作为“响应”:
HTTP/1.1200OK
Server:
briup-HttpSvr/1.1
Date:
WED,20may200612:
45:
21
Content-type:
text/html
Content-length:
2559
Last-Modified:
Sun,22may200614:
21:
50
<接下来是index.htm的文件内容>
上述数据分2大部分,第1部分为“头”,其中,第1行是状态行,包括服务器执行的HTTP版本及本次响应的状态码。
后4行分别说明了服务器名称、当前日期、数据类型、数据长度、最后修改的日期和时间。
第2部分为数据“体”,是“请求”要求传送的数据,它跟在1个空行之后。
当然,客户端和服务器之间还可能有一些中间环节,比如代理服务器、网关、“隧道”等,在此我们先不予考虑。
2.5WEBB/S的通信
要完成Web服务,除了网络通信链路的建立和拆除,之外至少还要有二方面的功能:
“分折请求”和“构造响应”。
客户端与服务器交换数据之前,首先用TCP/IP建立连接,客户端向服务器请求数据,服务器则向客户端响应并提供数据.客户端和服务器以HTTP协议进行请求和响应.服务器和客户端只能为一次事务处理建立并维持连接,完成一次事务处理后便结束连接.
每一个客户端向服务器发送请求均以方法(Method)开始,后跟对象的URL.客户端一般要在上述信息中补充所采用HTTP协议的版本号,其后跟一个回车换行(CRLF)字符对.依据请求情况,浏览器可能在CRLF后加上浏览器按特别的首部格式编码的信息.完成后,浏览器给请求加上一个CRLF.还可依据请求情况,把一个实体(MIME格式文档)加到整个请求之后.一个HTTP方法实际上是一条命令,客户端用它来说明其请求目的,常用的有GET,HEAD和POST.
Web服务器收到请求并解析之后,以一个HTTP响应消息响应客户端的请求.这个响应消息通常以HTTP协议版本号开始,后面是三位状态码和一个原因短语(Reasonphrase),其后是一个CRLF,再后是请求的信息(它被服务器以一种特殊的首部格式编码),最后,服务器加上一个CRLF.其后还可以有一个可选实体.状态码是三位数,它描述了服务器理解和满足请求的情况,原因短语是状态代码的一个简短说明.HTTP协议版本号、状态代码、原因短语一起构成了状态行.
上述分析不难看出,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是Web服务器所需完成的主要任务,Web服务器程序代码主要是为了完成这几项任务.
2.5.1分析请求
如前文所述,“请求”的第1行数据是最重要的,它的格式是:
方法资源地址HTTP版本号回车换行
“方法”主要有3种:
GET:
要求必须返回一定的内容。
有时还必须根据“请求”的要求先对内容做一定的处理(比如解压缩或根据时间进行过滤)。
HEAD:
处理办法和GET完全相同,但要求只返回“头”,而不可返回任何实质内容(“体”)。
POST:
用来处理网页的附属内容,比如“注解”、数据回送等。
作为简单的服务器,我们只考虑第一行,且只处理GET请求,版本号不予理睬。
2.5.2构造响应
如前文所述,响应的第1行是状态行,非常重要,格式如下:
HTTP版本号状态码状态文字说明回车换行
版本号可取HTTP/1.1;状态码是3位数字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 web 服务器 设计 实现 本科 学位 论文
![提示](https://static.bingdoc.com/images/bang_tan.gif)