an envelope, which defines the message structure[1] and how to process it a set of encoding rules for expressing instances of application-defined datatypes a convention for representing procedure calls and responses