As mentioned before, Qnet relies on the message passing paradigm of QNX Neutrino.
Before any message pass, however, the application (i.e., the client) must establish a connection to the server using the low-level ConnectAttach() function call:
ConnectAttach(nd, pid, chid, index, flags);
In the above call, nd is the node descriptor that specifies
which node you're connecting to.
The node descriptor tells the kernel whether you're communicating to a local or
remote server process.
If nd is
zero, you're specifying a local server process, and you'll  get local message passing 
from the client to the server, carried out by the local kernel as shown below:

When you specify a nonzero value for nd, the application 
transparently passes messages to a server on another machine, and connects
to a server on another machine.  This way, Qnet 
not only builds a network of trusted machines, it lets all these machines 
share their resources with little overhead.
