Web服务器的IIS架构解析

2017-07-10 05:53杨龙
电脑知识与技术 2017年14期
关键词:监听线程队列

杨龙

摘要:随着Internet网络资源的不断丰富,Web服务也逐渐演变成为一种方便快捷的获取网络资源的方式。IIS6.0因其部署简单、可靠性及安全性高被广泛应用于Web服务器中。该文通过对IIS6.0系统架构的介绍,阐明了IIS6.0的工作原理及性能。

关键词:Web服务器;IIS服务;IIS6.0

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)14-0035-02

互联网信息服务(Internet Information Service)简称IIS,它是由Microsoft公司提供的一种基于Windows的基本服务。由于IIS能够很好的与Windows NT系列产品集成在一起,并且提供快速可扩展的Internet服务,具有支持多脚本语言、简单易用等特点,所以大多数中小型规模的Web服务器均采用IIS服务架构。

1概述

Microsoft公司在不同时期推出了不同的IIS版本,且个版本之间存在着一定的差异,本文将以IIS6.0为例全面解析IIS的架构及安全机制。

一直以来,IIS脆弱的安全性不断被业内所诟病,为了能够更好的提高IIS的安全性,填补远程执行代码漏洞,IIS6.0采用了全新的内核架构。如图1所示,IIS6.0的内核体系由HTTP.sys、W3SVC和W3Core三个组件构成。

2 HTTP.sys

2.1 HTTP.sys的安全可靠性

HTTP.sys作为驱动程序运行在Windows的内核模式下,主要由侦听模块、应答缓存模块、请求队列模块和响应发送模块构成。HTTP.sys在TCP/IP协议的基础上对用户发出的http请求进行侦听,并将该请求转发给相应的Web应用程序处理,最终由HTTP.sys将处理结果发回给用户。HTTP.sys的引入能够很好的提高IIS6.0的稳定性和可靠性。在IIS6.0之前的版本是由Inefinfo.exe负责监听用户的http请求的,同时在Inetinfo.exe中要运行一部分的用户代码,这种监听模式很容易受到不稳定的用户代码的影响,而导致Inetinfo.exe的崩溃,IIS极为不稳定。在IIS6.0中,HTTP.sys并不需要执行用户代码,它作为系统驱动程序始终运行在稳定的状态,保证了IIS6.0的稳定性和可靠性。

2.2 HTTP.sys的http请求响应过程

HTTP.sys中的监听模块始终处于http请求监听状态,用户通过浏览器发送一个对部署在IIS中的Web应用程序的http请求,该请求数据由TCPIP.sys不作处理的转发给HTTP.sys。监听模块对收到的http进行请求分析,并根据类型将其放入不同的Web应用程序请求队列中。HTTP.sys通过数据配置表记录URL与应用程序池之间的对应关系,换言之,HTTP.sys注册了IIS6.0中的每一个应用,并通过工作进程中的句柄标识应用程序所需要的一个或多个命名空间。因此,HTYP.sys在处理http请求队列中的请求时,就能够准确快速的将请求数据包传递给Web应用程序。应用程序处理完http请求后,HTTP.sys会将最终的处理结果返回给用户。

2.3 HTTP.sys的数据缓存

HTTP.sys还具有数据缓存功能,用户频繁对服务器上的某部分资源进行http请求访问时,HTPP.sys会对该http请求的返回结果进行保存。当用户再次进行该资源的http请求时,HTTP.sys会将保存下来的请求结果直接返回给用户,这样可以极大的节省系统资源,提高请求响应速度。

3W3SVC

在IIS6.0中W3SVC已从Inetinfo.exe中分离出来,作为一个独立的进程运行在IIS服务中。W3SVC主要负责根据配置数据创建相应的W3Core(工作线程)并对其进行监控,Web网站应用就运行在这些工作线程中。W3SVC中不会运行任何第三方代码,因此W3SVC总是处于稳定的运行状态,不会受到Web应用故障的影响,基于这一策略Web服务器就能很好的对Web应用进行监听并根据配置数据采取相应措施。

3.1工作线程的监控

W3SVC可以对所创建的工作线程进行监控:空闲超时监控,当某一线程长时间处于空闲状态,且空闲时长超过设定时长,W3SVC会将其关闭;请求队列限制,http请求队列的请求书超过设定上限后,W3SVC会对相应的http请求进行限制;监控CPU,如果某线程的CPU使用率过高超过上限,W3SVC会根据IIS配置信息采取相应措施。

3.2 Web应用程序的监控

W3SVC还可对应用程序池中的Web应用程序状况进行监控:W3SVC会在设定的时间间隔内对Web应用程序进行Ping操作,以获取其运行状态;如果在某一指定时间内,一定数目的工作进程发生失败,则W3SVC会进行失败保护操作,并禁用該应用程序池;W3SVC创建的工作进程必须在设定的时间内开启或关闭。

4W3Core

4.1 W3Core的安全性

W3Core又被称为工作进程(Work Process)或W3WP.exe。W3Core是在一个完全隔离的工作模式下运行的,在该工作模式下每一个Web应用不会受到其他Web应用的相互影响,同时也不会对HTYP.sys造成影响,同时W3Core的所有Web应用实例都可以在一个有权限限制的“网络账户”下运行,通过对W3Core这两方面的改进,IIS6.0有效地提高了可靠性和安全性。

4.2 W3Core的性能

在早些的IIS版本中,用户的http请求是由WWW服务转发给Web应用程序的,这种请求处理过程需要经过多次传递和模式转换,这增大了系统的开销,并且对IIS的性能影响也很大。在IIS6.0中,WWW服务作为一个独立的组件(W3Core)实现处理用户请求的功能,W3SVC仅仅是对W3Core进行创建和监控,并不对用户http请求进行处理,请求队列中的用户请求最终是由W3Core所管理的Web应用程序处理,这就缩短了请求过程,减少了转发次数,提高了IIS的性能。

5结束语

随着IIS的不断发展,其性能及安全性也在不断提高。深入细致的了解和学习IIS内部系统架构有助于将其更好的运用于Web服务器建设中,能够帮助我们更合理、安全的构建中小型企业Web服务器,对互联网Web服务具有一定的推动发展作用。

猜你喜欢
监听线程队列
千元监听风格Hi-Fi箱新选择 Summer audio A-401
队列里的小秘密
在队列里
丰田加速驶入自动驾驶队列
网络监听的防范措施
浅谈linux多线程协作
应召反潜时无人机监听航路的规划
局域网监听软件的设计
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究