1.3.4 High-Level Overview

The RPC Protocol transmits RPC PDUs between RPC clients and RPC servers. At a very high level, this protocol functions as an RPC transport and relays (tunnels) these PDUs to the server using HTTP (or HTTPS) and TCP/IP as specified in section 1.4.

The RPC over HTTP Protocol takes an RPC PDU that is generated [C706] and extended [MS-RPCE] on either an RPC client or an RPC server and transfers it to the other side, to the RPC server for the RPC client and to the RPC client for the RPC server, using a network agent called an RPC over HTTP proxy. All traffic has to go through an RPC over HTTP proxy.

The most common deployment configuration, even though it is not a requirement for this protocol, is for the client to be separated from the RPC over HTTP proxy by a wide area network (WAN) such as the Internet where the network traffic for this protocol travels over HTTP or HTTPS. The RPC over HTTP proxy and the RPC server are usually connected through a local area network (LAN) where the network traffic for this protocol travels over TCP/IP.

The RPC PDUs are conceptually viewed by the RPC over HTTP Protocol as an ordered sequence or stream of PDUs that can travel from RPC client to RPC server or from RPC server to RPC client. This protocol does not modify or consume RPC PDUs. The only exception to this rule is when using HTTPS and RPC over HTTP v2. In this case, RPC PDUs will be encrypted at the HTTP client and decrypted at the inbound or outbound proxy when traveling between an HTTP client and an inbound proxy or outbound proxy.

The RPC over HTTP Protocol inserts its own PDUs into the RPC PDU stream and routes the resulting stream of PDUs over HTTP requests and responses or TCP/IP connections as defined throughout this specification. Using Augmented Backus-Naur Form (ABNF) notation [RFC5234], the definition of the resulting stream of RPC and RPC over HTTP PDUs outside the protocol sequences specified in section 3 of this specification is as follows.

1*((1*(RPC over HTTP PDU))*(RPC PDU))

The following diagram illustrates this definition.

RPC over HTTP PDU stream

Figure 3: RPC over HTTP PDU stream

An example PDU stream is provided in section 4.1.

In addition to specifying how the PDUs are ordered and mapped to the underlying transport, the RPC over HTTP v2 dialect of this protocol specifies the following:

  • How an implementation maps an unbounded number of PDUs from a stream onto a number of HTTP requests and responses, each of which is bounded by its content length. This is done through a process called channel recycling, specified in section 3.2.

  • How an implementation prevents HTTP requests and responses that are used by the RPC over HTTP Protocol from being timed out as idle by network agents. This is done by sending PDUs in a process called pinging, as specified in section 3.2. The same pinging process is used to detect whether the other party is still running and reachable through the network.