深入剖析IIS 6.0图文教程(5)
来源:asp之家 发布时间:2010-04-04 18:18:00
■ http.sys
IIS 6.0体系设计中最重大的变化是加入了http.sys驱动程序,http.sys驱动程序的任务是处理HTTP请求,而且它在内核模式下执行操作。不要小看这一改变,将处理HTTP请求的任务从IIS 5.0、IIS 4.0的用户模式改变到IIS 6.0的内核模式标志着新一代IIS服务器的诞生。
在Win 2K和NT 4.0中,IIS在用户模式下运行。运行在用户模式下的应用程序不直接与硬件通信,它们直接调用的是一些标准过程,这些标准过程或者将数据传入内核模式的组件(例如网卡驱动程序,图形子系统),或者调用内核模式组件的函数,以此完成保存文件、设置IP地址、将HTML文件发送到网络之类的任务。
用户模式和内核模式之间的转换是一项开销很大的操作,服务器首先从内核模式的TCP/IP栈将传入的HTTP请求传递给用户模式的Winsock,由Winsock将请求传递给IIS。从内核模式到用户模式的切换很快发生,但不可避免地给处理过程带来瞬间的延迟。当负载较大时,这种延迟不断累加,同时由于这种转换是必不可少的,所以管理员根本没有办法优化处理过程。
IIS 6.0的https.sys内核模式驱动程序极大地减少了用户模式和内核模式之间的切换次数。http.sys监听着HTTP请求,决定由哪一个用户模式的进程来处理该请求,或者是否由驱动程序本身返回用户请求的内容。
IIS 6.0在用户模式下运行,完全依赖内核模式的http.sys作为接收用户请求的服务器引擎。因此,http.sys必须能够在任何时候作出相应,必须具有极高的可靠性。用户代码可能导致进程出错,所以微软把http.sys设计成不执行任何用户代码,这样,即使应用程序出现了故障,也不会影响到IIS 6.0本身,IIS 6.0仍能够照常监听HTTP请求。
如果要从内核模式的缓冲区返回静态的应答,一个高速的、内核模式的、不允许运行应用程序代码的HTTP处理器是十分理想的,它减少了切换到用户模式的昂贵开销,能够从内核模式的缓冲区快速返回应答。IIS 6.0的http.sys就管理着这样一个缓冲区,而且使用了高度优化的启发式缓冲区算法来确定哪些内容要放入缓冲区,例如,http.sys可能只缓冲那些出现了一次以上请求的内容。
由于http.sys直接从应答缓冲区提取静态内容,不必再切换到用户模式,所以与IIS 5.0的性能相比,IIS 6.0的整体性能有了显著提升。根据微软的资料显示,WebBench基准测试表明IIS 6.0返回静态内容的速度要比IIS 5.0快150%。即使以IIS 5.0的隔离模式运行IIS 6.0服务器(这时,IIS 6.0的体系结构与IIS 5.0的相似),同样也能从http.sys驱动程序的应答缓冲区和其他改进之处获益。
另外,微软在http.sys驱动程序中采用了许多优化的算法,使其能够将请求直接转发到适当的工作进程。在IIS 4.0和IIS 5.0中,必须通过多个步骤才能确定进程的哪一个实例拥有了应当接收当前请求的Web应用,但在IIS 6.0中,http.sys注册了所有IIS 6.0应用,赋予每一个进程一个句柄,IIS内部利用这些句柄来标识注册的应用程序要用到的一个或多个名称空间。因此,当http.sys接收到一个HTTP请求,它能够很快地将请求从内核模式的http.sys传递到正确的用户模式的Web应用。
http.sys驱动程序还要执行其他一些任务,其中包括:
⑴ 将传入的URL与各种长度、格式方面的规则进行比较。
⑵ 管理传入请求的队列。
⑶ 担负着记录IIS Web网站日志信息的任务(从而提高了记录日志的性能)。
⑷ 实施带宽限制策略以及支持TCP/IP级的管理。
⑸ 实现客户证书请求服务(但不支持安全套接字层——SSL)。
由于http.sys是一个操作系统的驱动程序,而不是一个IIS组件,因此该驱动程序的配置在注册表而不是IIS配置数据中进行。当前,还有许多http.sys的注册表设置项目尚无正式的说明文档,它可能意味着微软不鼓励用户修改这些设置,因为这些设置项目将来可能会有变化。http.sys驱动程序的注册表设置项目位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP下面,在这里可添加各种注册键(默认配置中不包含这些注册键),诸如:
⑴ EnableNonUTF8:如果加入EnableNonUTF8子键,并将它的值设置成0,http.sys只接受UTF-8编码的URL。UTF-8的全称是Universal Character Set(UCS)Transformation Format 8,这是一种字符集标准,标准全文在http://www.ietf.org/rfc/rfc2279.txt,它允许使用多国语言的字符集。默认情况下,EnableNonUTF8的值是1,表示IIS接受UTF-8、ANSI、双字节字符集(DBCS)编码的URL。
⑵ PercentUAllowed:当这个子键设置成1时(默认值),http.sys认可那些部分字符用%uNNNN表示的URL,其中NNNN是一组表示实际字符的数字。当PercentUAllowed设置成0时,IIS 6.0将拒绝那些部分字符用这种方式表示的URL。
%uNNNN是一种不太常用的Unicode符号,不要将它与常见的UTF-8表示形式混淆。在UTF-8表示形式中,%20表示一个空格,例如http://www.iisanswers.com/new article.htm相当于http://www.iisanswers.com/new%20article.htm,两者之间的转换由IE浏览器自动完成,不管EnableNonUTF8和PercentUAllowed设置成了什么值,IIS 6.0都会接受。
这两项设置,再加上其他可以在IIS 6.0文档中找到的设置项目,从一个侧面反映了IIS 6.0在URL解析方面的改进。在IIS 5.0中,一些重大的安全问题与Web服务器解析URL的方式有密切的关系,现在微软终于解决了原先存在的缺陷,同时作出了一些改进,允许管理员更加明确地定义IIS 6.0解析URL的规则。在天生具有国际化特点的Internet上,多国语言并存,这些改进之处尤其具有重要意义。
关于Unicode的更多信息,请参见http://www.unicode.org;关于IIS 5.0缺陷的更多信息,请参见 http://www.wiretrip.net/rfp/p/doc.asp/i5/d57.htm。在Windows Server 2003 Resource Kit中可以找到一个帮助配置http.sys的工具。


猜你喜欢
- 借上周推一把论坛举办《高手坐堂第一期宋建明:软文与网站优化的那点事》的机会,彭宇诚针对如何利用软文推广产品的问题与本期的嘉宾宋建明进行了一些
- 内容优化仍是目前SEO活动最关注的,因为你会不断地为网站或是博客增加内容,因此总有新的机会可以改善搜索引擎的可视度。但要在任何网站找到正确的
- 种种迹象表明百度Hi马上就要公测了,相信在不久的几天大家就可以共同使用了,作为意外可以登录百度Hi而的用户,还是先做个比较详细的图解让大家看
- DDOS攻击是现在最常见的一种黑客攻击方式,下面就给大家简单介绍一下DDOS的七种攻击方式。1.Synflood: 该攻击以多个随机的源主机
- 北京时间11月13日消息,据国外媒体报道,Kershaw, Cutter & Ratinoff律师事务所在其网站上称,正在寻找&am
- 当前,国内社交网站(SNS)的发展呈现多元化趋势,搜狐、新浪、盛大、腾讯等都在进入社交领域。现对大部分用户来说,到各种网站上建立自己的好友关
- 网站推广方式多种多样,网上也有不少介绍推广方法的文章,有些写的很好,我今天也想说一说其中的一种—论坛推广。凡是接触网络有一段时间的人对论坛都
- firefox是一款很优秀的浏览器,firefox 3.5在国外已经成为最流行的浏览器了,但它依然一直在努力从各方面改进它的下一个版本的浏览
- 网页优化不乏旁门左道,但这往往只是讨一时之巧,结果终是得不偿失。搜索引擎,尤其是大型搜索引擎在侦测作弊行为方面是很聪明的,所以从长计议,最好
- 先看代码#/bin/shdatename=$(date +%Y%m%d-%H%M%S)echo $datename >> /tm
- 近日,中国互联网络信息中心日前透露,“.中国”有望成为世界首个纯中文全球顶级域名。最新消息显示,“。中国”等非英文域名后缀的国际申请工作,将
- 夜深了,不知为何,忽然想起《人间词话》。打开橘黄色的台灯,静静地看。窗外冷冷的,不知未名湖的水如何。眼帘一触及“人生三大
- 百度之发家,是踩在众多个人站长头上的起来的。想当初 百度只是给TOM 给SINA做搜索技术服务的,当被TOM SINA抛弃了的时候,陷入绝境
- 近期,我发现,将镜像压缩包使用docker load -i 命令之后,镜像的名字和标签都是none,每次都需要重命名镜像,很是麻烦这个问题的
- 把你的Web服务器与应用服务器、脚本语言进行无痛整合。对于WebBase服务器,把你的Web前端与数据库后端连接起来是件很轻松的事。使用Ex
- 第一步:在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式: 以下VMnet2为配置其中子网ip随便写
- 10月10日消息,据南方都市报报道,新闻出版总署有关负责人昨日表示,10月份新闻出版总署将集中力量联合组织一次对网络游戏审批和运营服务的全面
- 我们知道Google之前有发布一份“Google搜索引擎优化指南”,而近期百度也在百度创业者俱乐部发布了官方首份“百度搜索引擎优化指南”。这
- 很多站长都遇到过原先IIS6.0的配置被改变。这里我们详细介绍了在IIS6.0下怎么恢复配置IIS6.0有个导出配置的功能,但你却找不到界面
- 微软董事长比尔·盖茨(Bill Gates)将于本周五(6月27日,美国当地时间)正式退出公司日常管理工作,以把精力专注于慈善事业.在过去3