NFS e' stato introdotto dalla Sun Corp. come parte dell'offerta ONC. E' basato sul protocollo UDP a livello trasporto, e sui protocolli soprastanti RPC ed XDR. E' in realta' composto da tutta una serie di protocolli cooperanti:
Il server NFS si chiama tipicamente nfsd. Nella versione Berkeley di UNIX, quando parte legge il file di configurazione /etc/exports che contiene la lista di directories da condividere in rete.
Un esempio di questo file e:
/cdrom /home zork /pub (ro) /usr *.zorkil.com(ro) fred(rw)
In questo esempio la directory cdrom viene esportata a tutti i computer in rete, la directory /home al solo computer 'zork' con permessi di default, la directory /pub a tutti i computer ma in modalita' 'read only' (sola lettura), e la directory /usr a tutti i computer del dominio 'zorkil.com' in modo 'read only', mentre al computer 'fred' in modalita' 'read write' (lettura e scrittura).
Sia il file sopra residente per esempio sulla macchina alfa. Il client, per esempio, 'fred' puo' prendere in uso la directory '/cdrom' o '/usr' con il comando mount. Se 'fred' ha una directory locale /mnt per esempio, puo' dare il comando:
mount -t nfs alfa:/usr /mnt
Dopo questo comando tutti i file che si trovano fisicamnete sulla directory '/usr' della macchina 'alfa' saranno visibili alla macchina 'fred' nella directory locale '/mnt'.
Un altro computer, p.es. 'zeta.zorkil.com', avrebbe potuto montare tale directory in modo solo 'read only' col comando:
mount -t nfs -o ro alfa:/usr /mnt
Notare che la opzione -t nfs e' obbligatoria per specificare al comando 'mount' che non si tratta di un normale filesystem ma di una directory condivisa in NFS.
Il processo client che opera sui file condivisi in rete ha su tali files tutti i permessi normali definiti in UNIX, con una eccezione: un processo privilegiato locale del client (permessi di 'root') perde i privilegi quando opera su files remoti. Viene definito un apposito utente anonimo che ha i privilegi tipici di un utente generico.
NFS e' stato progettato per essere il piu' veloce possibile e per non mantenere alcuno stato di connessione: per questo e' basato su UDP e sul modello di procedure remota dello ONC RPC.
Il sistema operativo con a bordo NFS implementa uno strato di ridirezione a monte delle routines di gestione del file system locale, chiamato il Virtual File System. Ogni file e' rappresentato, non da un normale i-node ma da un v-node o 'i-node virtuale' il quale e' o un puntatore ad un i-node locale, o una struttura che mantiene riferimenti ad un computer remoto e corrispondente i-node su computer remoto.
L'operazione di un processo che gestisce un file e' trasparente. Il processo usa le normali 'system calls' per i file, solo che queste fanno riferimento a dei 'v-node'. Se il 'v-node' indica che il file e' remoto allora la chiamata di sistema locale viene impacchettata in una chiamata di procedura remota e inviata tramite la rete alla macchina server.
Il fatto che NFS non mantenga tabelle di stato lo rende molto resiliente ai crash del server o alle diminuzioni di prestazioni della rete.