Estoy a punto de usar Wireshark para monitorear el tráfico en mi computadora con Windows . Mientras trabajaba en ello, me preguntaba cómo Wireshark logra capturar paquetes de red de bajo nivel antes de que Windows lo haga.
En primer lugar, una interfaz de red en mi NIC recibe un paquete. La NIC realiza algunas comprobaciones iniciales (CRC, dirección MAC correcta, ... etc.). Asumiendo que la verificación fue exitosa, la NIC reenvía el paquete. ¿Pero cómo y dónde?
Entiendo que los controladores son el pegamento entre la NIC y el sistema operativo o cualquier otra aplicación. Además, supongo que hay un controlador separado para Windows y Wireshark ( WinPcap ?). De lo contrario, Wireshark no podría recibir tramas Ethernet . ¿Hay dos o más controladores NIC coexistiendo al mismo tiempo? ¿Cómo sabe la NIC, cuál usar?
fuente
Respuestas:
El modelo de E / S en Windows se basa en una pila de componentes. Los datos deben fluir a través de los diversos componentes de esa pila que existen entre la tarjeta de red física y la aplicación que consumirá los datos. A veces, esos diversos componentes inspeccionan los datos (un paquete TCP, por ejemplo) a medida que fluyen a través de la pila y, en función del contenido de ese paquete, los datos pueden alterarse o el paquete puede descartarse por completo.
Este es un modelo simplificado de la "pila de red" a través de la cual fluyen los paquetes para pasar de la aplicación al cable y viceversa.
Uno de los componentes más interesantes que se muestran en la captura de pantalla anterior es la API de llamadas del PMA (Plataforma de filtrado de Windows). Si nos acercamos a eso, podría verse más o menos así:
Los desarrolladores son libres de conectar sus propios módulos en los lugares apropiados de esta pila. Por ejemplo, los productos antivirus suelen utilizar un "controlador de filtro" que se conecta a este modelo e inspecciona el tráfico de red o proporciona capacidades de firewall. El servicio de Firewall de Windows también se ajusta obviamente a este modelo también.
Si desea escribir una aplicación que registre el tráfico de red, como Wireshark, entonces la forma adecuada de hacerlo sería utilizar un controlador propio e insertarlo en la pila lo más bajo posible para que pueda detectar paquetes de red antes de que su módulo de firewall tenga la oportunidad de soltarlos.
Así que hay muchos "controladores" involucrados en este proceso. Muchos tipos diferentes de controladores también. Además, otras formas de entrada / salida en el sistema, como las lecturas y escrituras del disco duro, siguen modelos muy similares.
Otra nota: las llamadas del PMA no son la única forma de insinuarse en la pila de la red. WinPCap como ejemplo, interactúa con NDIS directamente con un controlador, lo que significa que tiene la posibilidad de interceptar el tráfico antes de que se haya producido ningún filtrado.
Controladores NDIS
WinPCap
Referencias
Pila TCP / IP de próxima generación en Vista +
Arquitectura de plataforma de filtrado de Windows
fuente
Como dice la respuesta de Ryan Ries:
y esta es una descripción, en la documentación de WinPcap, de cómo funciona .
fuente