RFC 4483

A Mechanism for Content Indirection in Session Initiation Protocol (SIP) Messages

๐Ÿ“… published May 2006, from ietf

RFC 4483: A Mechanism for Content Indirection in Session Initiation Protocol (SIP) Messages ๐ŸŽ€ Part 1 of 3

Okay bestie, this one comes from the Network Working Group ๐Ÿ’–. The editor is E. Burger, Ed., from Cantata Technolgy, Inc. It's a Standards Track doc dated May 2006 โœจ. The title block doesn't list anything it obsoletes or updates, so it stands on its own ๐Ÿฆ‹.


Status of This Memo ๐Ÿ“œ

This document specifies an Internet standards track protocol for the Internet community, and it's basically asking for discussion and suggestions for improvements ๐Ÿ’ฌ. If you want the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐Ÿ“š. Distribution of this memo is unlimited ๐ŸŒˆ.

Copyright (C) The Internet Society (2006).

Abstract โœจ

This document defines an extension to the URL MIME External-Body Access-Type to satisfy the content indirection requirements for the Session Initiation Protocol (SIP) ๐Ÿ”ฅ. The whole point is letting any MIME part in a SIP message be referred to indirectly via a URI ๐Ÿฆ‹.

Table of Contents ๐Ÿ—‚๏ธ

   1. Introduction ....................................................2
   2. Terminology .....................................................3
   3. Use Case Examples ...............................................3
      3.1. Presence Notification ......................................4
      3.2. Document Sharing ...........................................4
   4. Requirements ....................................................5
   5. Application of RFC 2017 to the Content Indirection Problem ......6
      5.1. Specifying Support for Content Indirection .................6
      5.2. Mandatory support for HTTP URI .............................7
      5.3. Rejecting Content Indirection ..............................7
      5.4. Specifying the Location of the Content via a URI ...........7
      5.5. Marking Indirect Content Optional ..........................7
      5.6. Specifying Versioning Information for the URI ..............8
      5.7. Specifying the URI Lifetime ................................8
      5.8. Specifying the type of the Indirect Content ................8
      5.9. Specifying the Size of the Indirect Content ................9
      5.10. Specifying the Purpose of the Indirect Content ............9
      5.11. Specifying Multiple URIs for Content Indirection .........10
      5.12. Specifying a Hash Value for the Indirect Content .........10
      5.13. Supplying Additional Comments about the Indirect
            Content ..................................................11
      5.14. Relationship to Call-Info, Error-Info, and
            Alert-Info Headers .......................................11
   6. Examples .......................................................12
      6.1. Single Content Indirection ................................12
      6.2. Multipart MIME with Content Indirection ...................12
   7. Security Considerations ........................................13
   8. Contributions ..................................................15
   9. Acknowledgements ...............................................15
   10. References ....................................................15
      10.1. Normative References .....................................15
      10.2. Informative Reference ....................................16

1. Introduction ๐ŸŒธ

Okay so SIP, the Session Initiation Protocol [9], is all about creating, modifying, or terminating sessions with one or more participants ๐Ÿ“ž. SIP messages are kinda like HTTP messages in shape: they're built from a start line, one or more headers, and an optional body ๐Ÿงฉ. The big difference is that SIP is not designed to be a general-purpose data transport protocol ๐Ÿ™…โ€โ™€๏ธ.

There are lots of reasons you might want the SIP message body to be specified indirectly ๐Ÿ‘€. On bandwidth-limited stuff like cellular wireless, indirection lets you attach metadata to the indirect content, so the recipient can decide whether it's worth pulling the content over a resource-limited link ๐Ÿ“ฑ.

It's also possible that the content is too big and would overwhelm intermediate signaling proxies, which unnecessarily adds network latency ๐Ÿ˜ฉ. For time-sensitive SIP apps, that's a no-go ๐Ÿ™…โ€โ™€๏ธ. Indirect content fixes this by moving the transfer out of the SIP signaling network and into a potentially separate data transfer channel ๐Ÿš€.

Another scenario: the session-related data (body) you need to send doesn't actually live on the endpoint or User Agent ๐Ÿ—บ๏ธ. In that case, it's really useful for the SIP message to carry an indirect reference to the content, so the receiver can grab it over a non-SIP transfer channel like HTTP, FTP, or LDAP ๐Ÿ’œ.

Here's the key vibe: content indirection exists purely to give SIP MIME body parts an alternative transport mechanism ๐Ÿ’…. Apart from the transport mechanism, indirect body parts are equivalent to, and should have the same treatment as, in-line body parts ๐Ÿซถ.

Previous attempts at this problem used the text/uri-list [6] MIME type ๐Ÿ“. It's super simple (a list of URIs separated by end-of-line markers), but it failed to meet a bunch of the requirements for a more general-purpose content indirection mechanism in SIP ๐Ÿ˜ญ. The biggest miss is that you couldn't attach attributes on a per-URI basis, like version information or the MIME type of the referenced content ๐Ÿ™ˆ.

RFC 2017 is a strong candidate to replace text/uri-list ๐Ÿ”ฅ. RFC 2017 [1] extends the message/external-body MIME type that was originally defined in RFC2046 [3]. The extension lets a generic URI specify where the content is, instead of the protocol-specific parameters for FTP and so on that RFC2046 originally used ๐ŸŒˆ. It covers most of what a SIP content indirection mechanism needs, but RFC 2017 by itself isn't a complete solution ๐Ÿง. This document specifies how to use RFC 2017 to meet the content indirection requirements โœจ.

The requirements apply either to the URI that indirectly references the desired content, or to the content itself ๐ŸŽฏ. Where possible, existing MIME parameters and entity headers get reused ๐Ÿ”. MIME (Content-Type) parameters are the preferred way to describe the URI, and entity headers are the preferred way to describe the (indirect) content ๐Ÿ’โ€โ™€๏ธ. For a description of most of these entity headers and MIME parameters, see RFC 2045 [2] ๐Ÿ“–.

2. Terminology ๐Ÿ”ค

RFC 2119 [5] defines the keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL". ๐Ÿง 

3. Use Case Examples ๐Ÿ’ก

There are several examples of the content indirection mechanism in action ๐ŸŽฌ. These are just examples, though, and they're not meant to limit the scope or applicability of the mechanism ๐Ÿ™Œ.

3.1. Presence Notification ๐Ÿ‘€

The info in a presence document could go over the recommended size for a SIP (NOTIFY) request, especially if the document aggregates info from multiple endpoints ๐Ÿ“Š. In that situation, it would be nice to send the NOTIFY request with an indirect pointer to the presence document, which the watcher could then fetch with something like HTTP ๐ŸŒ.

                Watcher                 Presence Server
                   |                           |
                   |         SUBSCRIBE         |
                   |-------------------------->|
                   |          200 OK           |
                   |<--------------------------|
                   |                           |
                   |          NOTIFY           |
                   |<--------------------------|
                   |          200 OK           |
                   |-------------------------->|
                   |                           |
                   |      NOTIFY (w/URI)       |
                   |<--------------------------|
                   |           200             |
                   |-------------------------->|
                   |                           |
                   |         HTTP GET          |
                   |-------------------------->|
                   |                           |
                   | application/cpim-pidf+xml |
                   |<--------------------------|
                   |                           |

In this example, the presence server returns an HTTP URI pointing to a presence document on the presence server ๐Ÿช„. The watcher then fetches it with an HTTP GET ๐Ÿซง.

3.2. Document Sharing ๐Ÿ“„

During an instant messaging conversation, a handy service is document sharing ๐Ÿ’ฌ. One party sends an IM (MESSAGE request) with an indirect pointer to a document that the remote party is meant to render ๐Ÿ–ผ๏ธ. Stuffing that document right into the MESSAGE request isn't a good use of the signaling channel ๐Ÿ™…โ€โ™€๏ธ. Plus, the document might live on a completely independent server from the originating party's server ๐Ÿ .

                  UAC                  UAS         Web Server
                  (User Agent        (User Agent         |
                   Client)            Server)            |
                   |                    |                |
                   |   MESSAGE w/URI    |                |
                   |------------------->|                |
                   |        200         |                |
                   |<-------------------|                |
                   |                    |                |
                   |                    |    HTTP GET    |
                   |                    |--------------->|
                   |                    |   image/jpeg   |
                   |                    |<---------------|
                   |                    |                |

In this example, user UAC wants to share a JPEG image she has stored on her web server with user UAS, who she's chatting with over IM ๐Ÿ“ธ. She wants the JPEG to render inline in the conversation ๐Ÿฅฐ. The recipient of the MESSAGE request launches an HTTP GET request to the web server to grab the JPEG image ๐Ÿฆ‹โœจ.

4. Requirements ๐ŸŽ€

okay bestie, this is the wishlist section ๐Ÿซถ every bullet is something the mechanism has to be able to do. let's go ๐Ÿ’…

  • Location: it MUST be possible to point at the content with a URI, and those URIs MUST conform with RFC2396 [7].
  • Length: it MUST be possible to say how long the indirect content is.
  • Type: it MUST be possible to say what type the indirect content is.
  • Disposition: it MUST be possible to set the disposition of each URI independently ๐ŸŒธ
  • Labels: it MUST be possible to label each URI so you can tell if and when the content behind it has changed ๐Ÿฆ‹ applications may send the same URI more than once. the whole point is that the receiver can check if the content changed without fetching it. labels could be a sequence number, a timestamp, or a version number. with HTTP, the entity-tag (ETAG) mechanism from RFC2068 [4] may be a good fit. and note that we're labeling the content, not the URI itself, so the label is basically metadata of the content ๐Ÿงš
  • Time span: it MUST be possible to say how long a given URI is valid. that might or might not match how long the content itself lives โณ
  • Support signalling: it MUST be possible for the UAC and the UAS to show they support this content indirection mechanism. a fallback mechanism SHOULD be specified for when one side can't do indirection ๐Ÿซถ
  • Type negotiation: it MUST be possible for the UAC and UAS to negotiate the type of the indirect content ๐Ÿ’œ
  • Scheme negotiation: it MUST be possible for the UAC and UAS to negotiate support for any URI scheme used in the mechanism. that's on top of negotiating content type ๐ŸŒˆ
  • Integrity and confidentiality: it SHOULD be possible to make sure the URI keeps its integrity and confidentiality when the remote party gets it ๐Ÿ”’
  • No humans: it MUST be possible to process the content indirection without human intervention ๐Ÿค–
  • Any SIP message: it MUST allow indirect transference of content in any SIP message that would otherwise carry that content as a body โœจ

5. Application of RFC 2017 to the Content Indirection Problem ๐Ÿฆ‹

this section is where the rules get real. it's how RFC 2017 gets applied to the content indirection problem.

The following text describes the application of RFC 2017 to the requirements for content indirection.

5.1. Specifying Support for Content Indirection ๐Ÿ’–

a UAC or UAS says it can do content indirection by putting message/external-body in its Accept header. it MAY add more values to the Accept header to list other content types it's willing to take, either directly or through indirection. and User-Agents that support content indirection MUST support content indirection of the application/sdp MIME type. no skipping SDP, bestie ๐Ÿ™…โ€โ™€๏ธ

For example:

Accept: message/external-body, image/*, application/sdp

5.2. Mandatory support for HTTP URI ๐ŸŒ

apps using this mechanism MUST support the HTTP URI scheme. other URI schemes MAY be used too, but a UAC/UAS MUST support receiving an HTTP URI for indirect content if it advertises support for content indirection. HTTP is the baseline, it's giving "always there for you" ๐Ÿ’…

the UAS MAY advertise alternate access schemes in the schemes parameter of the Contact header. that goes in its response to the UAC's session establishment request (like an INVITE or a SUBSCRIBE), as described in RFC 3840 [11] ๐Ÿ“‡

5.3. Rejecting Content Indirection ๐Ÿ™…โ€โ™€๏ธ

if a UAS gets a SIP request with a content indirection payload and it can't or doesn't want to support that content type, it MUST reject the request with a 415 Unsupported Media Type response, as defined in section 21.4.13 of SIP [9]. the UAC should notice that message/external-body is missing from the Accept header of that response, which tells it the UAS doesn't do content indirection. or if the specific MIME type of the requested comment is missing, the UAS just doesn't support that particular media type ๐Ÿซ 

5.4. Specifying the Location of the Content via a URI ๐Ÿ“

the URI for the indirect content goes in a "URI" parameter of the message/external-body MIME type. an access-type parameter says the external content is referenced by a URI. and HTTP URI specifications MUST conform to RFC 2396 [7] ๐Ÿ”—

For example:

Content-Type: message/external-body; access-type="URL";
    URL="http://www.example.com/the-indirect-content"

5.5. Marking Indirect Content Optional ๐Ÿคทโ€โ™€๏ธ

some content isn't critical to the vibe of the communication, so if the fetch or conversion fails, that's fine. the content indirection mechanism uses the Critical-Content mechanism from RFC 3459 [10]. basically, if the UAS can't fetch or render an optional body part, then it MUST NOT return an error to the UAC. no drama, no 500s over optional stuff ๐Ÿ˜Œ

5.6. Specifying Versioning Information for the URI ๐Ÿท๏ธ

so the receiver can tell if the content behind a URI has changed, a Content-ID entity header gets used. its syntax is defined in RFC 2045 [2]. any change in the underlying content MUST result in a change in the Content-ID tied to that URI. SIP messages that carry URIs pointing at the same content SHOULD reuse the same Content-ID, so the receiver can cache it and skip pointless retrievals ๐Ÿง  the Content-ID is meant to be globally unique, and it SHOULD be temporally unique across SIP dialogs too. so smart ๐Ÿงš

For example:

Content-ID: <4232423424@www.example.com>

5.7. Specifying the URI Lifetime โณ

the URI from the Content-Type header doesn't have to be reachable or valid forever. the supplier of the URI MUST specify the time period during which the URI is valid and accessible. that goes in an "EXPIRATION" parameter of the Content-Type. the format is an RFC 1123 [12] date-time value, and this application only allows GMT, to match the Date: header in SIP. this one's a mandatory parameter, no cap. the date-time can be minutes, days, or even years away ๐Ÿ•ฐ๏ธ

For example:

Content-Type: message/external-body;
              expiration="Mon, 24 June 2002 09:00:00 GMT"

5.8. Specifying the type of the Indirect Content ๐ŸŽจ

to play nicely with SIP's existing content type negotiation, a Content-Type entity header SHOULD be present in the entity (payload) itself. if the URI's scheme has its own content negotiation (like HTTP), this header may be left out. but the sender MUST, however, be ready for the receiver to reject content indirection if it can't negotiate an appropriate MIME type through the underlying protocol for that URI scheme. be prepared, bestie ๐Ÿ˜ญ

For example:

Content-Type: message/external-body; access-type="URL";
    expiration="Mon, 24 June 2002 09:00:00 GMT";
    URL="http://www.example.com/the-indirect-content"
<CRLF>
Content-Type: application/sdp
Content-Disposition: session
<CRLF>

5.9. Specifying the Size of the Indirect Content ๐Ÿ“

when the size is known ahead of time, the size of the indirect content in bytes SHOULD be given in a size parameter on the Content-Type header. this extends RFC 2017, but it matches the other access types defined for message/external-body in RFC 2046 โœจ the receiver uses the size to decide whether it even wants to fetch the content. just like with directly supplied content, a UAS may send back a 513 error response if the content is too large. size is an optional parameter ๐Ÿ™Œ

For example:

Content-Type: message/external-body; access-type="URL";
    expiration="Mon, 24 June 2002 09:00:00 GMT";
    URL="http://www.example.com/the-indirect-content";
    size=4123

5.10. Specifying the Purpose of the Indirect Content ๐ŸŽฏ

a Content-Disposition entity header MUST be present for all indirect content. no exceptions, it's the purpose tag ๐Ÿท๏ธ

For example:

Content-Type: message/external-body; access-type="URL";
    expiration="Mon, 24 June 2002 09:00:00 GMT";
    URL="http://www.example.com/the-indirect-content"
<CRLF>
Content-Type: image/jpeg
Content-Disposition: render

5.11. Specifying Multiple URIs for Content Indirection ๐Ÿ“ฆ

if you need to send several URIs for content indirection, an appropriate multipart MIME type [3] should be used. each URI MUST be contained in a single entity. indirect content can be mixed with directly-supplied content too, which is especially handy with multipart/alternative ๐ŸŒธ

NOTE: This specification does not change the meanings of the various multipart flavors, particularly multipart/related, as described in RFC 2387 [13].

For example:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=boundary42

--boundary42
Content-Type: text/plain; charset=us-ascii

The company announcement for June, 2002 follows:
--boundary42
Content-Type: message/external-body;
     access-type="URL";
     expiration="Mon, 24 June 2002 09:00:00 GMT";
     URL="http://www.example.com/announcements/07242002";
     size=4123

Content-Type: text/html
Content-Disposition: render

--boundary42--

5.12. Specifying a Hash Value for the Indirect Content ๐Ÿ”

if the sender knows exactly which content is being referenced, and wants the recipient to be able to check that nothing was changed from what the sender intended, the sender includes a SHA-1 [8] hash of the content. when it's included, the hash is encoded by extending the MIME syntax [3] with a "hash" parameter for the content type "message/external-body", whose value is a hexadecimal encoding of the hash. integrity check energy ๐Ÿ›ก๏ธ

For example:

Content-Type: message/external-body;
    access-type="URL";
    expiration="Mon, 24 June 2002 09:00:00 GMT";
    URL="http://www.example.com/the-indirect-content.au";
    size=52723;
    hash=10AB568E91245681AC1B
<CRLF>
Content-Disposition: render

5.13. Supplying Additional Comments about the Indirect Content ๐Ÿ’ฌ

One MAY use the Content-Description entity header to add optional, freeform text commenting on the indirect content. that text MAY be shown to the end user, but it MUST NOT used by other elements to determine the disposition of the body. so it's for the humans, not the machines ๐Ÿ™ˆ

For example:

Content-Type: message/external-body;
    access-type="URL";
    expiration="Mon, 24 June 2002 09:00:00 GMT";
    URL="http://www.example.com/the-indirect-content";
    size=52723
<CRLF>
Content-Description: Multicast gaming session
Content-Disposition: render

5.14. Relationship to Call-Info, Error-Info, and Alert-Info Headers โœจ

okay so SIP [9] has three headers that carry extra info about a session, a particular error response, or alerting ๐Ÿ’… all three let the UAC or UAS point at extra info through a URI ๐Ÿ”— bestie, that's basically a form of content indirection ๐Ÿฆ‹ BUT this document's mechanism is NOT meant to replace them ๐Ÿ™…โ€โ™€๏ธ the headers defined in SIP MUST be used in preference to this mechanism, where applicable, because they have well-defined semantics ๐ŸŽ€ main character energy goes to the SIP headers here, periodt ๐Ÿ‘‘

6. Examples ๐Ÿงš

6.1. Single Content Indirection ๐ŸŒธ

           INVITE sip:boromir@example.com SIP/2.0
           From: <sip:gandalf@example.net>;tag=347242
           To: <sip:boromir@example.com>
           Call-ID: 3573853342923422@example.net
           CSeq: 2131 INVITE
           Accept: message/external-body application/sdp
           Content-Type: message/external-body;
                ACCESS-TYPE=URL;
                URL="http://www.example.net/party/06/2002/announcement";
                EXPIRATION="Sat, 20 Jun 2002 12:00:00 GMT";
                size=231
           Content-Length: 105

           Content-Type: application/sdp
           Content-Disposition: session
           Content-ID: <4e5562cd1214427d@example.net>

6.2. Multipart MIME with Content Indirection ๐Ÿ’–

           MESSAGE sip:boromir@example.com SIP/2.0
           From: <sip:gandalf@example.net>;tag=34589882
           To: <sip:boromir@example.com>
           Call-ID: 9242892442211117@example.net
           CSeq: 388 MESSAGE
           Accept: message/external-body, text/html, text/plain,
                   image/*, text/x-emoticon
           MIME-Version: 1.0
           Content-Type: multipart/mixed; boundary=zz993453

           --zz993453
           Content-Type: message/external-body;
                access-type="URL";
                expiration="Mon, 24 June 2002 09:00:00 GMT";
                URL="http://www.example.net/company_picnic/image1.png";
                size=234422

           Content-Type: image/png
           Content-ID: <9535035333@example.net>
           Content-Disposition: render
           Content-Description: Kevin getting dunked in the wading pool

           --zz993453
           Content-Type: message/external-body;
                access-type="URL";
                expiration="Mon, 24 June 2002 09:00:00 GMT";
                URL="http://www.example.net/company_picnic/image2.png";
                size=233811

           Content-Type: image/png
           Content-ID: <1134299224244@example.net>
           Content-Disposition: render
           Content-Description: Peter on his tricycle

           --zz993453--

7. Security Considerations ๐Ÿšจ

okay bestie, listen up because this section is SERIOUS ๐Ÿ˜ญ any content indirection mechanism adds extra security concerns ๐Ÿ’€ it needs an extra processing step and extra info transfer, and there are a bunch of potential abuses:

  • Content indirection lets the initiator pick a different protocol with weaker security or known vulnerabilities for the content transfer (for example, asking the recipient to make an HTTP request that gets a Basic authentication challenge) ๐Ÿ™ˆ
  • Content indirection lets the initiator make the recipient burn extra resources during the information transfer and content processing, which could open a door to denial-of-service attacks (for example, an active FTP URL eating 2 connections for every indirect content message) ๐Ÿ”ฅ
  • Content indirection could be used as a port-scanning attack, where the indirect content URL is actually a bogus URL pointing at an internal resource of the recipient ๐Ÿ•ต๏ธโ€โ™€๏ธ the response to the content indirection request could reveal info about open (and vulnerable) ports on those internal resources ๐Ÿ˜ฑ
  • A content indirection URL can disclose sensitive info about the initiator, like an internal user name (as part of an HTTP URL) or possibly geolocation info ๐Ÿ“

ngl the good news is all of these threats can be mitigated through careful screening of both the indirect content URIs that are received and those that are sent ๐Ÿซถ integrity and confidentiality protection of the indirect content URI can prevent extra attacks too โœจ

for confidentiality, integrity, and authentication, this mechanism relies on the security mechanisms outlined in RFC 3261 ๐Ÿ” specifically, the usage of S/MIME as defined in section 23 of RFC 3261 gives the necessary mechanism to ensure integrity, protection, and confidentiality of the indirect content URI and associated parameters ๐Ÿ’œ

securing the transfer of the indirect content is the responsibility of the underlying protocol used for this transfer ๐ŸŒˆ if HTTP is used, applications implementing this method SHOULD support the HTTPS URI scheme for secure transfer of content and MUST support upgrading connections to TLS, by using starttls ๐Ÿ“ > heads up: a failure to complete HTTPS or starttls (for example, due to certificate or encryption mismatch) after accepting the indirect content in the SIP request is NOT the same as rejecting the SIP request, and it may need extra user-user communication to fix ๐Ÿ™ƒ

note that this document does NOT advocate transitive trust ๐Ÿšซ just because the UAS gets a URI from a UAC that it trusts, the UAS SHOULD NOT implicitly trust the object the URI refers to without establishing its own trust relationship with the URI provider ๐Ÿ›‘

access control to the content referenced by the URI is NOT defined by this specification ๐Ÿ”’ access control mechanisms may be defined by the protocol for the scheme of the indirect content URI ๐Ÿงš

if the UAC knows the content in advance, the UAC SHOULD include a hash parameter in the content indirection ๐ŸŽ€ the hash parameter is a hexadecimal-encoded SHA-1 [8] hash of the indirect content ๐Ÿ’… if a hash value is included, the recipient MUST check the indirect content against that hash and indicate any mismatch to the user ๐Ÿซถ

in addition, if the hash parameter is included and the target URI involves setting up a security context using certificates, the UAS MUST ignore the results of the certificate validation procedure, and instead verify that the hash of the (canonicalized) content received matches the hash presented in the content-indirection hash parameter ๐ŸŒธ yes, that's a lot of MUSTs, iykyk ๐Ÿ˜ญ

if the hash parameter is NOT included, the sender SHOULD use only schemes that offer message integrity (such as https:) ๐Ÿ” when the hash parameter is not included and security using certificates is used, the UAS MUST verify any server certificates, using the UAS's list of trusted top-level certificate authorities ๐Ÿ‘‘

if hashing of indirect content is not used, the content returned to the recipient by exercise of the indirection might have been altered from what the sender intended ๐Ÿ’€ yikes, hash it, bestie ๐Ÿฆ‹

8. Contributions ๐Ÿ’œ

Sean Olson, seanol@microsoft.com, provided the vast majority of the content of this document, including editorship through the first IESG review ๐ŸŒŸ Dean Willis touched it next ๐Ÿซถ

Eric Burger edited the document and addressed IESG comments, including the access protocol negotiation mechanism ๐Ÿ’…

9. Acknowledgements ๐ŸŒท

Cullen Jennings and Nancy Greene provided a through review and valuable comments and suggestions ๐Ÿ™Œ

10. References ๐Ÿ“š

10.1. Normative References ๐Ÿ’–

   [1]   Freed, N. and K. Moore, "Definition of the URL MIME External-
         Body Access-Type", RFC 2017, October 1996.

   [2]   Freed, N. and N. Borenstein, "Multipurpose Internet Mail
         Extensions (MIME) Part One: Format of Internet Message Bodies",
         RFC 2045, November 1996.

   [3]   Freed, N. and N. Borenstein, "Multipurpose Internet Mail
         Extensions (MIME) Part Two: Media Types", RFC 2046, November
         1996.

   [4]   Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and T.
         Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC
         2068, January 1997.

   [5]   Bradner, S., "Key words for use in RFCs to Indicate Requirement
         Levels", BCP 14, RFC 2119, March 1997.

   [6]   Daniel, R., "A Trivial Convention for using HTTP in URN
         Resolution", RFC 2169, June 1997.

   [7]   Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
         Resource Identifiers (URI): Generic Syntax", STD 66, RFC 3986,
         January 2005.

   [8]   Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1 (SHA1)",
         RFC 3174, September 2001.

   [9]   Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
         Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
         Session Initiation Protocol", RFC 3261, June 2002.

   [10]  Burger, E., "Critical Content Multi-purpose Internet Mail
         Extensions (MIME) Parameter", RFC 3459, January 2003.

   [11]  Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating
         User Agent Capabilities in the Session Initiation Protocol
         (SIP)", RFC 3840, August 2004.

   [12]  Braden, R., "Requirements for Internet Hosts - Application and
         Support", STD 3, RFC 1123, October 1989.

10.2. Informative Reference ๐Ÿงธ

   [13]  Levinson, E., "The MIME Multipart/Related Content-type", RFC
         2387, August 1998.

Author's Address ๐Ÿ“ฎ

   Eric Burger (editor)
   Cantata Technolgy, Inc.

   EMail: eburger@cantata.com
   URI:   http://www.cantata.com

Copyright (C) The Internet Society (2006).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property ๐Ÿฆ‹

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement ๐ŸŒˆ

Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).

๐Ÿ“ฆ where this page comes from