La figura mostra le due architetture proposte da Windows per implementare le funzionalità di rete
OSI | NETBEUI | NETBIOS OVER TCP | TCP/IP |
APPLICATION | SMB | SMB |
APPLICATION |
PRESENTATION | |||
SESSION | NBF | NETBT | |
TRANSPORT | TCP,UDP | TCP, UDP | |
NETWORK | IP | IP | |
DATA LINK | DATA LINK | DATA LINK | DATA LINK |
PHISYCAL | PHISYCAL | PHISYCAL | PHISYCAL |
In entrambe, il livello Application è occupato da SMB (Server Message Block), il protocollo che permette la condivisione di file, stampanti, porte seriali e altri meccanismi di comunicazione.
In realtà SMB è il nome del protocollo originario, creato da IBM verso la metà degli anni 80 e adottato oltre che da OS/2 (il sistema operativo di IBM ), anche da UNIX e Windows. Col passare degli anni questi sistemi operativi hanno implementato numerose varianti SMB variamente denominate. Per es. la variante (server) per NT è NT LM 0.12 (almeno l'ultima di cui sono a conoscenza ..) quella per UNIX è Samba etc..
SMB un protocollo client-server : il client SMB fa una richiesta, per es di accedere ad una cartella condivisa, il server SMB valuta la richiesta e invia una " risposta" positiva (il client può accedere alla cartella) o negativa. Le richieste e le risposte sono implementate attraverso scambi di messaggi opportunamente codificati. SMB offre due modalità di funzionamento: share e user.
In modalità share (WORKGROUP), utilizzata nelle reti Windows 9x/2000 ME, ad ogni risorsa
condivisa viene associata una password (opzionale): la risorsa può essere usata da chiunque
purché conosca la password.
In modalità user (DOMAIN) utilizzata nelle reti NT, alla risorsa vengono associati una password e una lista di uno o più utenti (user name): l'accesso alla risorsa viene concesso solo a utenti autorizzati da un amministratore della rete.
La connessione di un client SMB prevede una fase preliminare di negoziazione che viene avviata mediante un messaggio SMB "negprot" con la quale viene deciso quale variante di SMB usare.
La fase successiva viene chiamata autenticazione. Il client invia al server SMB un nome utente e una password. Il messaggio SMB in questo caso si chiama "sesssetupX". Se va tutto bene il server invia un identificativo al client, l'UID, che verrà poi utilizzato dal client per le successive richieste .
A questo punto il client può inviare la richiesta di una risorsa condivisa. Il messaggio SMB è "tconX" . Il server risponde con un TID, un numero che identifica la risorsa e che verrà utilizzato dal client per gli accessi successivi a quella risorsa.