2009-09-24 63 views
12

我知道微软创建HTTP.SYS来提高IIS的性能。我的问题是,HTTP.SYS处理HTTP流量为所有应用程序?例如,如果JVM使用Winsock来接收HTTP流量,那么HTTP.SYS透明地通过Winsock API传递这些数据呢?或者Winsock在Windows的新内核中被HTTP.SYS所取代?所有HTTP流量是否通过Windows上的HTTP.SYS?

微软是不是在他们的文档清楚这一点,据我可以告诉。

回答

6

应用程序可以选择使用http.sys。他们可以选择实现自己的HTTP协议处理程序。

强烈建议应用程序使用HTTP.SYS出于安全原因 - 通过HTTP.SYS实现的HTTP服务器是相当不错的硬化和其他HTTP服务器可能会引入安全缺陷。

据我所知,HTTP.SYS会谈TCP协议栈,而不是NDIS(否则就必须实现所有TCP的内部并没有做出很大的意义)。

0

Winsock的是插座,低于HTTP,所以我不认为它通过HTTP.SYS。

Internet Explorer使用的Wininet用于HTTP通信,其在向上穿过Vista中没有使用的Http.sys。

编辑我认为这本书“Windows内部”将回答你的问题。

+2

Winsocket是一个用户级库,HTTP.SYS是一个内核级驱动程序。因此,HTTP.SYS必须在Winsock之前,即使网络级别在技术上较高。 这仍然留下了一个问题,那HTTP.SYS处理所有的HTTP流量,如果是的话,那怎么不是开往IIS HTTP流量在使用Winsock的用户进程结束了? – 2009-09-24 20:22:39

+2

@LeeksandLeaks只处理要监听的端点上的流量,前提是应用程序处于活动状态并处理队列。 Http.sys在通过tcp感知到类似HTTP的通信时不会奇迹般地激活。 – fabspro 2012-11-21 14:46:25

相关问题