The intended use of this protocol is for calling remote procedures.
Normally, each call message is matched with a reply message.
However, the protocol itself is a message-passing protocol with which
other (non-procedure call) protocols can be implemented.