2009-09-24 15 views
12

So che Microsoft ha creato HTTP.SYS per aumentare le prestazioni di IIS. La mia domanda però è HTTP.SYS gestire il traffico HTTP per tutte le app? Che dire di una JVM, ad esempio, se utilizzando Winsock per ricevere il traffico HTTP, HTTP.SYS passa in modo trasparente questi dati attraverso l'API Winsock? O Winsock è stato sostituito da HTTP.SYS sui nuovi kernel di Windows?Tutto il traffico HTTP passa attraverso HTTP.SYS su Windows?

Microsoft non è chiaro su questo nei loro documenti, per quanto posso dire.

risposta

6

Le applicazioni possono scegliere di utilizzare http.sys. Possono scegliere di implementare i propri gestori di protocollo HTTP.

Si consiglia vivamente che le applicazioni utilizzino http.sys per motivi di sicurezza - il server HTTP implementato da http.sys è abbastanza ben consolidato e altri server HTTP potrebbero introdurre problemi di sicurezza.

Per quanto ne so, HTTP.SYS comunica con lo stack TCP, non con NDIS (altrimenti dovrebbe implementare tutto il TCP internamente e questo non ha molto senso).

0

Winsock è di livello socket, sotto HTTP, quindi non penserei che passi attraverso Http.Sys.

Internet Explorer utilizza Wininet per la comunicazione HTTP, che fino a Vista non utilizzava Http.sys.

modifica Penso che il libro "Windows Internals" risponderà alla tua domanda.

+2

Winsocket è una libreria a livello utente, HTTP.SYS è un driver a livello di kernel. Quindi, HTTP.SYS deve essere prima di Winsock, anche se il livello di rete è tecnicamente più alto nello stack. Questo lascia aperta la domanda, HTTP.SYS gestisce tutto il traffico HTTP e, in tal caso, in che modo il traffico HTTP non associato a IIS termina in un processo utente che utilizza Winsock? –

+2

@LeeksandLeaks Gestisce solo il traffico sugli endpoint su cui viene detto di ascoltare, a condizione che un'applicazione sia attiva e che elabori la coda. Http.sys non si attiva magicamente quando rileva la comunicazione di tipo HTTP su TCP. – fabspro

Problemi correlati