Sun's NFS protocol provides transparent remote access to shared
file systems across networks. The NFS protocol is designed to be
machine, operating system, network architecture, and transport
protocol independent. This independence is achieved through the
use of Remote Procedure Call (RPC) primitives built on top of an
eXternal Data Representation (XDR). Implementations of the NFS
version 2 protocol exist for a variety of machines, from personal
computers to supercomputers. The initial version of the NFS
protocol is specified in the Network File System Protocol
Specification [RFC1094]. A description of the initial
implementation can be found in [Sandberg].
The supporting MOUNT protocol performs the operating
system-specific functions that allow clients to attach remote
directory trees to a point within the local file system. The
mount process also allows the server to grant remote access
privileges to a restricted set of clients via export control.
The Lock Manager provides support for file locking when used in
the NFS environment. The Network Lock Manager (NLM) protocol
isolates the inherently stateful aspects of file locking into a
A complete description of the above protocols and their
implementation is to be found in [X/OpenNFS].
The purpose of this document is to:
Specify the NFS version 3 protocol.
Describe semantics of the protocol through annotation
and description of intended implementation.
Specify the MOUNT version 3 protocol.
Briefly describe the changes between the NLM version 3
protocol and the NLM version 4 protocol.
The normative text is the description of the RPC procedures and
arguments and results, which defines the over-the-wire protocol,
and the semantics of those procedures. The material describing
implementation practice aids the understanding of the protocol
specification and describes some possible implementation issues
and solutions. It is not possible to describe all implementations
and the UNIX operating system implementation of the NFS version 3
protocol is most often used to provide examples. Given that, the
implementation discussion does not bear the authority of the
description of the over-the-wire protocol itself.