HTTP.SYS 详解

HTTP.SYS 详解http.sys 是一个位于Win2003和WinXPSP2中的操作系统核心组件,能够让任何应用程序通过它提供的接口,以http协议进行信息通讯。温馨提示:如果用户不慎删除了该驱动文件,不用担心,该驱动会在下次系统启动时重建。是一个删不掉的系统核心组件!实用程序结束该驱动,该驱动也会马上重新创建(只有粉碎文件才不能马上重建,但粉碎后,下次启动会重建)。微软在Windows

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺



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带来的好处大致有如下一些:

1. 缓存 - 静态的内容现在被缓存于内核模式下,这使
服务响应速度更快

2. 记录 (Log)-IIS的log功能更快且标准化了

3. 带宽控制 - greater scalability control and throttling

4. 可靠性 - 所有的服务请求会在Http.sys里暂存入队列,而不是由服务程序本身来处理,这样,即使服务程序重启,尚未被处理的请求也不会丢失了

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

Http.sys 是IIS 6.0使用的新型侦听器。在IIS 6.0出现之前,inetinfo.exe完成侦听HTTP请求的功能,同时还要将请求转发给对应的处理程序。从IIS 6.0开始,侦听器与inetinfo.exe分离开来,inetinfo.exe在用户模式下运行,Http.sys则完成侦听HTTP请求的功能,在 内核模式下运行。

1. 内核模式和用户模式

在Windows Server 2003中,一个进程既可以运行于内核模式,也可以运行于用户模式。如果一个进程运行于内核模式,那么这个进程就可以访问所有硬件和系统数据;如果一个进 程运行于用户模式,那么这个进程不能直接访问硬件,而且访问系统数据时也会受到限制。在Intel处理器架构中,内核模式运行于ring 0之内,而用户模式运行于ring 3。通过在内核模式运行Http.sys,侦听器可以直接访问TCP/IP协议栈,但是又能够位于WWW服务之外,这样就不会受到应用程序中代码缺陷的影 响,也不会因为应用程序崩溃而出现问题。

通过在内核模式运行,Http.sys获得了比较高的优先级,与先前版本的IIS相比,对 HTTP请求响应速度比较快。Http.sys不仅因为具 有较高的优先级而提高了IIS的性能,而且,还可以在等待应用程序响应(即使应用程序已经停止响应)的同时,将请求进行排队。在IIS 6.0中,每个应用程序池都拥有一个内核模式队列,Http.sys可以将请求转发给合适的队列。所以,在IIS 6.0中,当我们对性能进行调优时,可以将负载比较重的应用程序分隔到不同的应用程序池,从而使负载比较轻的应用程序不必与负载较重的应用程序共享同一个 队列。对每个应用程序池而言,队列规模是可配置的。

Http.sys可以将请求进行缓存,并尽可能地在内核模式中完成对请求的服务。如 果某个请求的响应已经得到了缓存,那么IIS就无须重新处理这个 请求,Http.sys只需要将这个响应从缓存中取出,这样就绕开了所有的IIS功能,从而也就避免了重新处理。这些已缓存的请求都保存在内存中,并且不 允许换出,因此,尽可能地增大系统内存是提高IIS性能的一种简单有效的方法。

尽可能地增大系统内存还能够减少inetinfo.exe的磁盘交换次数。inetinfo.exe运行于用户模式,可以在必要时交换到磁盘空间。如果系统内存过少,那么IIS的性能会急剧下降。

2. 其他Http.sys功能

针对HTTP请求和响应,Http.sys还能够处理TCP/IP连接,包括创建连接和断开连接。因为Http.sys直接运行于TCP/IP协议栈之上,因此还需要处理连接和超时,以及连接数限制和带宽不足。此外,Http.sys还需要处理日志。

Http.sys 通过执行两项重要功能来提高IIS 6.0的性能。首先,Http.sys在内核模式下对请求进行缓存,因此,为了给某个请求提供服务,如果该请求所需内容最近已经为先前某个请求提供服务 (无论是提供静态内容还是提供动态内容),那么可以在内核模式下直接为该请求提供其所需内容,而不需要再切换到用户模式下在inetinfo.exe进程 中运行。

Http.sys还可以将请求进行排队,由合适的工作进程完成对请求的服务。每个应用程序池都拥有自己的队列,队列的规模是可以配置的,这样,我们 可以对某个具体应用程序池的性能进行调优。针对可能会发生失效的应用程序,使用队列还有另一个优点,就是针对失效应用程序的请求仍然会保存在队列中,直到 队列中保存的请求总数达到该队列的上限。当应用程序能够重新进行响应时,这些请求仍然能够得到处理;此外,通过自动重启发生失效的应用程序池,还能够降低 响应时间,从用户看来,应用程序的响应仅仅是稍微延迟了一点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161386.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 硬核!用Mac Mini翻新了一台12年前的电脑

    硬核!用Mac Mini翻新了一台12年前的电脑本文转载自差评君有这么一位差友,不知道从哪儿加到了托尼的微信,都还没打招呼呢,上来就向我展现了他最近的硬核杰作。他将M1款的MacMini塞进了09年款27寸iMac,并把详细过程一股脑发给了我。尽管不清楚这样做有什么意义,但确实是做的很硬核,手法也相当专业,简单来说,他愣是把一台新电脑,塞进了一台老电脑。。。整理了一下他发过来的内容,大致弄清了这事儿的前因后果。把M1款的Macmini,塞进了09年iMac的想法,是他在看到了油管上有一位叫L…

    2022年5月30日
  • 错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap

    错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap最近在使用eclipse编写java程序时遇到这样一个问题:错误在类中找不到main方法,请将main方法定义为publicstaticvoidmain(String[]args)否则JavaFX应用程序类必须扩展javafx.application.Application看到这样的问题让我一头雾水,因为main方法已经写出解决这个问题可以点开eclipse-&gt…

    2022年5月31日
  • 安全视角下的CAN协议分析

    安全视角下的CAN协议分析目录相关背景CAN节点介绍CAN帧结构介绍CAN总线攻击面分析CAN总线安全缺陷基于ID的仲裁机制安全缺陷针对CAN总线的攻击方式[2]参考文章相关背景控制器局域网(CANbus)由罗伯特·博世公司于1983年开发。该协议于1986年美国密歇根州底特律市举行的国际汽车工程师学会(SAE)会议上正式发表。第一个CAN控制芯片,由英特尔和飞利浦生产,并且于1987年发布。世界上第一台装载了基于CAN的多重线系统的汽车是1991年推出的梅赛德斯-奔驰W140。..

    2022年6月28日
  • navicatpremium15激活码【中文破解版】

    (navicatpremium15激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
  • 创建java web项目_java搭建环境

    创建java web项目_java搭建环境手把手搭建一个完整的javaweb项目本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点。下载地址:http://download.csdn.net/detail/qq_23994787/9904842点击下载主要功能有:1.用户注册2.用户登录3.用户列表展示4.用户信息修改5.用户信息删除…

    2022年10月5日
  • 归来的技术栈——无状态的服务端

    归来的技术栈——无状态的服务端

    2022年3月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号