VS.NET(C#)-5.16_IIS6架构模型:HTTP.SYS简介
IIS6架构模型:HTTP.SYS简介
1,概述
HTTP.SYS 运行在windows 的内核模式下,作为驱动程序而存在。
它是Windows 2003的TCP/IP网络子系统的一部分,从结构上说,它是TCP之上的一个网络驱动程序,因此,HTTP.SYS不再属于IIS,它已经从IIS中独立了出来。
在TCP/IP的基础之上,HTTP.SYS的主要功能是:侦听用户的http请求(这个请求来自于TCPIP.sys驱动程序),并将请求转发给相关的web应用程序处理,最后,HTTP.SYS将处理结果返回给用户(返回到TCPIP.sys驱动程序)。
在HTTP.SYS的内部,它由如下的功能模块组成:
ü 侦听模块。
ü 应答缓存模块。
ü 请求队列。
ü 响应发送模块。
HTTP.SYS的内部组成结构图如下图:
2,HTTP.SYS对请求的响应过程
HTTP.SYS监听并接收用户的http请求,之后对用户的http请求做出回应。
它的具体操作流程如下图所示:
流程说明:
首先,用户通过浏览器对部署在IIS中的web应用程序发出http请求。
经过各种处理,这个http请求最终会到达TCPIP.SYS驱动程序,TCPIP.SYS将这个请求转发给HTTP.SYS网络驱动程序。
在HTTP.SYS中,它的监听模块始终在监听着网络上是否有对它的http请求,当一个http请求到达以后,监听模块会对这个http请求进行分析,并根据请求的类型的不同,将这些请求进行排队,等候应用程序池中的web应用程序对队列中的请求进行处理。
这里有个问题:HTTP.SYS如何把请求传递给应用程序的?
在HTTP.SYS中,它维护着一张数据配置表,在这个表中记录着URL与应用程序池之间的对应关系,HTTP.SYS会对http请求中的URL进行跟踪。
也就是说,HTTP.SYS注册了所有IIS 6.0应用,并给每个工作进程赋予一个句柄,IIS内部利用这些句柄来标识、注册应用程序要用到的一个或多个名称空间。
因此,当HTTP.SYS接收到一个 HTTP请求的时候,它能够很快地将请求数据包从内核模式下的HTTP.SYS传递到正确的用户模式下的Web应用。
如果在一个http数据请求包到达之后,相关的应用程序池还没有启动,那么HTTP.SYS负责将这个应用程序池启动。这种处理方式也叫做请求式启动。当一个http请求被处理完毕之后,处理的结果会返回到HTTP.SYS中,由HTTP.SYS中的响应发送模块将这个处理结果返回到TCPIP.SYS中,并最终返回给用户。
3,HTTP.SYS对数据的缓存
如果用户对web网站上的某部分资源进行频繁的http请求的话,HTTP.SYS会把对这个请求的响应结果进行缓存。当用户下次对这部分资源进行请求的时候,HTTP.SYS会直接把在缓存中保存的响应结果直接发送给用户。
从用户发送http请求到系统返回响应结果的这一过程都是HTTP.SYS在内核模式下完成的。不需要在内核模式和用户模式下进行切换,这样就极大地节省了系统资源,提高了请求的响应速度。
有关HTTP.SYS数据缓存的过程如下图所示:
4.HTTP.SYS的配置信息
HTTP.SYS作为网络驱动程序,它已经从IIS中分离了出来,它不再属于IIS的一部分,因此HTTP.SYS的配置数据是存储在注册表中的,而不是IIS的配置数据库中。
在注册表中,HTTP.SYS的注册信息位于如下路径下面:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP。
5、HTTP.SYS的其他功能
管理TCP的连接
验证HTTP请求
记录IIS中的Web网站的日志信息
实施带宽限制策略以
及支持TCP/IP级的管理
实现客户证书请求服务