逻辑上实现了http协议、管理web资源、负责提供web服务器的管理功能。
Web服务器逻辑和操作系统共同管理TCP连接。
Apache 就是 开源的 软件web 服务器的一种。
一旦连接建立起来并被接受,服务器会将新连接添加到其现存的web服务器连接列表中,做好监视连接上数据传输的设备。
可以用反向DNS对大部分web服务器进行配置,以便将客户端IP地址转换成 客户端 主机名。
好处: web服务器可以将客户端主机名用于详细的访问控制和日志记录。
坏处:主机名查找可能会花费很长时间,要么只允许特定内容进行解析。
有些web服务器还支持ident 协议。服务器可以通过ident协议找到发起http连接的 用户名 。对记录日志非常有用。
类似这种。
如果客户端支持ident协议,就在tcp端口113上监听 ident请求。
但ident在公共因特网上不能很好的使用
解析请求报文时,web服务器会不定期从网络上接受输入数据。网络连接可能随时都会出现延迟。web服务器从网络中读取数据,将部分报文数据临时存储在内存中,直到收到足以进行解析的数据并理解其意义为止。
web服务器对报文解析后,并用自己内部的数据结构来存储请求报文。
请求可能会在任意时刻到达,所以web服务器不停观察有无新的web请求。不同的web服务器会以不同的方式为请求服务。
单线程的服务器一次只处理一个请求。一个事务处理结束后,才会去处理下一条连接。
结构容易实现,单性能很差。
多进程和多线程服务器用多个进程或更高效的现成同时对请求进行处理。
可以根据需要创建,或者预先创建一些线程/进程。有些服务器会为每条连接分配一个线程/进程,但当服务器同时要处理成百上千甚至上万的连接时,需要的继承或者线程数量可能会消耗太多内存或系统资源。(预先分配 线程池,进程池,内存池等手段)
因此这类服务器会对线程/进程的最大数量进行限制
线程与复用功能结合,利用计算机平台上多个CPU。多个线程中的每一个都在观察打开的连接。并对每条连接执行少量任务。
收到并解析请求后,可以根据方法、资源、首部和可选的主体部分对请求进行业务处理。
在web服务器将内容传送给客户端之前,要将请求 报文中的URI映射为web服务器上适当的内容或内容生成器,以识别出内容的源头。
请求URI 作为名字 来 访问 Web 服务器文件系统中的文件。通常web 服务器的文件系统中会有一个特殊的文件夹专门用于存放web内容。
即文档的 根目录 。
同时服务器也需要注意,不能让URL退到docroot之外,将文件系统的其余部分暴露出来。不允许这样的uri出现:
web服务器可以接受收对目录url的请求,其路径可以解析为一个目录。而不是文件。我们可以对大多数web服务器进行配置。使其在客户端请求目录url时 采取不同的动作。
大多数web服务器都会去查找目录中的一个名为index.html 的文件来替代此目录。
如果用户请求的时一个目录的url,并且这个目录中有一个名为index.html 的文件。服务器就会返回这个文件。
Web 服务器还可以将URI映射为动态资源,也就是说,映射到按需动态生成内容的程序上去。
实际上,有一大类名为应用程序服务器的Web 服务器会将Web服务器连接到复杂的后端应用上去。
Web 服务器主要做的事:
也就是说 web服务器会将URI路径名 映射为 可执行文件目录 。
服务器端包含项(SSI),如果某个资源被表示为存在服务器端包含想,服务器会在将其发送给客户端之前对资源内容进行处理。
web 服务器还可以为特定资源进行访问控制,有请求到达,要访问受控制资源时,服务器可以根据客户的ip地址进行访问控制,比如输入密码才能访问。
如果事务处理产生了响应 主体,就将内容放在响应报文中发回去。实体包括:
服务器要负责确定响应主体的MIME类型。有很多配置服务器的方法可以将MIME类型与资源关联起来。
Web 服务器有时会返回重定向响应而不是成功的报文。Web服务器可以将浏览器重定向到其他地方执行请求。
重定向返回码 3XX。Location响应首部包含了内容的新地址。
对于非持久连接而言,服务器应该发送了整条报文后,关闭自己一端。
对于持久而言,连接仍然可以保持打开状态。这种情况下服务器端要正确的计算content length,不然客户端无法知道响应何时结束。
当事务结束时,web服务器会在日志文件中添加一跳目录,来描述已执行的事务。
web应用的运营都是基于web服务器的存在才能实现的。今天我们就一起来了解一下,目前比较常见的一些web服务器都有哪些类型。
1、Tomcat服务器
目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet技术的Web服务器,也是初学者学习开发JSP应用的选。
2、Resin服务器
Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建
3、JBoss服务器
JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JMLAPI实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合
4、WebSphere服务器
WebSphere是IBM公司的产品,可进一步细分为WebSpherePerformancePack、CacheManager和WebSphereApplicationServer等系列,其中WebSphereApplicationServer是基于Java的应用环境,可以运行于SunSolaris、WindowsNT等多种操作系统平台,用于建立、部署和管理Internet和IntranetWeb应用程序。
5、WebLogic服务器
WebLogic是BEA公司的产品(现在已经被Oracle收购),可进一步细分为WebLogicServer、WebLogicEnterprise和WebLogicPortal等系列,其中WebLogicServer的功能特别强大。WebLogic支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。IT培训http://www.kmbdqn.com/认为对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)