Subject: [MMUSIC] RTSP versioning

From: Tom Marshall <[email-masked]>
Date: Tue, 28 Oct 2003 10:03:11 -0800

I've been given the task of recoding the RTSP versioning support in our
server (it currently is pretty much nonexistent).  Since the draft spec is
nearing completion, this might be a good time to clarify how versioning
should be handled.  I've collected a few datapoints...

* RFC 2326 3.1 references RFC 2068 3.1.  It says, in part:

    The <minor> number is incremented when the changes made to the protocol
    add features which do not change the general message parsing algorithm,
    but which may add to the message semantics and imply additional
    capabilities of the sender. The <major> number is incremented when the
    format of a message within the protocol is changed.

* Apache (both 1.3.x and 2.0.x) will respond v1.1 for a v1.0+ request.  eg:

    GET / HTTP/1.0
    Host: localhost

    HTTP/1.1 200 OK
    [...]

    GET / HTTP/2.0
    Host: localhost

    HTTP/1.1 200 OK
    [...]

* IIS 6.0 will respond v1.0 for a v1.0 request and v1.1 for a v1.1+ request. 
  eg:

    GET / HTTP/1.0
    Host: www.microsoft.com

    HTTP/1.0 200 OK
    [...]

    GET / HTTP/1.1
    Host: www.microsoft.com

    HTTP/1.1 200 OK
    [...]

    GET / HTTP/1.2
    Host: www.microsoft.com

    HTTP/1.1 200 OK
    [...]

    GET / HTTP/2.0
    Host: www.microsoft.com

    HTTP/1.1 200 OK
    [...]

That is really all the information we have for RTSP in the strictest sense,
because RFC 2616 was written after RFC 2326 and RFC 2145 is never referenced
in RFC 2326.  However, since RFC 2145 applies to HTTP/1.1 (and thus RTSP/1.0
by extension), and it was written prior to RFC 2326, it might provide some
valuable information for us.  According to section 2.3, it appears to me
that Apache properly implements the recommendation and IIS implements a
compliant but non-recommended behavior.

The biggest question that remains in my mind is the proper response to major
version changes.  What does it mean when the format of a message changes? 
Would it be possible for HTTP/2.0 to use, say, XML for its headers so that
it's not even parseable by a HTTP/1.x implementation?  If so, shouldn't a
1.x implementation always respond with 505 if the major version is higher
than it understands?

The new RTSP draft references RFC 2616, which in turn references RFC 2145. 
I assume all of the above will apply to it as well.  Does everyone feel that
the short reference to RFC 2616 in section 3.1 of the draft is sufficient?

-- 
The nice thing about standards is that there are so many of them to choose
from.
        -- Andrew Tanenbaum