嵌入式web服务器预研报告现在在嵌入式设备中所使用的web服务器主要有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。服务器是否开源系统平台网上流行程度ABCD内存占用Flash占用大小功能安全性支持哪种web语言Boa开源allPOSIX(Linux/BSD/UNIX-likeOSes)A1700kB虚拟内存60kB左右较强大可以CGIThttpd开源FreeBSD,SunOS,Solaris,BSD,Linux,OSFA1800kB虚拟内存60kB左右较强大可以CGIMini_httpd开源同上B比boa、thttpd小要小于thttpd弱可以CGIShttpd开源Windows,QNX,RTEMS,UNIX(*BSD,Solaris,Linux)C不清楚40k较强大可以CGILighttpd开源Unix、linux、Solaris、FreeBSDC不清楚不清楚强大较强CGIfastCGI、PHPGoahead开源WinCE,WindRiverVxWorks,Linux,Lynx,QNX,Windows95/98/NTC60K60K强大可以CGI、javastript、ASPAppWeb1.开源2.商用Linux,Windows,MacOSX,SolarisC110KB不清楚强大,被称为mini_apache较强CGI、ESP、Javastript、PHPApache开源很多种系统D11,000kB虚拟内存277kB(apache1.3.26)超强吧?较强CGI、javastript、ASP、PHPBoa1.介绍Boa诞生于1991年,作者PaulPhilips。是开源的,应用很广泛,特别适合于嵌入式设备,网上流行程度很广。它的官方网站说boa是最受人喜爱的嵌入式web服务器。功能较为强大,支持认证,cgi等。Boa是一个单任务的HTTPSERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不会为多个连接开启多个自身的拷贝。Boa对所有的活动的http连接在内部进行处理,而且只为每个CGI连接(独立的进程)开启新的进程。因此,boa在同等硬件条件下显示出更快的速度。测试表明boa在Pentium300MHZ下能够每秒钟处理几千次点击,在20MHz386/SX下能够每秒钟处理几十次点击访问。Boa和thttpd等,与apache等高性能的web服务器主要区别是,它们一般是单进程的服务器,只有在完成一个用户请求后才能响应另一个用户的请求,无法并发响应,但这在嵌入式设备的应用场合里已经足够了。Boa设计主要出于速度和安全,是指不被恶意用户暗中破坏,而不是指它有很好的访问控制和通信加密。可以添加SSL来保证数据传输中的保密和安全。2.操作系统AllPOSIX(Linux/BSD/UNIX-likeOSes)3.版本从0.90到现在的最新发布版本0.94。最新发布版本0.94:boa-0.94.13.tar大小为120k,解压后为436k,编译之后的可执行代码在60k左右。最近开发版本:boa-0.94.14rc214.可执行程序的大小、内存需求情况Boa有最少的资源需求。非常少的内存需求,能耗很小。特别适合于嵌入式市场。含有gcc2.95.3和GNUlibc2.2.5的boa的二进制文件大小为61K(495Kstaticallylinked)。使用库uClibc,boa变得更小(92Kstaticallylinked)。有人曾做过测试:所用环境AMDDuron700,384MBRAM,RealTek8139,SiS900chipset-basedNICs,LinkSys10/100hub,Linux2.4,结果是:Boa的虚拟内存(VmSize)大小是1696kB,85%是库文件。虚拟内存数据(VmDatasize)大小是108kB。Boa每次连个并发连接消耗掉20kB的内存。参考比较表:ServerStrippedBinarySizeVmSizeExternalLibrariesBoa0.94.1361kB1700kB0Apache1.3.26277kB11,000kB9thttpd2.20c64kB1800kB05.功能、特点支持HTTP/1.0(实验性的、有条件的支持HTTP/1.1)支持CGI/1.1,编程语言除了C语言外,还支持Python,Perl,PHP,但对PHP没有直接支持,没有mod_perl,mod_snake/mod_python等。Boa支持HTTP认证,但不支持多用户认证。它可以配置成SSL/HTTPS和IPv6。支持虚拟主机功能。Boa服务器与其它服务器的不同:为了追求速度和简单性,boa服务器在一些方面不同于一些流行的web服务器。CGI程序的REMOTE_HOST环境变量没有设置TheREMOTE_HOSTenvironmentvariableisnotsetforCGIprograms,forreasonsalreadydescribed.ThisiseasilyworkedaroundbecausetheIPaddressisprovidedintheREMOTE_ADDRvariable,so(iftheCGIprogramactuallycares)gethostbyaddroravariantcanbeused.Boa不具有ssi(serversideincludes)。Wedon'tlikethem,andtheyaretooslowtoparse.Wewillconsidermoreefficientalternatives.Boa不具有访问控制。Boawillfollowsymboliclinks,andserveanyfilethatitcanread.TheexpectationisthatyouwillconfigureBoatorunasusernobody,andonlyfilesconfiguredworldreadablewillcomeout.没有chroot选项。Thereisnooptiontorunchrooted.Ifanybodywantsthis,andiswillingtotryoutexperimentalcode,contactthemaintainers.官方网站:服务器。它的初衷是提供一款简单、小巧、易移植、快速和安全的HTTP服务器,而事实上,Thttpd也正是这样一款服务器。它在Unix系统上运行的二进制代码程序,仅仅400k左右,在同类Web服务器中应该是相当精巧的。在可移植性方面,它能够在几乎所有的Unix系统上和已知的操作系统上编译和运行。Thttpd在默认的状况下,仅运行于普通用户模式下,从而能够有效地杜绝非授权的系统资源和数据的访问,同时通过扩展它也可以支持HTTPS、SSL和TLS安全协议。Thttpd尤为称道的是已经全面支持IPv6协议,并且具有独特的Throttling功能,可以根据需要限制某些URL和URL组的服务输出量。此外,Thttpd全面支持HTTP1.1协议(RFC2616)、CGI1.1、HTTP基本验证(RFC2617)、虚拟主机及支持大部分的SSI(ServerSideInclude)功能,并能够采用PHP脚本语言进行服务器端CGI的编程。thttpd是一个非常小巧的轻量级webserver,它非常简单,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。对于小型webserver而言,速度快似乎是一个代名词,通过官方站提供的Benchmark,可以这样认为:thttpd至少和主流的webserver一样快,在高负载下更快,因为其资源占用小的缘故。Thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较thttpd低。Thttp是开源的。是用C语言编写的。使用的很多。2.操作系统Thttpd支持多种平台,如FreeBSD,SunOS,Solaris,BSD,Linux,OSF等。3.版本最新版本:thttpd-2.25b.tar130kB,解压后497kB4.可执行程序的大小、内存需求情况编译后的可执行的二进制文件为60kB左右,与boa差不多。版本已从1.90a发展到2.25b,使用内存很少,没查到具体的数据。5.特点、功能thttpd中是一个简单,小型,轻便,快速和安全的http服务器.特点:简单:它能够支持HTTP/1.1协议标准,或者超过了最低水平小巧:它具有非常少的运行时间,因为它不fork子进程来接受新请求,并且非常谨慎的分配内存便携:它能够在大部分的类Unix系统上运行,包括FreeBSD,SunOS4,Solaris2,BSD/OS,Linux,OSF等等快速:它的速度要超过主流的Web服务器(Apache,NCSA,Netscape),在高负载情况下,它要快的多。安全:它努力的保护主机不受到攻击,不中断服务器thttpd,适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。功能:支持CGI1.1。支持基本的认证功能。支持Chroot功能支持Throttling。支持IPv6。支持多虚拟主机功能。支持自定义错误页。支持标准日志记录。Thttpd处理了大量的信号,这些信号是通过标准的Unixkill(1)command发出的。通过扩展它也可以支持HTTPS、SSL和TLS安全协议。使用建议:对于那些并发访问量中等,而又需要较强响应能力、并期望能够控制用户访问流量,而且有较高安全性需求的用户而言,thttpdWeb服务器显然是一个比较好的选择。thttpd目前的最新版本是2.2.5版。下图为网站对几种webserver比较图。各种服务器的比较:Software–哪种web服务器oNameoVersionoReleased–什么时候发布的oActivedevel-是否当前还在开发中。Features–一些关键服务器的特点oModel-whatkindofserveritis.Themodelsare:fork-startanewprocessforeachrequest.pre-fork-pre-startapoolofprocesseswhicheachhandlemultiplerequests.threads-usethreadsinsteadofprocesses.Javathreads-thisversionoftheJavaruntimeusesGreenthreadsinsteadofnativethreads,soitactsmoreliketheselect-basedservers.select-usenon-blockingI/Oandtheselect()systemcalltohandlemultiplerequestsinasingleprocess,singlethread.从上面可以看到thttpd、boa都是使用select方式,apache使用的是pre-fork方式,由于apache是多进程方式,thttpd、boa是单进程方式,所使用的内存要远小于apache,且速度快于apache。oAuto-conf(自动配置)-whetherthere'sascripttoautomaticallyconfigurethebuildprocessfo