http.sys

http.sys简介  http.sys
  是一个位于Win2003和WinXP SP2中的操作系统核心组件,能够让任何应用程序通过它提供的接口,以http协议进行信息通讯。
  温馨提示:如果用户不慎删除了该驱动文件,不用担心,该驱动会在下次系统启动时重建。是一个删不掉的系统核心组件!实用程序结束该驱动,该驱动也会马上重新创建(只有粉碎文件才不能马上重建,但粉碎后,下次启动会重建)。
  微软在Windows 2003 Server里引进了新的HTTP API和kernel mode driver Http.sys,目的是使基于Http服务的程序更有效率。这个改变的直接收益者就是IIS 6.0和ASP.NET。
  其实在Windows XP安装SP2后,Http.sys已经出现在系统里了,但事实上,操作系统并没有真的使用这个内核级驱动,而XP上自带的IIS 5.1也没有使用HTTP API。
  新的HTTP API里最核心的变化都封装在Http.sys这个kernel mode driver里了。在此之前,基于HTTP协议的程序都是在User mode下运行的,而且必须自己处理诸如软件中断、context switch、线程调度等等问题,并且往往无法自由接触系统资源。过去,HTTP服务器,如IIS, Apache等都是利用Winsock API来创建一个User mode下的network listener。Network listener通常独自(i.e.: per application or per thread basis)占用一个IP端口。通俗点说,就是在同一时间只有一个应用程序可以监听一个端口,这在有些时候是一个不太令人舒服的限制。

http.sys的好处

  新的Http.sys带来的好处大致有如下一些:
  1. 缓存 - 静态的内容现在被缓存于内核模式下,这使服务响应速度更快
  2. 记录 (Log)-IIS的log功能更快且标准化了
  3. 带宽控制 - greater scalability control and throttling
  4. 可靠性 - 所有的服务请求会在Http.sys里暂存入队列,而不是由服务程序本身来处理,这样,即使服务程序重启,尚未被处理的请求也不会丢失了

  5. IP端口重用 - 现在,只要是通过Http.sys管理的端口(基本包括了那些著名的端口,比如80),都可以同时允许多个程序同时监听了。

Windows Server 2003 家族成员中的超文本传输协议 (HTTP) 栈以一个名为 HTTP.sys 的内核模式设备驱动程序形式来实现。HTTP.sys 是 Windows Server 2003 家族所特有的新功能,它是网络子系统的一部分。IIS 是一个用户模式进程,它与内核处理在完全不同的执行模式下运行。HTTP.sys 是所有传入(服务器端) HTTP 请求的单个联系点,它为 HTTP 服务器应用程序提供高性能的连接性。HTTP.sys 还负责进行总体连接管理、带宽控制和基于文本的日志记录。HTTP.sys 实现灵活的通用资源标识符 (URI) 响应缓存(名为可伸缩缓存),允许 HTTP 应用程序完全在内核模式(而不转换到用户模式)下缓存静态数据并为缓存的 HTTP 请求提供服务。HTTP.sys 实现一个名为应用程序池的 URI 名称空间映射机制。利用应用程序池,HTTP 应用程序可声明 URI 名称空间的多个部分,从而允许 HTTP.sys 将 HTTP 请求直接路由到相应的 HTTP 应用程序。基于这些更改,IIS 已经提高了多处理器计算机的吞吐量和可伸缩性,从大大增加了:

  • 单个 IIS 6.0 服务器可以主控的站点数。
  • 同时活动的工作进程数。
  • 启动/关闭次数。

原文地址:https://www.cnblogs.com/sntetwt/p/2001167.html