Jeff Farland es absolutamente correcta, así que si estás buscando una respuesta breve y rápida, en mi opinión es.
Sin embargo, me gusta saber los detalles exactos (por ejemplo, cómo se hace exactamente) porque soy así y esto es un poco demasiado largo para un comentario, así que me centraré en los firewalls basados en software de Windows, ya que ahí es donde es más probable encontrar firewalls de aplicaciones de software comerciales. Muchos de estos enlaces son directos a la documentación del desarrollador y se vuelven bastante técnicos, así que si ese no es el problema del lector, me disculpo, espero que sea una introducción útil para alguien.
Básicamente, Windows en realidad tiene todo un conjunto de funciones del sistema operativo que le permite filtrar, denegar solicitudes, inyectar solicitudes, etc. La documentación más sencilla de encontrar sobre el tema comienza con administrador de filtrado de archivos utilizado por muchos productos antivirus. Hay un brillante diagrama que muestra exactamente cómo funciona cada solicitud. Esencialmente, hay una pila de controladores, parte de la cual incluye una serie de minifiltros que se ordenan por orden de prioridad y se aplican a la solicitud. Esto es probablemente lo que hace su antivirus promedio y es por eso que muchos productos antivirus no pueden instalarse simultáneamente; interfieren entre sí. Aunque esto es para actividad basada en archivos, entonces:
Para los cortafuegos, en el futuro, lo más sensato es hablar sobre la Plataforma de filtrado de Windows , uno de los muchos cambios de seguridad que se produjeron en Vista. Un enlace directo de interés es la parte que explica las varias formas en que se podrían implementar los firewalls de nivel de aplicación En versiones anteriores de windows. Básicamente, fue muy complicado y, de nuevo, por qué dos firewalls no solo pueden causar colisiones, sino también la inestabilidad real del sistema. Aparte de eso, muchos proveedores estaban (están) escribiendo cortafuegos.
La forma realmente sencilla de explicar WPF es esta: tienes dos opciones disponibles para ti. El kernel (el mismo Windows) le proporciona un cierto conjunto de filtros predeterminados que puede aplicar (que son bastante flexibles en cuanto a las muestras). Si desea hacer algo más, debe crear un controlador de llamada que sea esencialmente la misma idea que los minifiltros anteriores. En el modo de controlador de llamada, puede inspeccionar el contenido del paquete y hacer lo que quiera con base en esa información.
El motivo para introducir este cambio es la introducción de Protección de parches del kernel , un mecanismo para evitar que los controladores modifiquen el núcleo de Windows en formas que no desea. Junto con eso, es totalmente posible realizar una gran cantidad de filtrado sin siquiera escribir controladores, consulte este código de muestra . Y si está interesado en hacer uno, o simplemente preguntándose dónde encontré todo esto, aquí están los pasos para aprenda sobre cómo construir un producto basado en WFP desde MSDN.
Así que, básicamente, lo que Jeff dijo, realmente. Obviamente, Linux y Mac OS X son diferentes de nuevo; He intentado concentrarme en el sistema operativo con el que la mayoría de la gente usará un producto como este.
Por cierto; Jeff mencionó Process Explorer. Las utilidades de sysinternals utilizan estas y otras API de filtrado para proporcionarle la información que ve allí en estos días.