I/O protocol objects can be used in conjunction with OmniMark external source and external output objects to provide a multi-layered data source or data sink, respectively. The external source or output object provides the lower level I/O from or to the underlying transport layer, respectively. An I/O protocol object filters the data passing through it on its way to the external output or external source object.
I/O protocol objects can be designed to packetize or transform data. A packetization protocol object encodes a protocol for recognizing data from end-of-data for a particular transaction, for example, by using "Control-Z" or some other pattern to signify the end of data.
A transforming protocol is one that applies certain transformation functions to the data, such as encryption, compression, or dropping (noise removal).
Currently, the I/O protocol library supports three standard packetization protocols: single packet, multi packet, and end-delimited protocols.
The OmniMark TCP/IP legacy library (OMTCP) depends on the OmniMark I/O protocol legacy library (OMIOPROT) and automatically includes it.