layered set of software modules between the application and the hardware that provides various functions to encode, encrypt and format a Messagefor sending, and to decode, decrypt and unpack a Messagethat was received