简要介绍
Web伺服器是可以向发出请求的流览器提供文档的程式。
1、伺服器是一种被动程式:只有当Internet上运行在其他电脑中的流览器发出请求时,伺服器才会回响。
2 、最常用的Web伺服器是Apache和Microsoft的Internet信息伺服器(Internet Information Server,ⅡS)。
3、Internet上的伺服器也称为Web伺服器,是一台在Internet上具有独立IP地址的电脑,可以向Internet上的客户机提供WWW、Email和FTP等各种Internet服务。
什麽是WEB伺服器
Web伺服器是指驻留于因特网上某种类型电脑的程式。当Web流览器(客户端)连到伺服器上并请求档案时,伺服器将处理该请求并将档案传送到该流览器上,附带的信息会告诉流览器如何查看该档案(即档案类型)。伺服器使用HTTP(超文本传输协定)进行信息交流,这就是人们常把它们称为HTTPD伺服器的原因。
WEB伺服器Web伺服器不仅能够存储信息,还能在使用者通过Web流览器提供的信息的基础上运行脚本和程式。
必备要求
作为Web伺服器,首先要保证不间断电源,机房要控製好相对温度和湿度。这裏有额外配置的UPS不间断电源和稳压器,此Web伺服器硬体配置能胜基本的WEB请求服务,如大量的资料交换,档案读写,可能会存在频宽瓶颈。
Web伺服器的内容
⑴套用层使用HTTP协定。
⑵HTML文档格式。
⑶流览器统一资源定位器(URL)。
1、WWW简介
WWW 是 World Wide Web (环球信息网)的缩写,也可以简称为 Web,中文名字为“全球资讯网”。它起源于1989年3月,由欧洲量子物理实验室 CERN(the European Laboratory for Particle Physics)所发展出来的主从结构分散式超媒体系统。通过全球资讯网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。由于使用者在通过 Web 流览器访问信息资源的过程中,无需再关心一些技术性的细节,而且介面非常友好,因而 Web 在Internet 上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。
2、WWW的发展和特点
长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息。但随着电脑网路的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。现在,网路上提供各种类别的资料库系统,如文献期刊、产业信息、气象信息、论文检索等等。由于电脑网路的发展,信息的获取变得非常及时、迅速和便捷。
到了1993年,WWW 的技术有了突破性的进展,它解决了远程信息服务中的文字显示、资料连线以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。现在,Web 伺服器成为 Internet 上最大的电脑群,Web 文档之多、连结的网路之广,令人难以想象。可以说,Web 为 Internet 的普及迈出了开创性的一步,是近年来 Internet 上取得的最激动人心的成就。
WWW 採用的是流览器/伺服器结构,其作用是整理和储存各种WWW资源,并回响客户端软体的请求,把客户所需的资源传送到 Windows 95(或Windows98)、Windows NT、UNⅨ 或 Linux 等平台上。
使用最多的 web server 伺服器软体有两个:微软的信息伺服器(iis),和Apache。
通俗的讲,Web伺服器传送(serves)页面使流览器可以流览,然而应用程式伺服器提供的是客户端应用程式可以调用(call)的方法(methods)。确切一点,你可以说:Web伺服器专门处理HTTP请求(request),但是应用程式伺服器是通过很多协定来为应用程式提供(serves)商业逻辑(business logic)。
Web伺服器可以解析(handles)HTTP协定。当Web伺服器接收到一个HTTP请求(request),会返回一个HTTP回响(response),例如送回一个HTML页面。为了处理一个请求(request),Web伺服器可以回响(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态回响(dynamic response)的产生委托(delegate)给一些其它的程式例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,伺服器端(server-side)JavaScript,或者一些其它的伺服器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些伺服器端(server-side)的程式通常产生一个HTML的回响(response)来让流览器可以流览。
要知道,Web伺服器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web伺服器裏来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程式(译者注:伺服器端脚本)。Web伺服器仅仅提供一个可以执行伺服器端(server-side)程式和返回(程式所产生的)回响(response)的环境,而不会超出职能範围。伺服器端(server-side)程式通常具有事务处理(transaction processing),资料库连线(database connectivity)和讯息(messaging)等功能。
虽然Web伺服器不支持事务处理或资料库连线池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓沖(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程式伺服器专有的特征。
应用程式伺服器(The Application Server)
根据我们的定义,作为应用程式伺服器,它通过各种协定,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程式。Web伺服器主要是处理向流览器传送HTML以供流览,而应用程式伺服器提供访问商业逻辑的途径以供客户端应用程式使用。应用程式使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函式)一样。
应用程式伺服器的客户端(包含有图形使用者介面(GUI)的)可能会运行在一台PC、一个Web伺服器或者甚至是其它的应用程式伺服器上。在应用程式伺服器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程式逻辑(program logic)。正是由于这种逻辑取得了(takes)资料和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。
在大多数情形下,应用程式伺服器是通过组件(component)的应用程式接口(API)把商业逻辑暴露(expose)(给客户端应用程式)的,例如基于J2EE(Java 2 Platform,Enterprise Edition)应用程式伺服器的EJB(Enterprise JavaBean)组件模型。此外,应用程式伺服器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和讯息(messaging)。就象Web伺服器一样,应用程式伺服器配置了多种可扩展(scalability)和容错(fault tolerance)技术。
例如,构想一个线上商店(网站)提供即时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程式伺服器的情景和一个使用应用程式伺服器的情景。观察一下这两中情景的不同会有助于你了解应用程式伺服器的功能。
情景1:不带应用程式伺服器的Web伺服器
在此种情景下,一个Web伺服器独立提供线上商店的功能。Web伺服器获得你的请求(request),然后传送给伺服器端(server-side)可以处理请求(request)的程式。此程式从资料库或文本档案(flat file,译者注:flat file是指没有特殊格式的非二进位的档案,如properties和XML档案等)中查找定价信息。一旦找到,伺服器端(server-side)程式把结果信息表示成(formulate)HTML形式,最后Web伺服器把会它传送到你的Web流览器。
简而言之,Web伺服器只是简单的通过回响(response)HTML页面来处理HTTP请求(request)。
情景2:带应用程式伺服器的Web伺服器
情景2和情景1相同的是Web伺服器还是把回响(response)的产生委托(delegates)给脚本(译者注:伺服器端(server-side)程式)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程式伺服器上。由于这种变化,此脚本只是简单的调用应用程式伺服器的查找服务(lookup service),而不是已经知道如何查找资料然后表示为(formulate)一个回响(response)。这时当该脚本程式产生HTML回响(response)时就可以使用该服务的返回结果了。
在此情景中,应用程式伺服器提供(serves)了用于查询产品的定价信息的商业逻辑。(伺服器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程式伺服器只是来回传送资料。当有客户端调用应用程式伺服器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。
通过从回响产生(response-generating)HTML的代码中分离出来,在应用程式之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的因为信息内嵌在HTML页中了。
总而言之,在情景2的模型中,在Web伺服器通过回应HTML页面来处理HTTP请求(request),而应用程式伺服器则是通过处理定价和有效性(availability)请求(request)来提供应用程式逻辑的。
警告(Caveats)
现在,XML Web Services已经使应用程式伺服器和Web伺服器的界线混淆了。通过传送一个XML有效载荷(payload)给伺服器,Web伺服器现在可以处理资料和回响(response)的能力与以前的应用程式伺服器同样多了。
另外,现在大多数应用程式伺服器也包含了Web伺服器,这就意味着可以把Web伺服器当作是应用程式伺服器的一个子集(subset)。虽然应用程式伺服器包含了Web伺服器的功能,但是开发者很少把应用程式伺服器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程式伺服器的功能又有Web伺服器的功能)。相反,如果需要,他们通常会把Web伺服器独立配置,和应用程式伺服器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影回响用程式伺服器了),分开配置(专门的Web伺服器,集群(clustering)等等),而且给最佳产品的选取留有余地。
词义辨析
什麽是网路伺服器?
网路伺服器是网路环境下为客户提供某种服务的专用电脑。
安全
设定策略
盗用账号、缓沖区溢出以及执行任意命令是Web伺服器比较常见的安全漏洞。黑客攻击、蠕虫病毒以及木马是因特网比较常见的安全漏洞。口令攻击、拒绝服务攻击以及IP欺骗是黑客攻击比较常见的类型。随着网路技术的不断发展,Web伺服器面临着许多安全威胁,直接影响到Web伺服器的安全。因此,加强Web伺服器的安全防护是一项迫切需要的解决的时代课题。笔者结合多年的工作实践,认为可从以下3个方面入手来加强Web伺服器的安全防护。
第一,加强Web伺服器的安全设定。
以Linux为操作平台的Web伺服器的安全设定策略,能够有效降低伺服器的安全隐患,以确保Web伺服器的安全性,主要包括:登录有户名与密码的安全设定、系统口令的安全设定、BIOS的安全设定、使用SSL通信协定、命令存储的修改设定、隐藏系统信息、啓用日志记录功能以及设定Web伺服器有关目录的许可权等[3]。
第二,加强网际网路的安全防範。
Web伺服器需要对外提供服务,它既有域名又有公网的网址,显然存在一些安全隐患。所以,可给予Web伺服器分配私有的地址,并且运用防火墙来做NAT可将其进行隐藏;同时因为一些攻击来源于区域网路的攻击,比如把区域网路电脑和Web伺服器存放在相同的区域网路之内,则在一定程度上会增加很多安全隐患,所以必须把它划分为不同的虚拟区域网路,运用防火墙的地址转换来提供相互间的访问,这样就大大提高了Web伺服器的安全性和可靠性;把Web伺服器连线至防火墙的DMZ连线埠,将不适宜对外公布的重要信息的伺服器放于内部网路,进而在提供对外的服务的同时,可以最大限度地保护好内部网路[4]。
第三,网路管理员要不断加强网路日常安全的维护与管理。
要对管理员使用者名称与密码定期修改;要对Web伺服器系统的新增使用者情况进行定时核对,并且需要认真仔细了解网路使用者的各种功能;要及时给予更新Web伺服器系统的防毒软体以及病毒库,必要时可针对比较特殊的病毒给予安装专门防毒的程式,同时要定期查杀Web伺服器的系统病毒,定期查看CPU的正常工作使用状态、后台工作进程以及应用程式,假若发现异常情况需要及时给予妥当处理[5];因为很多木马与病毒均是运用系统漏洞来进行攻击的,所以需要不断自动更新Web伺服器系统,以及定期扫描Web伺服器系统的漏洞。
Web伺服器现在已经成为了病毒、木马的重灾区。不但企业的入口网站被篡改、资料被窃取,而且还成为了病毒与木马的传播者。有些Web管理员採取了一些措施,虽然可以保证入口网站的主页不被篡改,但是却很难避免自己的网站被当作肉鸡,来传播病毒、恶意外挂程式、木马等等。这很大一部分原因是管理员在Web安全防护上太被动。他们只是被动的防御。为了彻底提高Web伺服器的安全,Web安全要主动出击。
漏洞测试
现在的企业网站做的越来越复杂、功能越来越强。不过这些都不是凭空而来的,是通过代码堆积起来的。如果这个代码只供企业内部使用,那麽不会带来多大的安全隐患。但是如果放在网际网路上使用的话,则这些为实现特定功能的代码就有可能成为攻击者的目标。天眼举一个简单的例子。在网页中可以嵌入SQL代码。而攻击者就可以利用这些SQL代码来发动攻击,来获取管理员的密码等等破坏性的动作。有时候访问某些网站还需要有某些特定的控制项。使用者在安装这些控制项时,其实就有可能在安装一个木马(这可能访问者与被访问者都没有意识到)。
为此在为网站某个特定功能编写代码时,就要主动出击。从编码的设计到编写、到测试,都需要认识到是否存在着安全的漏洞。天眼在日常过程中,在这方面对于员工提出了很高的要求。各个员工必须对自己所开发的功能负责。至少现在已知的病毒、木马不能够在你所开发的外挂程式中有机可乘。通过这层层把关,就可以提高代码编写的安全性。
持续监控
冰冻三尺、非一日之寒。这就好像人生病一样,都有一个过程。病毒、木马等等在攻击Web伺服器时,也需要一个过程。或者说,在攻击取得成功之前,他们会有一些试探性的动作。如对于一个採取了一定安全措施的Web伺服器,从攻击开始到取得成果,至少要有半天的时间。如果Web管理员对伺服器进行了全天候的监控。在发现有异常行为时,及早的採取措施,将病毒与木马阻挡在门户之外。这种主动出击的方式,就可以大大的提高Web伺服器的安全性。
现在维护的Web伺服器有好几十个。现在专门有一个小组,来全天候的监控伺服器的访问。平均每分锺都可以监测到一些试探性的攻击行为。其中99%以上的攻击行为,由于伺服器已经採取了对应的安全措施,都无功而返。不过每天仍然会遇到一些攻击行为。这些攻击行为可能是针对新的漏洞,或者採取了新的攻击方式。在伺服器上原先没有採取对应的安全措施。如果没有及时的发现这种行为,那麽他们就很有可能最终实现他们的非法目的。相反,现在及早的发现了他们的攻击手段,那麽我们就可以在他们採取进一步行动之前,就在伺服器上关掉这扇门,补上这个漏洞。
在这裏也建议,企业使用者在选择网际网路Web伺服器提供商的时候,除了考虑性能等因素之外,还要评估服务提供商能否提供全天候的监控机製。在Web安全上主动出击,及时发现攻击者的攻击行为。在他们採取进一步攻击措施之前,就他们消除在萌芽状态。
设定蜜罐
在军队中,有时候会给军人一些“伪装”,让敌人分不清真伪。其实在跟病毒、木马打交道时,本身就是一场无硝烟的战争。为此对于Web伺服器採取一些伪装,也能够将攻击者引向错误的方向。等到供给者发现自己的目标错误时,管理员已经锁定了攻击者,从而可以及早的採取相应的措施。天眼有时候将这种主动出击的行为叫做蜜罐效应。简单的说,就是设定两个伺服器。其中一个是真正的伺服器,另外一个是蜜罐。现在需要做的是,如何将真正的伺服器伪装起来,而将蜜罐推向公众。让攻击者认为蜜罐伺服器才是真正的伺服器。要做到这一点的话,可能需要从如下几个方面出发。
一是有真有假,难以区分。如果要瞒过攻击者的眼睛,那麽蜜罐伺服器就不能够做的太假。天眼在做蜜罐伺服器的时候,80%以上的内容都是跟真的伺服器相同的。只有一些比较机密的信息没有防治在蜜罐伺服器上。而且蜜罐伺服器所採取的安全措施跟真的伺服器事完全相同的。这不但可以提高蜜罐伺服器的真实性,而且也可以用来评估真实伺服器的安全性。一举两得。
二是需要有意无意的将攻击者引向蜜罐伺服器。攻击者在判断一个Web伺服器是否值得攻击时,会进行评估。如评估这个网站的流量是否比较高。如果网站的流量不高,那麽即使被攻破了,也没有多大的实用价值。攻击者如果没有有利可图的话,不会花这麽大的精力在这个网站伺服器上面。如果要将攻击者引向这个蜜罐伺服器的话,那麽就需要提高这个蜜罐伺服器的访问量。其实要做到这一点也非常的容易。现在有很多用来互动流量的团队。只要花一点比较小的投资就可以做到这一点。
三是可以故意开一些后门让攻击者来钻。作为Web伺服器的管理者,不仅关心自己的伺服器是否安全,还要知道自己的伺服器有没有被人家盯上。或者说,有没有被攻击的价值。此时管理者就需要知道,自己的伺服器一天被攻击了多少次。如果攻击的频率比较高,管理者就高兴、又忧虑。高兴的是自己的伺服器价值还蛮大的,被这麽多人惦记着。忧虑的是自己的伺服器成为了众人攻击的目标。就应该抽取更多的力量来关注伺服器的安全。
攻防测试
俗话说,靠人不如靠自己。在Web伺服器的攻防战上,这一个原则也适用。天眼建议,如果企业对于Web服务的安全比较高,如网站伺服器上有电子商务交易平台,此时最好设定一个专业的团队。他们充当攻击者的角色,对伺服器进行安全性的测试。这个专业团队主要执行如下几个任务。
一是测试Web管理团队对攻击行为的反应速度。如可以採用一些现在比较流行的攻击手段,对自己的Web伺服器发动攻击。当然这个时间是随机的。预先Web管理团队并不知道。现在要评估的是,Web管理团队在多少时间之内能够发现这种攻击的行为。这也是考验管理团队全天候跟蹤的能力。一般来说,这个时间越短越好。应该将这个时间控製在可控的範围之内。即使攻击最后没有成功,Web管理团队也应该及早的发现攻击的行为。毕竟有没有发现、与最终有没有取得成功,是两个不同的概念。
二是要测试伺服器的漏洞是否有补上。毕竟大部分的攻击行为,都是针对伺服器现有的漏洞所产生的。现在这个专业团队要做的就是,这些已发现的漏洞是否都已经打上了安全补丁或者採取了对应的安全措施。有时候我们都没有发现的漏洞是无能为力,但是对于这些已经存在的漏洞不能够放过。否则的话,也太便宜那些攻击者了。
诊断方法
步骤1:发生了什麽事
系统管理员必须肩负起分析和判断Web伺服器宕机原因的责任。需要解决如下的问题:
- 是否是断电,发电机测试以及其他类似问题影响了整体物理环境?
- 和Web伺服器的通信是否已经完全被阻断,还是某些IP段依旧可以使用?
- 是否还可以管理伺服器?
- 日志中是否有异常记录?
这些只是少部分管理员们需要立即回答的问题,在深入诊断问题之前,先解决上述问题。
步骤2:最简单的解决方案往往是最好的
有很多时候会陷入诊断高级问题的误区,分析各种可能的技术问题和疑难杂症。而实际上,退一步想,从巨观角度思考问题,可能解决已花费无数工时和成本却还未攻克的技术难题。例如,主机通电了吗,或者是否有人无意间碰掉了电源线?如果机器确实已经通电,但没有任何网路连线,需要检查网线或者光纤是否没有接上或者松动。是的,这些看似明显低级错误的解决方法,认为都不可能发生,但任何有经验的系统管理员会告诉你,这些状况的发生频率远比想的要多的多。
步骤3:基本故障处理方法没有效果怎麽办
现在已经检查了所有电缆和其他外围设备,可以试着使用ping命令探测设备状况。幸运的是,ping命令是所有平台通用的,也是最简单的。如果可以在区域网路内ping通伺服器,接着可以试试从区域网路外ping伺服器进行检测。这样做可以迅速判断问题是否产生在交换和路由层面,而不是伺服器级别。此外,如果Web伺服器已经虚拟化,试着ping物理伺服器自己的真实IP。这样可以帮助进一步隔离问题。如果完全无法ping同伺服器,而且也已经确定完全检查了网路连线,那麽就需要进行更深入的分析了。
步骤4:使尽浑身解数,伺服器依然宕机
已经检查过网线。也试过了ping伺服器,依旧无法访问伺服器。好讯息是,已经可以将问题定位到物理伺服器或作业系统本身了。换句话说,已经可以开始集中经理对现存的问题进行排查。
接下来,才去从底层到高层的方式来逐层检查问题,首先检查网路接口和在地网路配置是否正常。DHCP是否啓动?Web伺服器是否指向正确的DNS伺服器?如果是这样,可以根据使用的作业系统平台,检查Web服务是否正常开啓。在Windows环境,需要检查伺服器是否具有Web服务的角色。在Linux环境下,检查会更复杂,可以试试查找http相关的档案或服务来确保伺服器是否正在运行。
步骤5:绝境下需要动用绝招
如果以上方法都不奏效,检查日志并尝试查明在Web伺服器宕机时日志中记录的那些信息。将这些信息发给在故障处理和解决领域更有经验的专业人士,可能会获得更多的帮助。同样的,如果已经确认网路连线不是问题,就可以使用Wireshark抓包工具对网路中传输的资料进行抓取分析,以此协助处理问题。
总而言之,伺服器宕机的原因多种多样。断电、配置错误、防火墙设定错误、甚至是来自网际网路的恶意流量,都可能引发源站宕机并让系统管理员们俩共。所有这些问题都足以让企业决策者对冗余解决方案的设计和实施加以重视,同样的针对故障处理流程的设计和製定,还需要根据企业自身网路的实际情况为依据。
相关信息
大型WEB伺服器
在UNⅨ和LINUX平台下使用最广泛的免费HTTP伺服器是APACHE伺服器,而Windows平台NT/2000/2003使用ⅡS的WEB伺服器。在选择使用WEB伺服器应考虑的本身特徵因素有:性能、安全性、日志和统计、虚拟主机、代理伺服器、缓沖服务和集成应用程式等,下面介绍几种常用的WEB伺服器。
Microsoft ⅡS
Microsoft的Web伺服器产品为Internet Information Server (ⅡS), ⅡS 是允许在公共Intranet或Internet上发布信息的Web伺服器。ⅡS是目前最流行的Web伺服器产品之一,很多着名的网站都是建立在ⅡS的平台上。ⅡS提供了一个图形介面的管理工具,称为 Internet服务管理器,可用于监视配置和控製Internet服务。
ⅡS是一种Web服务组件,其中包括Web伺服器、FTP伺服器、NNTP伺服器和SMTP伺服器,分别用于网页流览、档案传输、新闻服务和邮件传送等方面,它使得在网路(包括网际网路和区域网路)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web伺服器功能的编程接口;同时,它还提供一个Internet资料库连线器,可以实现对资料库的查询和更新。
IBM WebSphere
WebSphere Application Server 是 一 种功能完善、开放的Web应用程式伺服器,是IBM电子商务计画的核心部分,它是基于 Java 的套用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程式。这一整套产品进行了扩展,以适应 Web 应用程式伺服器的需要,範围从简单到高级直到企业级。
WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP伺服器和 CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 ⅡOP 通信的可伸缩运行时环境,来帮助这些使用者从简单的 Web 应用程式转移到电子商务世界。
BEA WebLogic
BEA WebLogic Server 是一种多功能、基于标準的web套用伺服器,为企业构建自己的套用提供了坚实的基础。各种套用开发、部署所有关键性的任务,无论是集成各种系统和资料库,还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标準的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的套用。
BEA WebLogic Server 在使套用伺服器成为企业套用架构的基础方面继续处于领先地位。BEA WebLogic Server 为构建集成化的企业级套用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。
Apache
Apache仍然是世界上用的最多的Web伺服器,市场佔有率达60%左右。它源于NCSAhttpd伺服器,当NCSA WWW伺服器项目停止后,那些使用NCSA WWW伺服器的人们开始交换用于此伺服器的补丁,这也是apache名称的由来(pache 补丁)。世界上很多着名的网站都是Apache的产物,它的成功之处主要在于它的原始码开放、有一支开放的开发队伍、支持跨平台的套用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Tomcat
Tomcat是一个开放原始码、运行servlet和JSP Web套用软体的基于Java的Web套用软体容器。Tomcat Server是根据servlet和JSP规範进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规範且比绝大多数商业套用软体伺服器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标準实现,是基于Apache许可证下开发的自由软体。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB伺服器都是採用Tomcat。
小型WEB伺服器
【nginx】
* 支持通用语言接口,如php、python、perl等
* 支持正向和方向代理、虚拟主机、url重写、压缩传输等
* nginx的模组都是静态编译的,对fcgi的支持非常好,在处理连结的的方式上nginx支持epoll。
【 micro_httpd - really small HTTP server】
特点:
* 支持安全的 .. 上级目录过滤
* 支持通用的MIME类型
* 支持简单的目录
* 支持目录列表
* 支持使用 index.html 作为首页
* Trailing-slash redirection
* 程式总共代码才200多行
这个httpd适合学习简单的Web Server编写学习,因为它只有一个简单的架构,只能够处理简单的静态页,可以考虑用来放静态页。
【 mini_httpd - small HTTP server 】
特点:
* 支持GET、HEAD、POST方法
* 支持CGI功能
* 支持基本的验证功能
* 支持安全 .. 上级目录功能
* 支持通用的MIME类型
* 支持目录列表功能
* 支持使用 index.html,index.htm,index.cgi 作为首页
* 支持多个根目录的虚拟主机
* 支持标準日志记录
* 支持自定义错误页
* Trailing-slash redirection
mini_httpd 也是相对比较适合学习使用,大体实现了一个Web Server的功能,支持静态页和CGI,能够用来放置一些个人简单的东西,不适宜投入生产使用。
【 thttpd - tiny/turbo/throttling HTTP server 】
thttpd中是一个简单,小型,轻便,快速和安全的http伺服器.
简单:它能够支持HTTP/1.1协定标準,或者超过了最低水準
小巧:它具有非常少的运行时间,因为它不fork子进程来接受新请求,并且非常谨慎的分配记忆体。
便携:它能够在大部分的类Unix系统上运行,包括FreeBSD,SunOS 4,Solaris 2,BSD/OS,Linux,OSF等等
快速:它的速度要超过主流的Web伺服器(Apache,NCSA,Netscape),在高负载情况下,它要快的多
安全:它努力的保护主机不受到攻击,不中断伺服器
thttpd 类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是採用多路复用(Multiplex)技术来实现。因此效能很好。同时它还有一个特点就是基于URL的档案流量限製,这对于下载的流量控製而言是非常方便的。象Apache就必须使用外挂程式实现,效率较thttpd低。
thttpd跟lighttpd类似,适合静态资源类的服务,比如图片、资源档案、静态HTML等等的套用,性能应该比较好,同时也适合简单的CGI套用的场合。
【 lighttpd - light footprint + httpd = LightTPD 】
Lighttpd是一个德国人领导的开源软体,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的记忆体开销,cpu佔用率低,效能好,以及丰富的模组等特点。
lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(output compress),URL重写,Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的使用者是非常重要的,因为迁移到lighttpd就必须面对这些问题。
实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的记忆体佔用,使系统的资源几尽枯竭。而lighttpd採用了Multiplex技术,代码经过最佳化,体积非常小,资源佔用很低,而且反应速度相当快。
利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台伺服器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!
lighttpd 适合静态资源类的服务,比如图片、资源档案、静态HTML等等的套用,性能应该比较好,同时也适合简单的CGI套用的场合。
【 SHTTPD - Simple HTTPD 】
Shttpd是另一个轻量级的web server,具有比thttpd更丰富的功能特徵,支持CGI,SSL,cookie,MD5识别,还能嵌入(embedded)到现有的软体裏。最有意思的是不需要配置档案! 由于shttpd可以嵌入其他软体,因此可以非常容易的开发嵌入式系统的web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。
特点:
* 小巧、快速、不膨胀、无需安装、简单的40KB的exe档案,随意运行
* 支持GET,POST,HEAD,PUT,DELETE 等方法
* 支持CGI,SSL,SSI,MD5验证,resumed download,aliases,inetd模式运行
* 标準日志格式
* 非常简单整洁的嵌入式API
* dietlibc friendly. NOT that friendly to the uClibc (*)
* 容易定製运行在任意平台:Windows,QNX,RTEMS,UNⅨ (*BSD,Solaris,Linux)
由于shttpd可以轻松嵌入其他程式裏,因此shttpd是较为理想的web server开发原形,开发人员可以基于shttpd开发出自己的webserver!
发展趋势
目前,Web伺服器的发展有三个主要趋势:
1.从HTML到XML(Extensible Markup Language-可扩展标记语言)
HTML被称为“第一代Web语言”,如前面的介绍,HTML作为Web的开发语言,对Web套用的发展起到了关键性的作用。但是HTML有一个致命的缺点:只适合于人与电脑的交流,不适合电脑与电脑的交流。HTML通过大量的标记来定义文档内容的表现方式,它仅仅描述了应如何在Web流览器页面上布置文字、图形,并没有对Internet的信息含义本身进行描述,而信息又是Web套用中最重要的内容。通过HTML表现出来的文字、图形内容很容易被人理解,但却不利于电脑程式去理解。另外,HTML的另一个问题就是它的标记集合是固定的,使用者不能根据自己的需要增加标记;而且各种流览器的规格不尽相同,要使我们用HTML做的网页能够被所有流览器正常显示,我们只能够使用W3C(全球资讯网协会)规定的标记来建立网页。
正如前面所说,Web伺服器向Web流览器提供的信息都是来自有一定结构的资料库,在资料库裏,为了检索和管理的方便,信息按照它本身的意义(如姓名、年龄、工作单位等)被存放在相应的栏位裏,一旦这些资料被调出来,经过CGI、ASP、JSP、PHP等转换成HTML后,其原来的意义无法转移到HTML标记中来,使用者也就无法按照信息本来的意义去阅读。并且,由于作业系统以及资料库的不同,不同的系统及套用层面之间要想互相理解对方的资料格式是相当困难的。这就需要一种新技术或标準能够将最初储存在资料库伺服器中的原始资料结构在不同的系统层面共享。这种新技术就是XML。
使用XML可以解决上述的难题。W3C对XML作了如下描述:“XML描述了一类被称为XML文档的资料对象,并部分描述了处理它们的电脑程式的行为。XML是SGML的一个套用实例。从结构上说,XML文档遵从SGML文档标準。”同HTML一样,XML也是一种基于文本的标记语言,都是从SGML(Standard Generalize Markup Language,标準通用标记语言)发展而来,二者的不同在于:XML可以让我们根据要表现的文档,自由地定义标记来表现具有实际意义的文档内容,例如,我们可以定义〈文档名称〉〈/文档名称〉这样具有实际意义的标记。而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的使用者可以定义无穷的标记来描述文档中的任何资料元素,将文档的内容组织成丰富的完整的信息体系。总起来说,XML具有四大特点:便于存储的资料格式、可扩展性、高度结构化以及方便的网路传输,这些特点为我们建立开放、高效、可扩展、个性化的Web套用提供了一个崭新的起点。
2.从有线到无线
电子商务正在从台式机向着更为广泛的无线设备发展,Cahners In-Stat市场分析家预测,世界範围内的无线使用者的人数将会从2000年的2.71亿增加到2004年的13亿。Aberdeen集团的研究主任Darcy Fowkes认为,採用无线方式进行电子商务的优势并不仅仅在于方便,它还可以节约公司的财力,而且,移动办公能使工作更加高效。
然而,由于多种无线网路类型、标记语言、协定和无线设备并存的复杂情况,使得网路内容和资料转换成能够被无线设备所识别的格式并不容易。目前,许多企业都在致力于开发能够把应用程式以及网际网路内容扩展到无线设备上的产品。
例如,IBM新版本的WebSphere Transcoding Publisher 3.5增加和改进了许多新的特徵,可以将企业内部网上的资料翻译到多种无线设备上。该版本中新的特徵包括对更多的无线设备、资料格式的支持,以及语言翻译功能。它基于Java架构,能把用HTML和XML等标记语言编写的应用程式和资料转换成WML、HDML(Handheld Device Markup Language)和iMode等无线设备所能识别的格式,这样,通过手持设备就可以访问网际网路上的信息。
无线设备厂商Mobilize也推出了Mobilize Commerce产品,帮助企业进入无线网路。该软体可以通过无线连线的方式访问企业的内部系统,远程地实现订单传送,并进行确认。Mobilize Commerce可以充分利用XML对信息进行格式转换,以适合于无线设备,这些无线设备包括笔电、个人数位助理、无线电话、网路电话和双向寻呼等。
3.从无声到有声
世界上现在有十亿个电话终端,有超过2亿的行动电话。而就人自身的交流习惯来看,人们也更愿意利用听和说的口头的方式进行交流。
目前,文本语音转换器(TTS,Text to Speech)的研究工作已经取得了很大的进步,实现了自动的语言分析理解,并允许TTS的使用者增加更多的韵律、音调在讲话中,使TTS系统的发声更接近人声。在自动语音识别系统(ASR)领域裏,自动语音识别系统在从整个词的模仿匹配,向音素层次的识别系统方向发展。自动语音识别系统的辞彙表由一个基于声音片断的字母表构成,而且这种辞彙表是受不同语言限製的。基于这种方式,在一个宽广的声音行列裏,讲话能被识别系统发现和挑拣出来,并加以识别。并且,在识别一个词的时候,每一个音素将从系统的输入中挑拣出来,拼接组合后与已经有的音素和词语模板进行比较,来产生需要的模板。音素的识别大大减轻了ASR对讲话者的依赖性,并且使得它非常容易去建立大型的和容易修改的语音识别字典,从而满足不同套用市场的需求。
Web语音发展的另一方面是VoiceXML(Voice Extensible Markup Language-语音可扩展标记语言)的进展。VoiceXML的主要目标是要将Web上已有的大量套用、丰富的内容,让互动式语音介面也能够全部享受。Web伺服器处理一个来自客户端套用的请求,这一请求经过了VoiceXML解释程式和VoiceXML解释程式语境处理,作为回响,伺服器产生出VoiceXML档案,在回复当中,要经过VoiceXML解释程式的处理。VoiceXML 1.0规範基于XML,为语音和电话套用的开发者、服务提供商和设备製造商提供了一个智慧型化的API。VoiceXML的标準化将简化Web上具有语音回响服务的个性化介面的建立,使人们能够通过语音和电话访问网站上的信息和服务,像今天通过CGI脚本一样检索中心资料库,访问企业内部网,製造新的语音访问设备。VoiceXML的执行平台上面载入了相应的软体和硬体,例如,ASR、TTS,从而实现语音的识别以及文本和语音之间的转化。2000年5月23日,W3C接受了语音可扩展标记语言VoiceXML 1.0作为实例。
目前,IBM、Nokia、Lucent、Motorola等着名厂商都已经开发出相应支持VoiceXML的产品,但现在的ASR和TTS系统大多还不能支持中文。

















