RFC 3205 (rfc3205) - Page 2 of 14
On the use of HTTP as a Substrate
Alternative Format: Original Text Document
RFC 3205 HTTP Layering February 2002
The Internet community has a long tradition of protocol reuse, dating
back to the use of Telnet [4] as a substrate for FTP [5] and SMTP
[6]. However, the recent interest in layering new protocols over
HTTP has raised a number of questions when such use is appropriate,
and the proper way to use HTTP in contexts where it is appropriate.
Specifically, for a given application that is layered on top of HTTP:
o Should the application use a different port than the HTTP default
of 80?
o Should the application use traditional HTTP methods (GET, POST,
etc.) or should it define new methods?
o Should the application use http: URLs or define its own prefix?
o Should the application define its own MIME-types, or use something
that already exists (like registering a new type of MIME-directory
structure)?
This memo recommends certain design decisions in answer to these
questions.
This memo is intended as advice and recommendation for protocol
designers, working groups, implementors, and IESG, rather than as a
strict set of rules which must be adhered to in all cases.
Accordingly, the capitalized key words defined in RFC 2119, which are
intended to indicate conformance to a specification, are not used in
this memo.
2. Issues Regarding the Design Choice to use HTTP
Despite the advantages listed above, it's worth asking the question
as to whether HTTP should be used at all, or whether the entire HTTP
protocol should be used.
2.1 Complexity
HTTP started out as a simple protocol, but quickly became much more
complex due to the addition of several features unanticipated by its
original design. These features include persistent connections, byte
ranges, content negotiation, and cache support. All of these are
useful for traditional web applications but may not be useful for the
layered application. The need to support (or circumvent) these
features can add additional complexity to the design and
implementation of a protocol layered on top of HTTP. Even when HTTP
can be "profiled" to minimize implementation overhead, the effort of
specifying such a profile might be more than the effort of specifying
a purpose-built protocol which is better suited to the task at hand.
Moore Best Current Practice