IIS架构与HTTP请求处理流程

合集下载

iis 工作原理

iis 工作原理

iis 工作原理
IIS(Internet Information Services)是一种Web服务器软件,
用于托管和管理网站、应用程序和服务。

其工作原理涉及以下几个方面:
1. 接收请求:IIS通过监听TCP端口(默认是80)来接收
Web请求。

当收到请求后,IIS将其传递给相应的处理程序。

2. 处理请求:一旦接收到请求,IIS会把请求发送给用于处理
请求的相应应用程序,比如使用或PHP的网页。

3. 处理程序:处理程序是一段可以解析请求并生成响应的代码。

它们可以执行查询数据库、访问文件系统、生成HTML等各
种操作。

4. 处理响应:处理程序生成响应后,IIS将其发送回请求的客
户端。

响应可以是HTML页面、图片、文件等。

5. 托管环境:IIS通过托管环境来运行应用程序。

托管环境提
供了安全性、生命周期管理、资源分配等功能。

不同的托管环境如、PHP等提供了不同的特性和功能。

6. IIS管理工具:IIS的工作原理也涉及到其可视化管理工具,
如IIS管理控制台和PowerShell等。

这些工具可用于配置、监
视和管理IIS服务器,包括虚拟目录、站点设置、证书管理等。

总之,IIS的工作原理是通过接收请求、处理请求、生成响应
和提供托管环境来实现网站和应用程序的运行。

它是一个完整的Web服务器解决方案,提供了可靠、高性能和安全的Web 服务。

HttpRuntime请求处理周期

HttpRuntime请求处理周期

IIS 5 的 请求处理过程对图的解释:IIS 5.x 一个显著的特征就是Web Server 和真正的 Application 的分离。

作为Web Server的进程上,InetInfo.exe 是一个Native Executive,并不是一个托管的程序,而我们真正的 Application aspnet_wp 的Worker Process 上面,在该进程初始化的时候会加载CLR,所以这是一个托管的环境。

IIS6 的 请求处理过程对图的解释:IIS 5.x 是通过InetInfo.exe 监听Request 并把Request分发到Work Process。

换句话说,在IIS 5.x中对Mode中进行,在IIS 6中,这种工作被移植到kernel Mode中进行,所有的这一切都是通过一个新的组件:注:为了避免用户应用程序访问或者修改关键的操作系统数据,windows提供了两种处理器访问模式:用户模式(User Mode)和内核模式(Kernel Mode)。

一般地,用户程序运行在User mode下,而操作系统代码运行在Kernel Mode下。

Kernel Mode的代码允许访问所有系统内存和所有CPU指令。

在User Mode下,http.sys接收到一个基于aspx 的http request,然后它会根据IIS中的Metabase 查看该基于该Request 的Application 属于哪个Application Pool,如果该Application Pool不存在,则创建之。

否则直接将request 发到对应Application Pool 的Queue中。

每个Application Pool 对应着一个Worker Process:w3wp.exe,毫无疑问他是运行在User Mode下的。

在IIS Metabase 中维护着Application Pool 和worker process的Mapping。

http流程

http流程

http流程HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的通信协议,是构建Web应用程序的基础。

在这篇文章中,我们将介绍HTTP的一般流程。

HTTP是基于客户端-服务器模型的协议,其中客户端通过发送HTTP请求来请求服务,服务器则通过发送HTTP响应来提供服务。

以下是HTTP的一般流程:1. 客户端发起请求:首先,客户端(例如浏览器)需要向服务器发送HTTP请求。

该请求通常由请求方法(例如GET、POST等)、请求头和请求体组成。

请求方法指定了客户端希望服务器执行的操作,例如获取资源、提交表单等。

2. 服务器处理请求:当服务器接收到客户端的请求后,它会根据请求方法和请求URL(Uniform Resource Locator)来确定要执行的操作。

服务器可能需要访问数据库、处理业务逻辑等。

3. 服务器发送响应:一旦服务器完成请求的处理,它会生成一个HTTP响应并将其发送回客户端。

响应通常包括状态码、响应头和响应体。

状态码用于指示请求的结果,例如200表示成功,404表示未找到,500表示服务器错误等。

4. 客户端接收响应:客户端接收到服务器发送的HTTP响应后,它会解析响应并根据需要进行处理。

例如,如果客户端接收到的是HTML响应,它可能会将其渲染为可视化的网页。

这是HTTP的基本流程。

然而,为了更好地保证通信的安全性和可靠性,现代的Web通信中通常还会涉及其他的步骤,例如:1. 建立安全连接:为了保护通信的安全性,客户端和服务器之间通常会建立安全连接。

一种常见的方法是使用HTTPS (HTTP Secure),它在HTTP的基础上添加了加密和身份验证的功能。

2. 身份验证:当客户端发送请求时,服务器可能需要对客户端进行身份验证,以确保只有经过授权的用户才能访问受保护的资源。

身份验证通常使用用户名和密码或令牌进行。

3. 会话管理:为了实现跨请求的状态保持,服务器可以使用会话管理技术。

http请求处理流程(讲的很清楚)

http请求处理流程(讲的很清楚)

.NET平台处理HTTP请求.NET平台处理HTTP请求的过程大致如下:1、 IIS得到一个请求;2、查询脚本映射扩展,然后把请求映射到aspnet_isapi.dll文件3、代码进入工作者进程(IIS5里是aspnet_wp.exe;IIS6里是w3wp.exe),工作者进程也叫辅助进程;4、 .NET运行时被加载;5、非托管代码调用IsapiRuntime.ProcessRequest()方法;6、每一个请求调用一个IsapiWorkerRequest;7、使用WorkerRequest调用HttpRuntime.ProcessRequest()方法;8、通过传递进来的WorkerRequest创建一个HttpContext对象9、通过把上下文对象作为参数传递给HttpApplication.GetApplicationInstance(),然后调用该方法,从应用程序池中获取一个HttpApplication实例;10、调用HttpApplication.Init(),启动管道事件序列,钩住模块和处理器;11、调用HttpApplicaton.ProcessRequest,开始处理请求;12、触发管道事件;13、调用HTTP处理器和ProcessRequest方法;14、把返回的数据输出到管道,触发处理请求后的事件。

当客户端向Web服务器请求一个页面文件时,这个HTTP请求会被inetinfo.exe 进程截获(WWW服务),它判断文件后缀,如果是*.aspx、*.asmx等,就把这个请求转交给aspnet_isapi.dll,而aspnet_isapi.dll则会通过一个Http PipeLine 的管道,将这个HTTP请求发送给w3wq.exe进程,当这个HTTP请求进入w3wq.exe 进程之后, framework就会通过HttpRuntime来处理这个HTTP请求,处理完毕后将结果返回给客户端。

iis hhtp过滤器规则

iis hhtp过滤器规则

iis hhtp过滤器规则
HTTP过滤器规则是一种可以在Internet Information Services (IIS) 上配置的规则,用于过滤和处理传入的HTTP请求。


些规则可以根据特定的条件对请求进行筛选,并采取相应的操作,如允许、拒绝、重定向或修改请求。

以下是一些常见的HTTP过滤器规则示例:
1. IP地址过滤:可以配置规则以拒绝或允许特定的IP地址或
IP地址范围的请求。

2. URL重定向:可以将特定的URL请求重定向到另一个URL。

3. MIME类型过滤:可以配置规则以拒绝或允许特定的MIME 类型的请求。

4. 请求修改:可以修改请求的内容、头部或其他属性,以满足特定的需求。

5. 请求拒绝:可以配置规则以拒绝符合特定条件的请求,如特定的URL路径或查询字符串参数。

6. 响应修改:可以修改响应的内容、头部或其他属性,以满足特定的需求。

7. 阻止SQL注入攻击:可以配置规则以拦截包含潜在SQL注
入攻击的请求。

8. 阻止跨站点脚本攻击:可以配置规则以拦截包含潜在跨站点脚本(XSS)攻击的请求。

这些规则可以通过使用IIS管理工具(如IIS Manager)或直接编辑IIS的配置文件(如web.config)进行配置。

通过配置适
当的规则,可以增加Web应用程序的安全性、性能和功能。

IIS服务器

IIS服务器

IIS服务器随着互联网的发展,网络技术的不断更新,网站建设变得越来越重要。

IIS(Internet Information Services)作为微软公司开发的一款Web服务器软件,拥有良好的性能和可靠性,成为许多网站的首选。

IIS服务器作为一个高性能、安全、可靠的Web服务器,它在Windows Server操作系统中被广泛应用,提供了一个完整的Web 解决方案。

IIS服务器既可作为Web服务器,也可充当应用服务器,还支持FTP、SMTP和NNTP等不同的Internet服务。

IIS服务器架构IIS服务器采用了模块化的设计方式,这种设计方式是可以被其它应用程序访问的。

这意味着,IIS服务器的每个组成部分都可以通过各种API来进行访问、扩展和配置。

在这种模块化的设计下,IIS服务器以单一性、可扩展、动态性和容错性为主旨,使得开发者能够更加容易地构建、调试和维护应用程序。

IIS服务器的组成IIS服务器由多个组件组成,每个组件都有不同的功能,以下是IIS服务器的主要组成部分:1. HTTP.sysHTTP.sys是IIS服务器的内核,负责接收和处理HTTP请求。

当客户端向IIS服务器发送请求时,HTTP.sys将处理该请求并将其传送到IIS服务器。

2. WASWAS(Windows Process Activation Service)是IIS的进程管理服务,它负责管理IIS进程,如启动、停止、回收以及控制IIS进程的健康状态。

3. WWW服务WWW服务是IIS服务器的核心组件,它提供了Web服务和管理Web应用程序的功能。

4. FTP服务FTP服务是IIS服务器的默认组件,它使得用户能够通过FTP 协议上传和下载文件。

IIS服务器的特性IIS服务器是一款功能强大、灵活和可扩展的Web服务器,它有以下几个特性:1. 支持HTTP、HTTPS和FTP等协议。

2. 带有完整的管理工具,可以通过这些工具进行Web站点的创建、配置、管理和监控。

iis请求处理流程

iis请求处理流程

iis请求处理流程IIS请求处理流程IIS(Internet Information Services)是微软公司开发的一款Web服务器软件,它可以在Windows操作系统上运行,提供网站托管、应用程序托管等服务。

在IIS中,请求处理是一个非常重要的环节,本文将详细介绍IIS请求处理的流程。

一、请求概述当客户端向服务器发送一个HTTP请求时,IIS会接收到该请求,并根据配置文件中的设置进行相应的处理。

整个请求过程可以分为以下几个步骤:1. 接收请求2. 解析请求3. 处理请求4. 返回响应下面将对每个步骤进行详细介绍。

二、接收请求当客户端发送一个HTTP请求时,该请求会通过TCP/IP协议传输到服务器。

IIS会监听指定的端口(默认为80),并接收到该请求。

此时,IIS会将该HTTP请求存储在内存中,并等待后续处理。

三、解析请求接收到HTTP请求后,IIS需要对该请求进行解析。

解析过程包括以下几个步骤:1. 解析HTTP头部信息:包括方法类型、URL地址、协议版本等信息。

2. 解析查询字符串和表单数据:如果有查询字符串或表单数据,则需要将其解析出来。

3. 解析Cookie:如果有Cookie,则需要将其解析出来。

4. 解析请求体:如果有请求体,则需要将其解析出来。

解析完HTTP请求后,IIS会将解析结果存储在内存中,并等待后续处理。

四、处理请求在解析完HTTP请求后,IIS需要对该请求进行处理。

处理过程包括以下几个步骤:1. 验证身份:如果该网站需要用户身份验证,则需要对用户进行身份验证。

2. 处理URL重写:如果该网站进行了URL重写,则需要对URL进行重写。

3. 处理HTTP模块:IIS中有很多HTTP模块,这些模块可以对HTTP 请求进行处理。

比如,模块可以将页面编译成可执行文件,并执行该文件。

4. 处理ASP页面:如果该网站使用了ASP页面,则需要对ASP页面进行处理。

5. 处理静态文件:如果该网站访问的是静态文件(比如HTML、CSS、JS等),则直接返回该文件内容。

iis的工作原理

iis的工作原理

iis的工作原理IIS(Internet Information Services)是Microsoft开发的一种Web服务器软件。

它的工作原理基本上分为以下几个步骤:1. 客户端请求:当用户在浏览器中输入URL或点击链接时,生成一个HTTP请求,该请求需要由服务器处理。

2. HTTP协议解析:IIS首先解析HTTP请求,包括读取请求头和请求体,并根据请求方法(如GET、POST)和请求路径来确定后续的处理流程。

3. 资源查找:根据请求的URL路径,IIS会在服务器上查找相应的资源文件或处理程序。

如果请求的是静态文件(如HTML、CSS、JS),IIS直接返回文件内容;如果请求的是动态内容(如页面),IIS会将请求转发给 运行时进行处理。

4. 模块处理:在处理请求的过程中,IIS会调用一系列模块来处理不同的功能。

这些模块包括身份验证模块、缓存模块、日志模块等。

每个模块负责不同的任务,可以定制和扩展IIS的功能。

5. 网站配置:IIS会根据配置文件来确定如何处理请求。

配置文件包括网站设置、虚拟目录设置、权限设置等。

这些配置可以指定IIS如何处理特定的请求以及如何与其他服务器组件交互。

6. 处理结果返回:当服务器完成请求的处理后,它会生成响应内容并将其返回给客户端。

响应内容可以是HTML页面、JSON数据等。

IIS还会设置响应头,包括状态码、内容类型等。

7. 连接管理:IIS需要管理与客户端的连接。

它会维护一系列连接池,有效地管理连接的分配和回收,以提高服务器的性能和并发处理能力。

总的来说,IIS的工作原理是通过解析HTTP请求、查找资源文件、调用模块处理以及根据配置文件进行请求处理,最后将处理结果返回给客户端。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*************************************************************************************************************************************Windows操作系统中的IIS负责提供互联网服务,一台运行了IIS的计算机可以看成是一台Web服务器。

Windows XP SP2 中IIS主版本号为5,Windows 2003 Server为6,Vista和Windows Server 2008为7。

对于Windows 2003 Server,其默认支持的版本为1.1,因此必须单独安装.NET Framework 2.0以上版本[1]。

目前,IIS 6是使用最为广泛的版本,IIS 5已基本不在Web服务器上部署, IIS 6与IIS 5相比在系统架构上有着较大的差异,IIS 7与IIS 6相比,基本架构并没有根本性的变化,但在许多方面有新的增强和改进。

本书选择IIS 6/7进行介绍,大部分内容也适合于IIS 5,但IIS 5一些已过时的特性就不介绍了。

首先,我们来仔细分辨一下三个很容易混淆的基本概念。

8.1.1网站、Web应用程序和虚拟目录在IIS中可以创建网站、Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息。

“网站”、“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8‑1所示。

图 8‑1 网站,应用程序与虚拟目录简而言之,一个“网站(Web Site)”包含一个或多个“ Web 应用程序(Web Application)”,一个Web 应用程序包含一个或多个“虚拟目录(Virtual Directory)”,而虚拟目录则映射到 Web 服务器或远程计算机上的物理目录。

图 8‑2所示为运行IIS 7的一个Web服务器。

图 8‑2 IIS 7中的网站,应用程序与虚拟目录图 8‑2中可以清楚地看到此Web服务器上有两个“网站”:Default Web Site和NewWebSite,其中Default Web Site网站中有三个“Web 应用程序”:HappyBookShopService、HappyBookShopWebSite和OnlineAlbum。

而HappyBookShopWebSite应用程序下的每一个子文件夹都是一个“虚拟目录”。

最顶层的虚拟目录称为“根虚拟目录”,图8‑2中Web应用程序HappyBookShopWebSite的根虚拟目录为“/HappyBookShopWebSite”。

下面逐个剖析这三个概念。

1网站(Web Site)网站是 Web 应用程序的容器,每个网站都有一个唯一的标识,这一标识由它的 IP 地址、端口和可选的主机头/主机名组合而成,Web服务器根据收到的HTTP请求中的这些信息来确定是对哪一个网站的请求。

在IIS 7中,将网站标识称为“网站绑定”,图 8‑3所示为IIS 7默认网站的“网站绑定”对话框。

图 8‑3 IIS7.0中的网站绑定2 Web 应用程序(Web Application)Web 应用程序是一种在应用程序池(Application Pool)[3]中运行并通过 HTTP 协议向用户提供信息服务(通常以HTML 格式表达信息)的软件程序。

创建 Web 应用程序时,Web 应用程序的名称将成为网站 URL 的一部分,用户可以通过 Web 浏览器发出针对该 URL的HTTP请求。

使用Visual Studio创建的“网站”,其实是一个“Web 应用程序”,它并不等于IIS中的“网站”。

在 IIS中,每个网站至少必须拥有一个 Web 应用程序(但不一定是应用程序,可以是其他类型的Web应用程序),它被称为“根Web 应用程序”或“默认 Web 应用程序”,除此之外,网站还可以包含一个或多个(或其他种类) Web 应用程序。

在Windows XP SP2中,使用Visual Studio创建的网站发布到本机IIS之后都是作为本机默认网站(即“localhost”所代表的网站)所承载的Web应用程序而运行的。

Windows Server和Vista可以为某个应用程序创建一个独立的IIS网站,此网站只承载这个唯一的应用程序,并且运行在一个独立的应用程序池中。

许多商业网站都采用这种方法以获取较高的性能,同时将此网站与Web服务器上承载的其他网站相互隔离,以增强Web服务器的安全性。

3 虚拟目录(Virtual Directory)虚拟目录是在 IIS 中指定并映射到本地或远程服务器上的物理目录的目录名称。

然后,此虚拟目录名称将成为 Web 应用程序 URL 的一部分,用户可以通过 Web 浏览器向IIS请求访问此URL所对应的物理目录中的资源。

在 IIS中,每个 Web 应用程序都必须拥有一个最顶层的虚拟目录,它被称为“根虚拟目录”。

在Visual Studio中,可以在属性窗口中直接设定网站的根“虚拟路径”(图 8‑4)。

图 8‑4 网站的虚拟路径但要注意,这里设定的“虚拟路径”是Visual Studio自带的轻量级Web服务器“ Development Server”的虚拟路径,而非IIS中的虚拟路径。

如果使用Visual Studio完整版本(比如团队开发版),则可以使用一个“发布网站”的功能。

在使用此功能发布网站时可以直接指定应用程序在IIS中所对应的根虚拟目录图 8‑5)。

图 8‑5 设定IIS中网站的根虚拟目录图 8‑5中将网站所对应的IIS根虚拟目录设为MyNewWebSite。

一个Web 应用程序可以拥有多个虚拟目录,这些虚拟目录都将成为Web 应用程序根虚拟目录的子目录。

可以很方便地在IIS中创建一个虚拟目录(图 8‑6)。

图 8‑6 在IIS 7中创建一个虚拟目录给Web应用添加完虚拟目录之后,可以通过以下URL访问虚拟目录中的网页http://网站名称/Web应用程序根虚拟目录/新创建的子虚拟目录/Web网页名称在上面的例子中,Web应用程序根虚拟目录为“/MyNewWebSite”,新加的虚拟目录为“MyNewVirtualDir”,它指向“D:\MyDir”目录。

现假设D:\MyDir目录中有一个网页(不妨设为Sample.aspx),则通过以下URL可以访问此网页:http://localhost/MyNewWebSite/MyNewVirtualDir/Sample.aspx--------------------------------------------------------------------------------[1] 建议在Windows 2003 Server上安装最新版本的.NET Framework以支持一些新技术,比如AJAX和Silverlight。

[2] 更具体来说,是Windows Server的一个系统核心组件:HTTP.SYS负责这一工作。

后面在介绍IIS架构时还将介绍HTTP.SYS组件。

[3]后文将应用程序池作更详细的介绍[4]“虚拟目录”有时又被称为“虚拟路径”,两者代表同一概念。

[5]对于Visual Web Developer速成版,它没有提供“发布网站”的功能,但可以在“复制网站”对话窗口找到相应的按钮完成这一工作。

或者更直接些,直接使用IIS管理器来完成这一工作。

[6]在IIS 5/6中使用“虚拟目录创建向导”来创建虚拟目录,其方法是在IIS的某个Web应用程序节点上右击,从快捷菜单中选“新建”-->“虚拟目录”命令。

IIS 7的操作是类似的,但它直接在快捷菜单的第一级中就提供了“添加虚拟目录”的命令。

8.1.2 应用程序池与工作者进程“应用程序池(Applicaion Pool)”是Windows Server为提升Web服务的性能和可靠性而引入的一个Web程序隔离机制。

一个应用程序池可包含一个或多个Web应用程序。

Web应用程序必须运行在一个应用程序池中。

在Windows Server中,一个或多个“工作者进程(Worker Process)”为应用程序池提供服务,停止一个应用程序池将导致这些工作者进程被关闭,这时,所有发往此应用程序池中Web应用程序的HTTP请求将收到“503服务不可用”的响应信息。

图 8‑7展示了一台Web服务器上正在运行的应用程序池。

图 8‑7 IIS 7中的应用程序池如图 8‑7所示,本台Web服务器上的设置了3个应用程序池,每个应用程序池中可运行多个Web应用程序,图中DefaultAppPool这一应用程序池运行了5个Web应用程序。

每个应用程序池都可以加载特定版本的.NET Framework,以对应用程序提供支持。

在IIS 7中,应用程序池有两种运行模式——经典模式和集成模式。

经典模式下,IIS7应用程序池运行方式同IIS 6 [1]。

集成模式下,IIS 7直接预装载.NET Framework,从而为应用程序提供了更好的性能。

在IIS管理器中可以随时启动和停止某个应用程序池。

Windows Server上运行应用程序池的系统帐号是“NetworkService”。

在后面的章节中可以看到在部署网站时往往需要给此帐号设置特定的权限(比如允许应用程序向某文件夹中添加文件)。

下面深入介绍一下IIS的系统架构以及Windows Server是如何响应HTTP请求的。

8.1.3 IIS的系统架构IIS 6(运行于Windows 2003 Server)的架构如图 8‑8所示。

图 8‑8 IIS 6的架构从图 8‑8中可以看到,IIS 6架构由以下几个部分组成:(1)HTTP.SYS:运行于Windows核心(Kernel)的一个组件,它负责侦听(Listen)来自于外部的HTTP 请求(通常来自网络中另一台计算机上的浏览器),根据请求的URL将其转发给相应的应用程序池,由运行于应用程序池中的工作者进程来响应此HTTP请求。

当此HTTP请求处理完成时,它又负责将处理结果发送出去(其接收者通常为发出HTTP请求的浏览器)。

为了提供更好的性能,HTTP.SYS内部建立了一个缓冲区,将最近的HTTP请求处理结果保存起来,如果发现某个HTTP请求“不久以前”处理过了(即在缓冲区中可以找到),它就简单地直接从缓冲区中取出这些结果发回给客户端(通常为发出HTTP请求的浏览器)。

(2)InetInfo:在IIS 5时代,InetInfo是IIS服务的主进程,在IIS 6中,它不再负责处理HTTP请求,但它继续负责管理除了WWW服务之外的其他互联网服务,比如用于文件传输的FTP服务和用于邮件收发的SMTP服务。

相关文档
最新文档