Lines Matching +full:rpc +full:- +full:if
2 .\" Must use -- tbl -- with this one
28 Sun's Remote Procedure Call (RPC) package. (The message protocol is
35 to and justification of RPC.
51 One program may deal with high-level applications such as file system
52 access control and locking. The other may deal with low-level file
58 \&The RPC Model
62 procedure in some well-specified location (such as a result
65 procedure are extracted from the well-specified location, and the
84 The RPC protocol makes no restrictions on the concurrency model
86 may choose to have RPC calls be asynchronous, so that the client may
94 The RPC protocol is independent of transport protocols. That is, RPC
99 It is important to point out that RPC does not try to implement any
101 type of transport protocol underneath RPC. If it knows it is running
103 work is already done for it. On the other hand, if it is running on
105 is own retransmission and time-out policy as the RPC layer does not
108 Because of transport independence, the RPC protocol does not attach
111 by) the underlying transport protocol. For example, consider RPC
112 running on top of an unreliable transport such as UDP/IP. If an
113 application retransmits RPC messages after short time-outs, the only
114 thing it can infer if it receives no reply is that the procedure was
115 executed zero or more times. If it does receive a reply, then it can
120 execute-at-most-once semantics. A server can do this by taking
121 advantage of the transaction ID that is packaged with every RPC
122 request. The main use of this transaction is by the client RPC layer
128 execute-at-most-once semantics. The server is not allowed to examine
131 On the other hand, if using a reliable transport such as TCP/IP, the
133 executed exactly once, but if it receives no reply message, it cannot
134 assume the remote procedure was not executed. Note that even if a
135 connection-oriented protocol like TCP is used, an application still
136 needs time-outs and reconnection to handle server crashes.
138 There are other possibilities for transports besides datagram- or
139 connection-oriented protocols. For example, a request-reply protocol
140 such as VMTP[2] is perhaps the most natural transport for RPC.
143 NOTE: At Sun, RPC is currently implemented on top of both TCP/IP
151 is left up to some higher-level software. (The software may use RPC
154 Implementors should think of the RPC protocol as the jump-subroutine
157 Likewise, the network makes RPC useful, using RPC to accomplish this
162 The RPC protocol provides the fields necessary for a client to
163 identify itself to a service and vice-versa. Security and access
166 in the RPC header indicates which protocol is being used. More
174 The RPC protocol must provide for the following:
181 Provisions for authenticating the caller to service and vice-versa.
184 worth supporting because of protocol roll-over errors, implementation
199 The RPC call message has three unsigned fields: remote program
218 the actual RPC message protocol could also change. Therefore, the
219 call message also has in it the RPC version number, which is always
220 equal to two for the version of RPC described here.
225 The remote implementation of RPC does speak protocol version 2.
226 The lowest and highest supported RPC version numbers are returned.
243 Provisions for authentication of caller to service and vice-versa are
244 provided as a part of the RPC protocol. The call message has two
246 message has one authentication field, the response verifier. The RPC
270 enumeration followed by bytes which are opaque to the RPC protocol
294 0 - 1fffffff&Defined by Sun
295 20000000 - 3fffffff&Defined by user
296 40000000 - 5fffffff&Transient
297 60000000 - 7fffffff&Reserved
298 80000000 - 9fffffff&Reserved
299 a0000000 - bfffffff&Reserved
300 c0000000 - dfffffff&Reserved
301 e0000000 - ffffffff&Reserved
313 \&Other Uses of the RPC Protocol
317 However, the protocol itself is a message-passing protocol with which
318 other (non-RPC) protocols can be implemented. Sun currently uses, or
319 perhaps abuses, the RPC message protocol for the following two
320 (non-RPC) protocols: batching (or pipelining) and broadcast RPC.
330 calls is usually terminated by a legitimate RPC in order to flush the
333 \&Broadcast RPC
335 In broadcast RPC-based protocols, the client sends a broadcast packet
336 to the network and waits for numerous replies. Broadcast RPC uses
337 unreliable, packet-based protocols (like UDP/IP) as its transports.
340 errors. Broadcast RPC uses the Port Mapper RPC service to achieve
345 \&The RPC Message Protocol
347 This section defines the RPC message protocol in the XDR data
348 description language. The message is defined in a top-down style.
375 SUCCESS = 0, /* \fIRPC executed successfully \fP*/
390 RPC_MISMATCH = 0, /* \fIRPC version number != 2 \fP*/
412 * The RPC message:
414 * followed by a two-armed discriminated union. The union's
438 * Body of an RPC request call:
439 * In version 2 of the RPC protocol specification, rpcvers must
464 * Body of a reply to an RPC request:
479 * Reply to an RPC request that was accepted by the server:
496 /* \fIprocedure-specific results start here\fP */
517 * Reply to an RPC request that was rejected by the server:
519 * server is not running a compatible version of the RPC
521 * authenticate the caller (\fIAUTH_ERROR\fP). In case of an RPC
523 * supported RPC version numbers. In case of refused
541 open-ended to the rest of the RPC protocol. This section defines
551 value (the discriminant of the \fIopaque_auth\fP's union) of the RPC
561 discriminant of an RPC call message is
610 The server may flush the shorthand opaque structure at any time. If
623 The naming is too UNIX-system oriented.
659 a one-to-one correspondence between naming methods and operating
660 systems. If the world could agree on a naming standard, the first
669 vice-versa). The contents of this verifier is primarily an
670 encrypted timestamp. The server can decrypt this timestamp, and if
673 correctly is to know the "conversation key" of the RPC session. And
678 and notifies the server of in its first RPC call. The conversation
681 authentication is Diffie-Hellman [3] with 192-bit keys. The
685 in order for all of this to work. If network time synchronization
690 The way a server determines if a client timestamp is valid is
699 A timestamp is expired if the server's time is later than the sum
707 expired. If this was all that was done though, then it would be
731 clocks can get out of sync again. When this happens the client RPC
742 case and the server will give it a new nickname. If a server
769 * A 64-bit block of encrypted DES data
785 * lifetime for the credential. If the time indicated in the
831 * \f(CWadv_timestamp; \fP-- one DES block
832 * \f(CWadc_fullname.window; \fP-- one half DES block
833 * \f(CWadv_winverf; \fP-- one half DES block
860 \&Diffie-Hellman Encryption
944 short-lived.
946 The conversation key is encrypted using 56-bit DES keys, yet the
948 selected from the common key as follows. The middle-most 8-bytes
950 lower order bit of each byte, producing a 56-bit key with 8 bits of
956 When RPC messages are passed on top of a byte stream protocol (like
960 this RM/TCP/IP transport for passing RPC messages on TCP streams.
961 One RPC message fits into one RM record.
964 fragment is a four-byte header followed by 0 to (2**31) - 1 bytes of
969 is the last fragment) and a 31-bit unsigned binary value which is the
971 highest-order bit of the header; the length is the 31 low-order bits.
976 \&The RPC Language
978 Just as there was a need to describe the XDR data-types in a formal
980 on these XDR data-types in a formal language as well. We use the RPC
985 \&An Example Service Described in the RPC Language
1004 * Ping the caller, return the round-trip time
1005 * (in microseconds). Returns -1 if the operation
1037 computing round-trip times from the client to the server and back
1038 again. By convention, procedure 0 of any RPC protocol should have
1052 \&The RPC Language Specification
1054 The RPC language is identical to the XDR language, except for the
1056 .I program-def
1060 program-def:
1062 version-def
1063 version-def *
1066 version-def:
1068 procedure-def
1069 procedure-def *
1072 procedure-def:
1073 type-specifier identifier "(" type-specifier ")"
1099 The port mapper program maps RPC program and version numbers to
1100 transport-specific port numbers. This program makes dynamic binding
1108 The port mapper also aids in broadcast RPC. A given RPC program will
1119 \&Port Mapper Protocol Specification (in RPC Language)
1236 a mapping if one already exists for the tuple "(prog, vers, prot)".
1257 via the well-known port mapper's port. The parameters "prog",
1265 This procedure only sends a response if the procedure was
1279 Procedure Calls"; XEROX CSL-83-7, October 1983.
1285 Transactions on Information Theory IT-22, November 1976.
1293 [6] Postel, J.; "Transmission Control Protocol - DARPA Internet