Un driver di interfaccia è un piccolo programma per computer, o un insieme di programmi, che funge da collegamento tra il software del computer e l’hardware di una scheda di interfaccia di rete (NIC). I produttori e i programmatori di NIC utilizzano un’interfaccia di programmazione dell’applicazione (API) specifica nota come specifica dell’interfaccia del driver di rete (NDIS). Stabilisce tutte le regole necessarie affinché un programma per computer, come un sistema operativo, interagisca con una NIC. Esistono in realtà diversi tipi di driver di interfaccia descritti in NDIS ma, in sostanza, il compito principale di NDIS è far sì che un paio di livelli del modello di interconnessione dei sistemi aperti (OSI) cooperino tra loro.
Il modello OSI è composto da sette livelli, alcuni dei quali hanno più sottolivelli. Il primo livello è il livello fisico, che si occupa delle specifiche fisiche per una NIC come un dongle USB (Universal Serial Bus), una scheda Ethernet, una scheda adattatore wireless e così via. Il secondo e il terzo livello del modello OSI sono dove avviene tutta la magia NDIS. Il secondo livello è il livello di collegamento dati ed è costituito da due sottolivelli, quello superiore denominato controllo del collegamento logico (LLC) e quello inferiore denominato controllo di accesso ai media (MAC). Un driver di dispositivo gestisce il sottolivello MAC, mentre il driver di interfaccia gestisce il sottolivello LLC, fornendo un’interfaccia tra questo e il terzo livello del modello OSI, il livello di rete.
Funzionando come intermediario, un NDIS essenzialmente racchiude tutta la confusa complessità dell’hardware di una NIC e fornisce una serie di funzioni per la sua interazione con i protocolli di rete necessari per la comunicazione. Un programmatore deve semplicemente seguire le regole stabilite nel NDIS per creare i driver di interfaccia effettivi. Al livello hardware inferiore, questi driver sono noti come driver miniport, mentre i driver di livello superiore sono scritti utilizzando l’API NDIS per gestire i protocolli di rete principali come il protocollo Internet (IP), la protezione del protocollo Internet (IPsec), il protocollo dei messaggi di controllo Internet (ICMP) e Internetwork Packet Exchange (IPX), tra gli altri.
Quando la comunicazione di rete avviene tramite una NIC, i bit di dati vengono prima ricevuti dal dispositivo fisico e quindi, attraverso l’architettura del modello OSI, i dati vengono spostati dall’hardware ai diversi livelli del modello OSI fino a quando non vengono presentati in un formato più facilmente comprensibile per l’utente. Pertanto, ogni livello del modello fornisce servizi per i suoi vicini. I dati lasciano il primo livello, il livello fisico, e raggiungono il MAC del sottolivello inferiore nel secondo livello, dove il driver del dispositivo li passa alla LLC. I driver di protocollo di LLC lo spostano quindi al livello di rete.
Un altro tipo di driver di interfaccia è il driver intermedio, che agisce come una sorta di alloggiamento, contenente interfacce sia per i driver miniport che per i driver del protocollo di rete. Questi driver intermedi possono quindi essere concatenati e fornire la possibilità al driver di interfaccia di controllare il traffico ricevuto dalla NIC. I driver intermedi sono utili per varie esigenze, come il filtraggio dei dati, il bilanciamento del carico, il monitoraggio del traffico di rete e la raccolta di informazioni statistiche. Funzionano bene anche come traduttore tra i conducenti di trasporto più anziani e un conducente di miniport che parla con un formato multimediale che il conducente più anziano non può capire.
Il NDIS è stato originariamente ideato da Microsoft®, in collaborazione con 3Com®, quindi molti produttori di hardware scrivono i loro driver per supportare prima i sistemi operativi Microsoft®. Di conseguenza, NDIS è limitato alle architetture hardware dei computer basate sulla famiglia Intel® 80386 di processori a 32 o 64 bit. Il movimento del software libero ha anche sviluppato un programma, chiamato NDISWrapper, che è in grado di caricare driver di interfaccia originariamente sviluppati per Microsoft® Windows® per l’utilizzo con sistemi operativi gratuiti simili a Unix® come Linux®. Gli utenti dei derivati gratuiti di Berkley Software Distributions (BSD), come FreeBSD® e NetBSD®, hanno anche scoperto la possibilità di utilizzare i driver di interfaccia di Windows® attraverso l’uso di software sviluppato da un progetto noto come Project Evil. Le limitazioni hardware x86 di NDIS hanno portato a un altro progetto, sviluppato da Apple e Novell®, chiamato ODI (open data-link interface), che ha fornito molte delle stesse regole e funzionalità di un NDIS ma con un focus su Apple® Macintosh&; e sistemi Novell NetWare®.