The Network File System

Sun (TM) NFS (TM) is one of the most widely used network file access systems. NFS uses RPC to provide the access primitives from client to server. Sun have devised their own RPC protocol, together with their own external data representation language called XDR. The NFS model of the world is of stateless Servers. Servers keep no track of whether any clients exist, or who they are if they do. Instead, client retry is relied on to provide reliability. The RPC is an At Most Once time, so the defined operations are all idempotent, as far as possible (i.e. assuming the actual file data doesn't change, repeating the operation produces the same client and server state change. Since NFS is usually used for access from or to Unix systems, this means that there is a level of indirection, since the Unix file access primitives are by no means idempotent (a <#2410#> read<#2410#> operation, moves an implicit pointer through a file, while an NFS read references an absolute offset in a file). The model of the actual filesystem is that of Unix. The name space is a hierarchy which consists of directories or files. Directories are everything except the leaf nodes. Location transparency is provided by permitting any point in the tree to be a link to a (possibly) remote file system (a ;SPM_quot;mount point;SPM_quot;). Thus, NFS looks up one component of a pathname at a time. A table is kept that maps mount points to remote server machine names, and thus provides the location service. The collection of server procedures are fairly simple, and a subset of these is reproduced in figure #fnnfs#2411> from the RFC that describes NFS.

Figure: NFS XDR Declaration