所有 HTTP 流量都通过 Windows 上的 HTTP.SYS 吗?

Posted

技术标签:

【中文标题】所有 HTTP 流量都通过 Windows 上的 HTTP.SYS 吗?【英文标题】:Does all HTTP traffic go through HTTP.SYS on Windows? 【发布时间】:2010-12-01 04:32:53 【问题描述】:

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

据我所知,微软在他们的文档中并不清楚这一点。

【问题讨论】:

【参考方案1】:

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

出于安全原因,强烈建议应用程序使用 http.sys - 由 http.sys 实现的 HTTP 服务器已经相当完善,其他 HTTP 服务器可能会引入安全缺陷。

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

【讨论】:

【参考方案2】:

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

Internet Explorer 使用 Wininet 进行 HTTP 通信,而在 Vista 上没有使用 Http.sys。

编辑我认为“Windows Internals”这本书会回答你的问题。

【讨论】:

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

以上是关于所有 HTTP 流量都通过 Windows 上的 HTTP.SYS 吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在iOS上控制http请求和流量?

Owasp Zap 能否用于通过 HTTPS 连接代理所有 http 和 https 流量?

MRTG FOR WINDOWS 安装指南

启动预加载,请稍后

Zabbix监控Windows网卡流量

一台linux服务器只能通过某台windows上的secureCRT软件连接,其他客户端创建一个连接都不行。有啥办法