If the current working directory begins with a network root in the form /net/node_name, it's said to be specific and locked to the pathname space of the specified node. If you don't specify a network root, the default one is prepended.
For example, this command:
cd /net/percy
is an example of the first (specific) form, and would lock future relative pathname evaluation to be on node percy, no matter what your default network root happens to be. Subsequently entering cd dev would put you in /net/percy/dev.
On the other hand, this command:
cd /
would be of the second form, where the default network root would affect the relative pathname resolution. For example, if your default network root were /net/florence, then entering cd dev would put you in /net/florence/dev. Since the current working directory doesn't start with a node override, the default network root is prepended to create a fully specified network pathname.
To run a command with a specific network root, use the on command, specifying the -f option:
on -f /net/percy command
This runs the given command with /net/percy as the network root; that is, it searches for the command—and any files with relative paths specified as arguments—on /net/percy and runs the command on /net/percy. In contrast, this:
on -n /net/percy command
searches for the given command—and any files with relative paths—on your local node and runs the command on /net/percy.
In a program, you can specify a network root when you call chroot().
This really isn't as complicated as it may seem. Most of the time, you don't specify a network root, and everything you do will simply work within your namespace (defined by your default network root). Most users will log in, accept the normal default network root (i.e., the namespace of their own node), and work within that environment.