Inserisci Infobox

Il protocollo CIFS/SMB

Common Internet File System / Server Message Block

Fondamenti di NetBios
Autore: al - Ultimo Aggiornamento: 2006-02-28 14:31:06 - Data di creazione: 2003-03-24 17:12:34
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Quando si parla di NetBios, NetBEUI e SMB si rischia spesso di far confusione fra protocolli, livelli di applicazione, definizione e contesti. Non è un caso, questi sono argomenti di fatto anomali, nel mondo del networking, che si trascinano dietro due decenni di utilizzi in rete e relative implementazioni.
Cerchiamo di chiarire le cose a grandi linee, in modo da poter meglio individuare gli argomenti che ci interessano e contestualizzarli correttamente.

NetBios strettamente parlando più che un protocollo è un interfaccia di programmazione (API) fatta sviluppare da IBM nel 1983 per permettere a delle applicazioni di comunicare scambiandosi file e messaggi sui PC network del tempo, che avevano un basso numero di host e non prevedevano ancora l'uso del protocollo IP (già presente ma usato più su WAN che in LAN) per le comunicazioni di rete.
Con l'introduzione di Token Ring, IBM nel 1985 definì delle estensioni a NetBios (NetBIOS Extended User Interface NetBEUI) che permettevano di appoggiarsi ad un data-link 802.2 (Token Ring o Ethernet).
Microsoft ha iniziato ad usare NetBEUI come protocollo di rete su Windows for Workgroup (Windows 3.1) e poi su tutte le versioni successive ma, al contempo, con la diffusione di Novell IPX e di IP, si è iniziato a veicolare NetBios anche su IPX e IP, oltre che su altri protocolli.
E' quindi possibile trovare NetBios (tipicamente proposto come protocollo a livello di sessione) nella sua incarnazione originaria, come NetBIOS Frames Protocol (NBF) detto anche semplicemente NetBios o NetBEUI, che copre i livelli di network e trasporto, oppure incapsulato su IPX o TCP/IP con questi ultimi a gestire il network e transport layer e NetBios posizionato come session layer.
Il protocollo Server Message Block (SMB) e il suo derivato Common Internet File System (CIFS) agiscono a livello applicativo, direttamente su NetBEUI, NetBios su IPX o NetBios su IP (chiamato anche NBT o NetBT), CIFS, invece, nelle sue recenti versioni può anche essere trasportato direttamente dal TCP/IP, senza layer NetBios intermedio.

Caratteristiche di NetBios
L'indirizzamento di NetBios è flat, basato sul semplice nome di un host (generalmente fino a 15 caratteri) e senza elementi gerarchici (come il DNS) che di fatto lo rendono inadatto per gestire il routing fra network diversi. Il nome NetBios è lo stesso che viene utilizzato dai procotolli superiori come SMB/CIFS.  
Per impedire che due host nella stessa rete abbiamo lo stesso nome viene utilizzato il protocollo Name Management Protocol (NMP), tramite il quale, a colpi di broadcast, un host annuncia la sua presenza in rete e avverte quando un nuovo host con lo stesso nome prova ad apparire.
Nella comunicazione fra host si usano lo User Datagram Protocol (UDP, diverso dall'UDP usato su IP), unreliable e basato su datagrammi fino a 512 byte e il Session Management Protocol (SMP), bidirenzionale, reliable e basato su sessioni che vengono stabilite fra due host. Meccanismi di controllo e di monitoring vengono gestiti dal Diagnostic and Monitoring Protocol (DMP).
Attualmente la forma maggiormente utilizzata è quella di NetBios incapsulato su TCP/IP (NetBios over TCP/IP o NBT). Questo standard è definito nelle RFC 1001 e RFC 1002 dove si affrontano le problematiche relative all'associazione di un nome di host ad un indirizzo IP (broadcast o server di nomi centralizzato) e i metodi di comunicazione (a datagrammi o a sessioni).
Le porte utilizzate per questi servizi sono:
netbios-ns      137/udp                         # NETBIOS Name Service
netbios-dgm     138/udp                         # NETBIOS Datagram Service
netbios-ssn     139/tcp                         # NETBIOS Session Service

Gestione dei nomi su NetBios
I nomi di host di NetBios su TCP/IP (che coincidono con i nomi SMB) possono essere registrati (annunciati) e risolti (trovati) sul network locale sia tramite broadcast che tramite un server di nomi centralizzato (NBNS NetBios Name Server, su sistemi Windows l'implementazione di un NBNS è il WINS server) che risulta, soprattutto su reti affollate, molto più efficace.
A seconda di come un host è configurato per gestire i nomi assume un tipo di nodo diverso:
b-node - Host che usa solo broadcast per la risoluzione e la registrazione degli host name.
p-node - Host che usa un server centrale (comunicazione point-to-point) per risoluzione e registrazione
m-node - Host che usa broadcast per la registrazione e la risoluzione, inoltre se porta a termine con successo una registrazione lo notifica ad un server NBNS, che viene usato anche quando la risoluzione via broadcast non ha successo.
h-node (hybrid) - Host che usa un server NBNS per risoluzione e registrazione dei nomi e, nel caso in cui il server NBNS non sia disponibile utilizza i broadcast. Questa modalità è stata introdotta da Microsoft, non appare nelle RFC 1001 e 1002.
Il tipo di nodo, su Windows, è visibile nell'output del comando ipconfig /all dove si parla di NodeType

I nomi possono essere lunghi 15 caratteri (byte) e contenere caratteri alfanumerici standard ( a-z, A-Z, 0-9, ! @ # $ % ^ & ( ) - ' ). Il sedicesimo e ultimo byte indica il tipo di risorsa, a seconda del valore esadecimale indicato corrisponde una diversa risorsa, alcuni esempi:
00 - Normale workstation
03 - Servizio di messaggistica (WinPopup)
1B - Domain Master Browser
20 - Fileserver
NetBios inoltre prevede il concetto di gruppo (i Workgroup in ambiente Windows).

Principi di SMB
SMB è un protocollo di livello applicativo utilizzato per la condivisione di directory fra computer, la stampa via rete e lo scambio di file e messaggi. Si basa su una struttura client-server ed ha una logica di tipo request-response. Dalla sua introduzione originaria ha subito varie modifiche e varianti che modificano e aggiungono nuovi SMB (Server Message Blocks, di fatto i "comandi" utilizzabili). Su Windows 95 e NT per esempio viene utilizzata la variante NT LM 0.12, che viene supportata, fra gli altri, anche da Samba, un implementazione OpenSource del protocollo che è utilizzabile su gran parte degli Unix in circolazione.

L'implementazione Windows di SMB
Autore: al - Ultimo Aggiornamento: 2003-03-25 16:09:46 - Data di creazione: 2003-03-25 16:09:46
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Microsoft utilizza NetBios e SMB come protocolli di rete per condividere risorse su Windows fin da Windows 3.1. Rispetto alle versioni esistenti di questi protocolli ha introdotto alcune estensioni proprietarie:

- Domini Windows
- Browsing
- Server WINS

I Domini Windows
Fondamentalmente un dominio Windows è un workgroup con un server che agisce come Domain Controller con funzioni di autenticazione centralizzata per l'accesso alle risorse (file, stampanti, login sul sistema...) da parte tutti gli host che fanno parte del dominio.
Vengono usati protocolli differenti per Windows 95/98, Windows NT e Windows 2000 (dove il concetto di dominio viene ulteriormente allargato con le Active Directory).
Il Primary Domain Controller (PDC) è il server che mantiene un database di tutte le password (SAM): quando un client cerca di accedere alle risorse di un server, quest'ultimo verifica sul PDC se login e password fornite sono valide. Se questo accade al client viene permesso l'accesso alle risorse richieste e fornito un token di autenticazione con cui automaticamente riesce ad accedere ad altre risorse in rete accessibili dalla stessa login.
Il database delle password viene automaticamente copiato ad uno o più Backup Domain Controller (BDC) che possono  essere utilizzati per autenticare i clinet nel caso in cui i PDC risulti inaccessibile.

Browsing
Per rendere più rapida l'individuazione degli host e delle risorse in una rete locale, Microsoft ha introdotto il Local Master Browser un computer che ha il ruolo di mantenere la lista degli host in rete (browse list) e che fa da riferimento per tutte le richieste e gli aggiornamenti da parte delle altre macchine in rete.
Praticamente ogni macchina Windows può agire da Local Master Browser o da Backup Browser (host che riceve la browse list da un Master Browser e viene utilizzata in caso di inagibilità di quest'ultimo). Queste funzionalità vengono definite automaticamente dagli host NetBios in una rete locale tramite una procedura chiamata elezione in cui tutti gli host partecipano tramite broadcast. A seconda del sistema operativo, della versione di protocollo utilizzata, del tempo di uptime nella rete e del nome dell'host viene automaticamente deciso chi deve operare come Master Browser e questo rimane tale fino a quando resta connesso o un nuovo host con migliori credenziali si aggiunge alla rete.
Quando si clicca, in Windows, su Risorse di Rete di fatto si ottiene dal Master Browser la browse list degli host in rete (notare che questa potrebbe essere non perfettamente aggiornata, con alcuni host che risultano presenti anche se magari sono spenti o disconnessi e non hanno avuto modo di comunicarlo al Master Browser), quando si clicca sul singolo host si ottiene l'elenco delle sue risorse condivise.

Server WINS
Il Windows Internet Name Service (WINS) è l'implementazione Microsoft di un NetBios Name Server (NBNS) che ha la funzione di mantenere la lista dei nomi NetBios degli host in rete e dei relativi indirizzi IP. Ovviamente questo serve quando si usa NetBios over TCP/IP ed è una soluzione consigliabile quando si ha una rete medio grande o si devono connettere workgroup presenti su network IP differenti.
Anche in questo caso, oltre ad un Primary Wins Server possono esistere uno o pià Secondary Wins Server con funzioni di ridondanza e backup.

Privacy Policy