是否所有HTTP通信都通过Windows上的HTTP.SYS?

是否所有HTTP通信都通过Windows上的HTTP.SYS?,windows,http,networking,Windows,Http,Networking,我知道Microsoft创建HTTP.SYS是为了提高IIS的性能。我的问题是HTTP.SYS是否处理所有应用程序的HTTP流量?例如,如果JVM使用Winsock接收HTTP流量,那么HTTP.SYS是否通过Winsock API透明地传递此数据?或者Winsock已经被更新的Windows内核上的HTTP.SYS所取代 据我所知,微软在他们的文档中对此并不清楚。Winsock是套接字级别,低于HTTP,所以我认为它不会通过HTTP.Sys Internet Explorer使用Wininet

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


据我所知,微软在他们的文档中对此并不清楚。

Winsock是套接字级别,低于HTTP,所以我认为它不会通过HTTP.Sys

Internet Explorer使用Wininet进行HTTP通信,而在Vista中,Wininet未使用HTTP.sys


编辑我认为《Windows内部构件》一书将回答您的问题。

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

出于安全原因,强烈建议应用程序使用http.sys-由http.sys实现的http服务器经过了很好的加固,其他http服务器可能会引入安全缺陷


据我所知,HTTP.SYS与TCP堆栈而不是NDI对话(否则它必须在内部实现所有TCP,这没有多大意义)。

Winsocket是一个用户级库,HTTP.SYS是一个内核级驱动程序。因此,HTTP.SYS必须在Winsock之前,即使网络级别在堆栈中技术上更高。这仍然留下了一个悬而未决的问题,HTTP.SYS是否处理所有HTTP流量,如果是,未绑定到IIS的HTTP流量如何在使用Winsock的用户进程中结束?@LeeksandLeaks仅处理通知其侦听的端点上的流量,前提是应用程序处于活动状态并正在处理队列。当Http.sys通过tcp感知到类似Http的通信时,它不会神奇地激活。