O modelo de E / S no Windows é baseado em uma pilha de componentes. Os dados devem fluir pelos vários componentes dessa pilha que existe entre a placa de rede física e o aplicativo que consumirá os dados. Às vezes, esses vários componentes inspecionam os dados (um pacote TCP, por exemplo), à medida que passam pela pilha, e com base no conteúdo desse pacote, os dados podem ser alterados ou o pacote pode ser descartado inteiramente.
Esteéummodelosimplificadoda"pilha de rede" pela qual os pacotes fluem para passar do aplicativo para o fio e vice-versa.
Um dos componentes mais interessantes mostrado na captura de tela acima é a API de chamada do WFP (Windows Filtering Platform). Se aumentarmos o zoom, pode parecer algo assim:
Osdesenvolvedoressãolivresparaconectarseusprópriosmódulosnoslocaisapropriadosdessapilha.Porexemplo,osprodutosantivírusnormalmenteusamum"driver de filtro" que se conecta a esse modelo e inspeciona o tráfego de rede ou fornece recursos de firewall. O serviço do Firewall do Windows também se encaixa obviamente nesse modelo.
Se você quisesse escrever um aplicativo que registrasse o tráfego da rede, como o Wireshark, a maneira apropriada de fazer isso seria usar um driver próprio e inseri-lo na pilha o mais baixo possível para que ele pudesse detectar pacotes de rede antes que seu módulo de firewall tenha a chance de descartá-los.
Portanto, há muitos "drivers" envolvidos nesse processo. Muitos tipos diferentes de drivers também. Além disso, outras formas de entrada / saída no sistema, como leituras e gravações de unidades de disco rígido, seguem modelos muito semelhantes.
Uma outra nota - os textos explicativos do WFP não são a única maneira de se insinuar na pilha da rede. O WinPCap, por exemplo, interage com o NDIS diretamente com um driver, o que significa que ele tem a chance de interceptar o tráfego antes que qualquer filtragem tenha ocorrido.
Referências: