Server Message Block

Da Wikipedia, l'enciclopedia libera.

Server Message Block (SMB) è un protocollo usato principalmente per condividere files, stampanti, porte seriali e comunicazioni di varia natura tra diversi nodi di una rete. Esso include anche un meccanismo di comunicazione tra processi autenticata. È soprattutto usato dai sistemi Microsoft Windows.

Storia[modifica | modifica sorgente]

SMB è stato inventato da Barry Feigenbaum presso la IBM, ma la versione più largamente usata è stata pesantemente modificata da Microsoft.

Originariamente, il protocollo venne studiato per operare al di sopra di NetBIOS, sebbene possa agire anche direttamente su TCP/IP a partire dall'implementazione in Windows 2000.

Nel momento in cui Sun Microsystems annunciò il WebNFS, Microsoft lanciò l'iniziativa, nel 1998, di chiamare SMB Common Internet File System (CIFS) ed incluse diverse migliorie, compreso il supporto ai link simbolici, la gestione di file di grosse dimensioni e la possibilità di operare senza alcun supporto di NetBIOS.

A causa dell'importanza del protocollo SMB, necessario all'interoperabilità con la piattaforma Microsoft Windows, nacque il progetto Samba, che rappresenta una implementazione free usata per garantire compatibilità SMB con sistemi operativi non Microsoft.

Implementazione[modifica | modifica sorgente]

Approccio Client-Server[modifica | modifica sorgente]

SMB agisce con un approccio client-server, per cui un client avanza le sue richieste ed il server risponde opportunamente. Una sezione del protocollo è dedicata specificatamente all'accesso al file system, in modo che i client possano fare richieste al file server, ma ci sono altre sezioni specializzate per le comunicazioni tra processi. SMB è stato ottimizzato per l'uso in rete locale, ma può essere usato anche attraverso Internet.

I server SMB rendono il loro filesystem e le altre risorse disponibili ai client sulla rete. I client possono avere i loro propri dischi che non sono pubblicamente accessibili ed accedere comunque al filesystem condiviso e alle stampanti del server, e questa è la modalità primaria di utilizzo del protocollo.

Prestazioni[modifica | modifica sorgente]

Spesso SMB viene considerato un protocollo che richiede un pesante utilizzo di banda in quanto ogni client notifica la sua presenza con un broadcast all'intera rete. In realtà SMB non usa broadcast, esso viene usato da NetBIOS per localizzare i server disponibili ad intervalli periodici. Ciò è accettabile in reti con meno di 20 hosts, ma il traffico dovuto ai broadcast può creare problemi con l'aumentare del numero di macchine connesse. Tale problema può essere mitigato sfruttando WINS, un protocollo di localizzazione dei servizi: usa un sistema di registrazione e centralizzazione delle richieste di servizi più avanzato, ma implica una crescita nella complessità di manutenzione della rete.

Modifiche di Microsoft[modifica | modifica sorgente]

Con l'obiettivo di semplificare l'interfaccia di utilizzo del protocollo, Microsoft ha aggiunto diverse caratteristiche alla sua implementazione di SMB rispetto alla concezione originaria: ad esempio, la seconda versione di NTLM venne sviluppata perché la prima (derivata dalla originaria specifica di SMB) utilizzava la cifratura Data Encryption Standard (DES) in maniera troppo complessa.

Punti di Interesse[modifica | modifica sorgente]

Il meccanismo di comunicazione tra processi incluso in SMB merita una menzione speciale. Grazie ad esso sono fornite le named pipes, con cui è implementato il meccanismo di autenticazione e l'implementazione Microsoft del DCE/RPC (conosciuta come MSRPC).

SMB è anche usato come fondamento del Microsoft Distributed File System.

Versioni ed Implementazioni Alternative[modifica | modifica sorgente]

  • Samba, è una implementazione free del protocollo SMB e dell'estensione Microsoft; include un server e un client a riga di comando
  • Samba TNG è un fork di Samba
  • Linux include due implementazioni di client SMB che agiscono per mezzo del VFS, fornendo accesso al server SMB attraverso la API standard
  • FreeBSD, NetBSD e Mac OS X includono implementazioni di client SMB per i rispettivi VFS
  • Advanced Server for Unix (AS/U) è il port del codice del server SMB incluso in Windows NT 3.51 per Unix, venduto da AT&T ai maggiori distributori di Unix
  • Cascade (meglio noto come PC-Netlink), di Sun Microsystem, è il port di AS/U: Sun impiego' due anni per rendere il codice usabile, a causa della scarsa qualità del porting originario
  • Veritas Software ha implementato SMB
  • Santa Cruz Operation ha a sua volta portato lo AS/U e sviluppato VisionFS, una implementazione di SMB non dipendente da quella Microsoft e sviluppata facendo riferimento a Samba
  • Network Appliance ha la sua implementazione di server SMB
  • Sharity, di Objective Development, è un client SMB per Unix
  • JCIFS è una implementazione SMB in Java
  • RTSMB è una implementazione SMB in ANSI C completamente scritta da zero, indipendente dall'implementazione Microsoft e Samba, e destinata ai sistemi embedded
  • CIFS9000, di HP, è una implementazione SMB basata su Samba 2.2 prodotta per il proprio sistema operativo HP-UX