Provides different message formats, the InputOutputHandler is capable of transmitting. Generally, there are two types of messages: ExternalMessages and InternalMessages. External messages involve a communication partner, that is no mix (e. g. a client or server). In contrast, internal messages are only sent between the mixes of a cascade (e. g. to transmit control information between two components located on different mixes). Both types can be Requests or Replyies. Requests travel through the cascade from left to right (where "left" is the cascade's first mix, handling connections from clients and "right" is the cascade's last mix).

All messages extend the abstract class Message. The following messages are present:

Messages which consist of more than two message parts ( ChannelEstablishMessage and ChannelMessage) each have an exclusive enumeration (ChannelEstablishMessagePart and ChannelMessagePart) defining these parts.

The length of some message parts varies depending on the current mix' position in the cascade (Note: Message length isn't constant in a cascade). To avert the need of defining different message parts (of the same type) for each mix, "dynamic" message parts are supported. They calculate their length and position automatically (according to the current mix' position in the cascade and the fixed position and length of the current part on the last mix of the cascade (which must be specified anyways, just like with non-dynamic message parts)).

An automatic padding mechanism is included, using the padding mechanism of component MessageProcessor.