Un controlador de interfaz es un pequeño programa de computadora, o un conjunto de programas, que actúa como enlace entre el software de la computadora y el hardware de una tarjeta de interfaz de red (NIC). Los fabricantes y programadores de NIC utilizan una interfaz de programación de aplicaciones (API) específica conocida como especificación de interfaz de controlador de red (NDIS). Establece todas las reglas necesarias para que un programa de computadora, como un sistema operativo, interactúe con una NIC. En realidad, hay varios tipos de controladores de interfaz descritos en el NDIS pero, en esencia, el trabajo principal del NDIS es lograr que un par de capas del modelo de interconexión de sistemas abiertos (OSI) cooperen entre sí.
El modelo OSI se compone de siete capas, algunas de las cuales tienen múltiples subcapas. La primera capa es la capa física, que se ocupa de las especificaciones físicas de una NIC, como un dongle de bus serie universal (USB), una tarjeta Ethernet, una tarjeta adaptadora inalámbrica, etc. La segunda y tercera capas del modelo OSI son donde ocurre toda la magia NDIS. La segunda capa es la capa de enlace de datos y consta de dos subcapas, la superior denominada control de enlace lógico (LLC) y la inferior denominada control de acceso a medios (MAC). Un controlador de dispositivo maneja la subcapa MAC, mientras que el controlador de interfaz maneja la subcapa LLC, proporcionando una interfaz entre esta y la tercera capa del modelo OSI, la capa de red.
Trabajando como intermediario, un NDIS esencialmente envuelve toda la complejidad confusa del hardware de una NIC y proporciona un conjunto de funciones para su interacción con los protocolos de red necesarios para la comunicación. Un programador simplemente tiene que seguir las reglas establecidas en el NDIS para crear los controladores de interfaz reales. En el nivel de hardware inferior, estos controladores se conocen como controladores de minipuerto, mientras que los controladores de nivel superior se escriben utilizando la API NDIS para manejar protocolos de red centrales como el protocolo de Internet (IP), la seguridad del protocolo de Internet (IPsec), el protocolo de mensajes de control de Internet. (ICMP) e Intercambio de paquetes entre redes (IPX), entre otros.
Cuando la comunicación de red ocurre a través de una NIC, los bits de datos son recibidos primero por el dispositivo físico y luego, a través de la arquitectura del modelo OSI, los datos se mueven desde el hardware hacia las diferentes capas del modelo OSI hasta que se presentan en un formato más fácilmente comprensible por el usuario. Por tanto, cada capa del modelo proporciona servicios a sus vecinos. Los datos abandonan la primera capa, la capa física, y llegan al MAC de la subcapa inferior en la segunda capa, donde el controlador del dispositivo los pasa a la LLC. Los controladores de protocolo de la LLC luego lo mueven a la capa de red.
Otro tipo de controlador de interfaz es el controlador intermedio, que actúa como una especie de carcasa, que contiene interfaces para controladores de minipuerto y controladores de protocolo de red. Estos controladores intermedios se pueden encadenar juntos y proporcionar la capacidad para que el controlador de interfaz controle el tráfico que recibe la NIC. Los controladores intermedios son útiles para diversas necesidades, como el filtrado de datos, el equilibrio de carga, la supervisión del tráfico de la red y la recopilación de información estadística. También funcionan bien como traductores entre conductores de transporte más antiguos y un conductor de minipuerto que habla en un formato de medios que el conductor más viejo no puede entender.
El NDIS fue diseñado originalmente por Microsoft®, trabajando en conjunto con 3Com®, por lo que muchos fabricantes de hardware escriben sus controladores para admitir primero los sistemas operativos de Microsoft®. Como resultado, el NDIS está limitado a arquitecturas de hardware de computadora basadas en la familia Intel® 80386 de procesadores de 32 o 64 bits. El movimiento del software libre también ha desarrollado un programa, llamado NDISWrapper, que es capaz de cargar controladores de interfaz desarrollados originalmente para Microsoft® Windows® para su uso con sistemas operativos gratuitos similares a Unix® como Linux®. Los usuarios de los derivados gratuitos de Berkley Software Distributions (BSD), como FreeBSD® y NetBSD®, también encontraron la capacidad de utilizar controladores de interfaz de Windows® mediante el uso de software desarrollado por un proyecto conocido como Project Evil. Las limitaciones de hardware x86 de NDIS llevaron a otro proyecto, desarrollado por Apple y Novell®, llamado la interfaz de enlace de datos abierta (ODI), que proporcionaba muchas de las mismas reglas y funcionalidad que un NDIS pero con un enfoque en Apple® Macintosh &; y sistemas Novell NetWare®.