Session layer protocols are responsible for establishing, maintaining, and terminating sessions between user application programs. Sessions are interactive dialogues between networked computers and are of particular importance to distributed computing applications in a client/server environment. As the area of distributed computing is in an evolutionary state, the session layer protocols may be supplied by the distributed application, the network operating system, or a specialized piece of additional software designed to render differences between computing platforms transparent, known as middleware. RPC, or Remote Procedure Call protocol, is one example of a Session layer protocol.