RPC Protocols Family

 
The RPC protocols suite includes the following protocols:
RPCBv3 Binding protocol version 3 for RPC

RPCBV4
Binding protocol version 4 for RPC
RPCSEC GSS Security protocol version 3 for RPC
RPCmap IPort Mapper protocol version 2 for RPC

 

RPCBv3

ftp://ftp.rfc-editor.org/in-notes/rfc1833.txt.

An RPC service is identified by its RPC program number, version number, and the transport address where it may be reached. The transport address, in turn, consists of a network address and a transport selector. In the case of a service available over TCP/IP or UDP/IP, the network address is an IP address, and the transport selector is a TCP or UDP port number.
A client program needs to know the RPC program number, version number, and the transport address corresponding to a service in order to utilize the service. Of these, the RPC program number and version number are usually built into the client program, as part of the service definition. The network address component of the transport address is usually available in a name service, or is given as a parameter to the client program. The transport selector (ie., the TCP or UDP port) is usually determined dynamically, and varies with each invocation of the service. Server programs allocate a transport address, and register it with a well-known lookup service (well-known because it uses a fixed transport selector, and resides at the same network address as the server). Client programs consult the lookup service in order to obtain the server's transport address.

Such a lookup service is very desirable because the range of well- known transport selectors is very small for some transports and the number of services is potentially very large. By running only the lookup service on a well-known transport selector, the transport addresses of other remote programs can be ascertained by querying the lookup service.
RPCBv3 (Binding protocol version 3 for RPC) and RPCBv4 are both versions of a lookup service, which use the same RPC program number (100000). They both use port 111 over TCP and UDP transports.

The distinguishing characteristic of RPCBIND (versions 3 and 4) is that this protocol uses a transport-independent format for the transport address, known as the universal address format. An address in universal address format is an ASCII string representation of the transport dependent address. String representation of addresses corresponding to a transport are defined by the addressing authority for the transport. The RPCBIND protocol can be used for binding ONC RPC clients and servers over any transport.
The structure of the RPCBv3 is as follows:

1
2
3
4
5
6
7
8
Octet
Program Number
1-4
Version Number
5-8
Network ID Length
9-12
Network ID
13-N
Universal Address Length
N+1-N+4
Universal Address
N+5-M

Program
The program number

Version
The version number

Network ID

The network ID

Universal Address
The universal address

Interested in more details about testing this protocol? click here

 

RPCBV4

ftp://ftp.rfc-editor.org/in-notes/rfc1833.txt.

Binding protocol version 4 for RPC (RPCv4) is very similar to version 3, but with a few additional parameters. The protocol header structure is as follows:

1
2
3
4
5
6
7
8
Octet
Program Number
1-4
Version Number
5-8
Network ID Length
9-12
Network ID
13-N
Universal Address Length
N+1-N+4
Universal Address
N+5-M

Program
The program number

Version
The version number

Network ID

The network ID

Universal Address
The universal address

Interested in more details about testing this protocol? click here



RPCSEC GSS

ftp://ftp.rfc-editor.org/in-notes/rfc2203.txt.

The security protocol version 3 for RPC deals with integrity and privacy as well as authentication. It is described using the XDR language [Srinivasan-xdr]. It uses GSS-API interfaces to provide security services that are independent of the underlying security mechanism.

An RPC session based on the RPCSEC_GSS security consists of: context creation, RPC data exchange, and context destruction.

Context creation and destruction use control messages that are not dispatched to service procedures registered by an RPC server. The program and version numbers used in these control messages are the same as the RPC service's program and version numbers. The procedure number used is NULLPROC (zero). A field in the credential information (the gss_proc field) specifies whether a message is to be interpreted as a control message or a regular RPC message. If this field is set to RPCSEC_GSS_DATA, no control action is implied; in this case, it is a regular data message. If this field is set to any other value, a control action is implied.

Just as with normal RPC data exchange messages, the transaction identifier (the xid field in struct pc_msg), should be set to unique values on each call for context creation and context destruction. The protocol structure is as follows:

1
2
3
4
5
6
7
8
Octet
Version
1-4
Procedure
5-8
Sequence Number
9-12
Service
13-16

Version
The version number

Procedure
The procedure number

Sequence Number

The sequence number

Service
The service number

Interested in more details about testing this protocol? click here

 

RPCmap

ftp://ftp.rfc-editor.org/in-notes/rfc1833.txt.

The IPort Mapper protocol version 2 for RPC (RPCmap) protocol, port mapper program maps RPC program and version numbers to transport- specific port numbers. This program makes dynamic binding of remote programs possible. The port mapper protocol differs from the newer RPCBIND protocols in that it is transport specific in its address handling.

1
2
3
4
5
6
7
8
Octet
Program
1-4
Version
5-8
Protocol
9-12
Port Number
13-16

Program
The program number

Version
The version number

Protocol
The protocol number
6      IPPROTO_TCP
17    IPPROTO_UDP

Port Number
The port number

Interested in more details about testing this protocol? click here

 

1 2 3 4

SUN Protocols Information
MNTV1 | Mntv3 | MOUNT | NFS | NFS2 | NFS3 | NFSv4 | NLMv4 | NSMv1 | PMAP | RPC | RPCBv3 | RPCBV4 | RPCmap | RPCSEC GSS | YP (NIS)

 
Additional Information