4. Transfer Encodings
Transfer encodings are tranformations applied to MIME media types
after conversion to the media type's canonical form. Transfer
encodings are used for several purposes:
(1) Many transports, especially message transports, can
only handle data consisting of relatively short lines
of text. There can also be severe restrictions on what
characters can be used in these lines of text -- some
transports are restricted to a small subset of US-ASCII
and others cannot handle certain character sequences.
Transfer encodings are used to transform binary data
into textual form that can survive such transports.
Examples of this sort of transfer encoding include the
base64 and quoted-printable transfer encodings defined
in RFC 2045.
(2) Image, audio, video, and even application entities are
sometimes quite large. Compression algorithms are often
quite effective in reducing the size of large entities.
Transfer encodings can be used to apply general-purpose
non-lossy compression algorithms to MIME entities.
(3) Transport encodings can be defined as a means of
representing existing encoding formats in a MIME
context.
IMPORTANT: The standardization of a large numbers of different
transfer encodings is seen as a significant barrier to widespread
interoperability and is expressely discouraged. Nevertheless, the
following procedure has been defined to provide a means of defining
additional transfer encodings, should standardization actually be
justified.
4.1. Transfer Encoding Requirements
Transfer encoding specifications must conform to a number of
requirements as described below.
4.1.1. Naming Requirements
Each transfer encoding must have a unique name. This name appears in
the Content-Transfer-Encoding header field and must conform to the
syntax of that field.
RFC 2048 MIME Registration Procedures November 1996
4.1.2. Algorithm Specification Requirements
All of the algorithms used in a transfer encoding (e.g. conversion
to printable form, compression) must be described in their entirety
in the transfer encoding specification. Use of secret and/or
proprietary algorithms in standardized transfer encodings are
expressly prohibited. The restrictions imposed by RFC 1602 on the
standardization of patented algorithms must be respected as well.
4.1.3. Input Domain Requirements
All transfer encodings must be applicable to an arbitrary sequence of
octets of any length. Dependence on particular input forms is not
allowed.
It should be noted that the 7bit and 8bit encodings do not conform to
this requirement. Aside from the undesireability of having
specialized encodings, the intent here is to forbid the addition of
additional encodings along the lines of 7bit and 8bit.
4.1.4. Output Range Requirements
There is no requirement that a particular tranfer encoding produce a
particular form of encoded output. However, the output format for
each transfer encoding must be fully and completely documented. In
particular, each specification must clearly state whether the output
format always lies within the confines of 7bit data, 8bit data, or is
simply pure binary data.
4.1.5. Data Integrity and Generality Requirements
All transfer encodings must be fully invertible on any platform; it
must be possible for anyone to recover the original data by
performing the corresponding decoding operation. Note that this
requirement effectively excludes all forms of lossy compression as
well as all forms of encryption from use as a transfer encoding.
4.1.6. New Functionality Requirements
All transfer encodings must provide some sort of new functionality.
Some degree of functionality overlap with previously defined transfer
encodings is acceptable, but any new transfer encoding must also
=10= |