Figure: NFS("Network File System")
El protocolo NFS("Network File System") de Sun permite compartir sistemas de ficheros en una red. El protocolo NFS está diseñado para ser independiente de la máquina, el sistema operativo y el protocolo de transporte. Esto es posible porque se implementa sobre RPC(ver RPC("Remote Procedure Call")). RPC establece la independencia de la máquina usando XDR("External Data Representation").
SUN-NFS es un protocolo propuesto como estándar. Su status es electivo. La especificación actual del NFS de Sun se puede encontrar en el RFC 1094 - especificación de NFS:. Este RFC documenta la versión 2 de NFS. Aunque el RFC menciona a la versión 3 de NFS, nadie ha enviado aún un nuevo RFC ni un borrador discutiendo una posible especificación de la versión 3.
NFS permite a los usuarios autorizado acceder a ficheros localizados en sistemas remotos como si fueran locales. Dos protocolos sirven a este propósito:
Tanto el protocolo Mount como el NFS son aplicaciones de RPC(concepto de llamador/servidor) y son transportados por UDP.
El protocolo Mount es una aplicación de RPC integrada con NFS. Su número de programa es el 100005. El protocolo Mount es transportado por UDP. Mount es un servidor RPC y proporciona un total de seis procedimientos:
La llamada a MOUNT devuelve un descriptor de fichero que apunta al directorio. Este descriptor es un campo de 32 bytes, que el cliente usará posteriormente para acceder a los ficheros. Los descriptores son una parte fundamental de NFS ya que a través de ellos se referenciará cada fichero y directorio. Algunas implementaciones encriptan los descriptores por razones de seguridad(por ejemplo, el NFS de VM puede usar opcionalmente programas de encriptación para esto).
El comando MOUNT aporta la interfaz a esta aplicación de RPC. El usuario ejecuta el comando MOUNT para localizar el sistema de ficheros remoto en su propia jerarquía de ficheros.
NFS es la aplicación de RPC que suministra funciones de E/S sobre ficheros en un host remoto, una vez que ha sido solicitado mediante el comando MOUNT. Tiene el número de programa 100003 y a veces usa el puerto IP 2049. Como este no es un número de puerto asignado oficialmente, y ya existen diversas versiones de NFS(y de MOUNT) lo números de puerto pueden cambiar. Es aconsejable dirigirse al Portmap(número de puerto 111) (ver Portmap o Portmapper) para obtener los números de puerto para MOUNT y NFS. El protocolo NFS es transportado por UDP.
El programa NFS soporta 18 procedimientos para todas las operaciones básicas de E/S, como por ejemplo:
Además hay otras funciones soportadas.
Se correponden con la mayoría de primitivas de E/S usadas en el sistema operativo local para acceder a ficheros locales. De hecho, una vez que se ha montado el directorio remoto, el sistema operativo local tiene que "reencaminar" las primitivas de E/S al host remoto. Esto hace que todas las operaciones de E/S sobre ficheros tengan el mismo aspecto, independientemente de si el fichero es local o remoto. El usuario puede trabajar con los comandos y programas habituales en ambos tipos de ficheros; en otras palabras, el protocolo NFS es completamente transparente al usuario. Ver Figura - E/S de ficheros en NFS.
Figura: E/S de ficheros en NFS - Interceptada a nivel de sistema operativo, haciéndose por tanto transparente al usuario.
NFS asume un sistema de ficheros jerárquico(directorios). Los ficheros son secuencias de bytes sin estructura y carentes de significado inherente: es decir, todos lo ficheros se ven como una secuencia contigua de bytes, sin ninguna estructura de registros.
Con NFS, todas las operaciones sobre ficheros son síncronas. Esto significa que la operación sólo retorna cuando el servidor ha completado todo el trabajo asociado para esa operación. En caso de una solicitud de escritura, el servidor escribirá físicamente los datos en el disco, y si es necesario, actualizará a estructura de directorios, antes de devolver una respuesta al cliente. Esto garantiza la integridad de los ficheros.
NFS también especifica que los servidores no deberían estar asociados a un cliente determinado. Es decir, un servidor no necesita mantener información extra de ninguno de sus clientes para funcionar correctamente. En caso de un fallo del servidor, los clientes sólo tienen que reintentar la solicitud hasta que el servidor responda, sin tener que repetir la operación de mount.
Tabla de contenidos
El sistema de autentificación y autorización Kerberos