Che cos'è un driver di interfaccia?
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 programmatori di schede di rete utilizzano una specifica API (Application Programming Interface) nota come specifica del driver di rete (NDIS). Stabilisce tutte le regole necessarie per un programma per computer, come un sistema operativo, per interagire con una scheda di rete. Esistono in realtà diversi tipi di driver di interfaccia descritti in NDIS ma, in sostanza, il compito principale di NDIS è di far cooperare tra loro due livelli del modello OSI (open systems interconection).
Il modello OSI è composto da sette layer, alcuni dei quali hanno più sub-layer. Il primo livello è il livello fisico, che si occupa delle specifiche fisiche di una scheda NIC come un dongle di bus seriale universale (USB), una scheda Ethernet, una scheda adattatore wireless e così via. Il secondo e il terzo strato del modello OSI sono i luoghi in cui avviene tutta la magia NDIS. Il secondo livello è il livello del collegamento dati ed è costituito da due livelli secondari, quello superiore denominato controllo del collegamento logico (LLC) e quello inferiore denominato controllo dell'accesso ai media (MAC). Un driver di dispositivo gestisce il sottostrato MAC, mentre il driver di interfaccia gestisce il sottostrato LLC, fornendo un'interfaccia tra esso e il terzo livello del modello OSI, il livello di rete.
Funzionando come intermediario, un NDIS essenzialmente racchiude tutta la complessità confusa dell'hardware di una scheda di rete 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 nell'NDIS per creare i driver di interfaccia effettivi. A 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 di base come il protocollo Internet (IP), la sicurezza 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 scheda 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 su diversi livelli del modello OSI fino a quando non vengono presentati in un formato più facilmente comprensibile dall'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 sottostrato inferiore nel secondo livello, dove il driver del dispositivo lo passa alla LLC. I driver di protocollo del LLC quindi lo spostano al livello di rete.
Un altro tipo di driver di interfaccia è il driver intermedio, che funge da contenitore, contenente interfacce sia per i driver miniport che per i driver di protocollo di rete. Questi driver intermedi possono quindi essere concatenati e fornire al driver dell'interfaccia la possibilità 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ù vecchi e un guidatore di miniport che parla con un formato multimediale che il guidatore più anziano non può capire.
L'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 del 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 i driver di interfaccia originariamente sviluppati per Microsoft® Windows® per l'uso con sistemi operativi gratuiti simili a Unix® come Linux®. Gli utenti dei derivati gratuiti Berkley Software Distributions (BSD), come FreeBSD® e NetBSD®, hanno anche scoperto la possibilità di utilizzare i driver dell'interfaccia 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 open data-link interface (ODI), che ha fornito le stesse regole e funzionalità di un NDIS ma con un focus su Apple® Macintosh &; e sistemi Novell NetWare®.