IIS6架构

IIS6架构图

在IIS6中,Web服务组件由以下三个组件构成:

1、运行在内核模式的HTTP.sys(HTTP协议栈)

2、运行在用户模式的WAS(Web Admin Service,包含于W3SVC服务中)

3、运行在用户模式的工作进程(WP,Worker Process)

HTTP.sys(HTTP协议栈)

HTTP.sys是工作在内核模式的HTTP请求侦听器,它的架构如下图所示:

HTTP.sys不会执行外部代码,它具有以下作用:

  • 侦听和分析HTTP请求,支持IPv4和IPv6;
  • 根据URL命名空间将接收到的HTTP请求路由到不同的工作进程;如果请求的URL并不位于本地的URL命名空间范围中,则返回400错误;
  • 将HTTP请求进行队列缓存;
  • 在内核模式中缓存静态的和无需身份验证的内容响应;这极大的提高了Web服务的响应速度,增强了Web服务器的性能。
  • 支持PAE内存寻址方式,在x86上支持的内存容量为64GB;

WAS(W3SVC)

WAS包含于W3SVC服务中,负责管理IIS6的配置、应用程序池和工作进程,工作在用户模式,但不会执行外部代码,主要的作用有:

  • 配置HTTP.sys;
  • 管理应用程序池;
  • 创建工作进程;
  • 工作进程回收;
  • 工作进程状态监视;
  • 工作进程快速失败保护;
  • 支持孤立工作进程以进行调试等;

应用程序池

应用程序池定义了可以共享工作进程的Web应用程序(Web站点)的集合,你可以认为它是一组URL命名空间,属于此URL命名空间范围中的Web站点将共享此应用程序池中的工作进程,而HTTP.sys是根据应用程序池所定义的URL命名空间将接收到的HTTP请求路由到此应用程序池对应的工作进程。

和IIS 5 中只能使用一个应用程序池不同,在IIS 6 中你可以创建多个应用程序池,并将不同的Web站点(Web应用程序)分配到不同的应用程序池中,一个应用程序池可以具有一个或多个Web应用程序。不同应用程序池之间是完全隔离的,某个应用程序池出现故障时不会影响其他应用程序池;这样当属于某个应用程序池的Web站点因为代码编写问题而导致停止服务时,不会影响到使用其他应用程序池的Web站点,这最大的实现了Web服务器的高可用性。

工作进程 (Worker Process)

工作进程则是真正用于处理客户发送的HTTP请求的组件,你可以认为它是一个全功能的Web服务器,就像一个微型的IIS 5 服务器一样。当HTTP.sys决定将接收到的HTTP请求路由到某个应用程序池时,它是将HTTP请求路由到此应用程序池对应的工作进程进行处理;工作进程处理HTTP请求,如果需要则加载其他组件(ISAPI扩展或过滤器等等)进行处理,并将处理结果返回给HTTP.sys。

当客户发起HTTP连接请求时,IIS 6完整的处理过程如下:

  1. 在W3SVC服务启动时,WAS即启动,并且根据metabase.xml中的设置来配置HTTP.sys;
  2. 当HTTP.sys接收到HTTP请求时,分析其URL命名空间,如果在自己的响应缓存中具有匹配值则直接从缓存中获取响应并返回给客户;如果没有匹配值则根据WAS提供的URL命名空间 范围来决定由哪个应用程序池处理此HTTP请求;
  3. 如果此应用程序池当前没有工作进程,那么HTTP.sys通知WAS为其创建一个新的工作进程;
  4. HTTP.sys将接收到的HTTP请求路由到对应的工作进程中,工作进程处理此HTTP请求然后将结果返回给TTP.sys,并且根据缓存活动算法来告知HTTP.sys是否缓存此结果;
  5. HTTP.sys将请求的处理结果返回给原始客户,并根据工作进程的提示来决定是否保存此处理结果到自己的缓存中。
时间: 2024-10-15 01:55:09

IIS6架构的相关文章

zzIIS站点中部署WCF项目 - C#

WCF IIS配置 IIS站点中部署WCF项目 - C# 分类: WCF2012-12-19 22:30 2929人阅读 评论(0) 收藏 举报 ArtechWCF IIS站点部署 [csharp] view plaincopy .................全书之写印,实系初稿...执笔木坐,草草而止..个中甘苦,只自知之....── 引 Artech .<<WCF全面解析>>................. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

IIS6.0架构概览(翻译)

IIS6.0提供一个重新设计的万维网发布服务(World Wide Web Publishing Service)架构,可以帮助你为你的网站构建更好的性能.可靠.可扩展性(scalability),无论他们运行在一个或多个运行IIS的服务器上. IIS 6.0以两个不同请求处理模式之一运行在服务器,称为应用程序隔离模式.应用程序隔离是应用的分离,它通过进程边界防止一个应用程序或网站影响另一个和减少你为更正应用相关的问题而重启服务所花时间. 在IIS6.0内,对于两种IIS应用程序隔离模式,每个应

IIS 架构解析

我们在使用ASP.NET平台做web开发的时候,经常会接触到IIS(Internet Information Services 互联网信息服务).这篇文章主要来介绍IIS7.0+的架构.IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重.远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞. 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码,可以导致IIS服务器所在

IIS6下PHP配置(转载)

Windows 2003+IIS6+PHP5.4.10配置PHP支持空间的方法 (2013-01-10 16:48:56)标签: php it php环境 php配置 分类: PHP环境配置简介:一般在已经安装iis的windows系统上已经默认支持了asp及aspx,那么下面主要讲解如何让其也支持php并且支持MYSQL数据库.特别声明:[如果是选择PHP5.4.10安装版则可以省略此步骤,因为它自动添加了配置,但是由于PHP5.4.10没有安装版,所以只能自己配置,自己配置难度较大,我最终选

多层架构+MVC+EF+AUTOFAC+AUTOMAPPER【转】

多层架构+MVC+EF+AUTOFAC+AUTOMAPPER 最近使用ligerui搭建了一个简单的教务管理demo,将重要的地方记录,也希望能帮到有这方面需要园友. 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 二.正文 多层架构中等以上规模以上的系统用得比较多,此demo功能不多,出于抱着学习的态度搭建了一个多层架构,并加入现在很流行的依赖倒转(autofac).对象映射工具(automapper). 话说没图你说

3g上网卡的驱动程序的自动更新web端架构文档

几年前写的. 看是否有人用得上吧 1   简介 本文档详细描述了基于ASP.NET平台和IIS服务的T-Mobile自动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描述T-Mobile自动更新系统的架构,以使相关人员快速了解产品的架构. 1.1   目的 本文档将从架构方面对T-Mobile自动更新系统进行综合概述,其中会使用用例视图.逻辑视图.部署视图.实施视图等多种不同的架构视图来描述系统的各个方面. 这些描述用于记录并表述已对系统的架构方面做出的重要决策,同时确定系

3g自己主动更新网卡驱动web完架构文档

几年前写. 看它是否是用得上 1  简单介绍 本文档具体描写叙述了基于ASP.NET平台和IIS服务的T-Mobile自己主动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描写叙述T-Mobile自己主动更新系统的架构,以使相关人员高速了解产品的架构. 1.1  目的 本文档将从架构方面对T-Mobile自己主动更新系统进行综合概述.当中会使用用例视图.逻辑视图.部署视图.实施视图等多种不同的架构视图来描写叙述系统的各个方面. 这些描写叙述用于记录并表述已对系统的架构方面做

多层架构+MVC+EF+AUTOFAC+AUTOMAPPER

最近使用ligerui搭建了一个简单的教务管理demo,将重要的地方记录,也希望能帮到有这方面需要园友. 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 二.正文 多层架构中等以上规模以上的系统用得比较多,此demo功能不多,出于抱着学习的态度搭建了一个多层架构,并加入现在很流行的依赖倒转(autofac).对象映射工具(automapper). 话说没图你说个J8,先上框架图: Model层中Entity存放数据库实体

IIS架构介绍

IIS7及以上版本提供的请求-处理架构包括以下内容: Windows Process Activation Service(WAS)可以让站点支持更多协议,不仅仅是HTTP和HTTPS 可以通过增加或移除模块来自定义Web服务器引擎 集成IIS和ASP.NET请求-处理管线 本文介绍组件.模块和请求-处理架构,包括以下几个部分: IIS中的组件 协议监听器 超文本传输协议栈(Http.sys) 万维网发布服务(WWW Service) 进程激活服务(WAS) IIS中的模块 本地模块 托管模块