RFC 3420
Internet Media Type message/sipfrag
RFC 3420: Internet Media Type message/sipfrag π
Okay bestie, let's get into it! π Here's the quick title-block tea β:
- Series: Network Working Group
- Author: R. Sparks, from dynamicsoft π
- Category: Standards Track β¨
- Date: November 2002 πΈ
- Obsoletes / Updates: this title block doesn't list either one π
Status of this Memo π
So this one's a standards track protocol doc π¦ for the whole Internet community, and it's basically asking everyone to chat about it and suggest improvements π«Ά. If you want the official standardization state, check the current edition of the "Internet Official Protocol Standards" (STD 1) π. And the best part? Distribution of this memo is unlimited π, so share it with everyone!
Copyright Notice β
Copyright (C) The Internet Society (2002). All Rights Reserved.
Abstract π§
Okay, so this doc registers the message/sipfrag MIME media type π. It's kinda like message/sip, except it lets you represent certain subsets of well formed Session Initiation Protocol (SIP) messages instead of needing a whole complete SIP message π. Besides the end-to-end security stuff, message/sipfrag gets used with the REFER method to share the status of a referenced request π₯. Iconic, honestly.
Table of Contents ποΈ
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Definition: message/sipfrag . . . . . . . . . . . . . . . . . 2
3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1 Valid message/sipfrag parts . . . . . . . . . . . . . . . 3
3.2 Invalid message/sipfrag parts . . . . . . . . . . . . . . 4
4. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
6. Security Considerations . . . . . . . . . . . . . . . . . . . 6
Normative References . . . . . . . . . . . . . . . . . . . . . 7
Non-Normative References . . . . . . . . . . . . . . . . . . . 7
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 7
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 8
1. Introduction β¨
Okay so the message/sip MIME media type from [1] carries an entire well formed SIP message π. Section 23.4 of [1] explains how message/sip works together with S/MIME to level up end-to-end security π. The ideas in that section can be stretched so SIP entities can make assertions about just a subset of a SIP message (like the way [6] describes) π. That's where message/sipfrag comes in, because it's the type this document defines to represent that subset β¨.
Also, the REFER method from [5] uses a subset of a SIP message to carry the status of referenced requests π¬. Letting only part of a SIP message get carried is lowkey genius, because info that could mess with privacy and confidentiality can just get removed π.
Now, this doc does not provide a way to chop a SIP message into multiple pieces, send them separately, and then put them back together π . If you need that, the message/partial type defined in [2] is the one to use π¦.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMEND", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [4] πΈ. Those are the requirement-level words, so pay attention to them! π
2. Definition: message/sipfrag π§ββοΈ
Okay, so a valid message/sipfrag part is one you could get by starting with some valid SIP message and then deleting any of the following π:
- the entire start line
- one or more entire header fields
- the body
The following Augmented Backus-Naur Form (ABNF) [3] rule describes a message/sipfrag part, using the SIP grammar elements defined in [1] π. Any expansion of an element is subject to the restrictions on valid SIP messages defined there π₯.
sipfrag = [ start-line ]
*message-header
[ CRLF [ message-body ] ]
Super important bit, bestie! π If the message/sipfrag part has a body, it MUST also contain the appropriate header fields that describe that body (like Content-Length), as required by Section 7.4 of [1], plus the null-line that separates the header from the body π .
3. Examples π
3.1 Valid message/sipfrag parts π
This section puts a vertical bar and a space to the left of each example, so you can see exactly how far each example goes β¨. Each line of the message/sipfrag element starts with the first character after the "|" pair π¦.
The first two examples show that a message/sipfrag part can be just a start line πΈ.
| INVITE sip:alice@atlanta.com SIP/2.0
or
| SIP/2.0 603 Declined
The next two show that subsets of a full SIP message can be represented π«Ά.
| REGISTER sip:atlanta.com SIP/2.0
| To: sip:alice@atlanta.com
| Contact: <sip:alicepc@atlanta.com>;q=0.9,
| <sip:alicemobile@atlanta.com>;q=0.1
| SIP/2.0 400 Bad Request
| Warning: 399 atlanta.com Your Event header field was malformed
A message/sipfrag part doesn't have to contain a start line, and this one's a good example of that π. It shows a part that might be signed to make assertions about a particular message π. (See [6].)
| From: Alice <sip:alice@atlanta.com>
| To: Bob <sip:bob@biloxi.com>
| Contact: <sip:alice@pc33.atlanta.com>
| Date: Thu, 21 Feb 2002 13:02:03 GMT
| Call-ID: a84b4c76e66710
| Cseq: 314159 INVITE
The next two examples show message/sipfrag parts that have bodies π.
| SIP/2.0 200 OK
| Content-Type: application/sdp
| Content-Length: 247
|
| v=0
| o=alice 2890844526 2890844526 IN IP4 host.anywhere.com
| s=
| c=IN IP4 host.anywhere.com
| t=0 0
| m=audio 49170 RTP/AVP 0
| a=rtpmap:0 PCMU/8000
| m=video 51372 RTP/AVP 31
| a=rtpmap:31 H261/90000
| m=video 53000 RTP/AVP 32
| a=rtpmap:32 MPV/90000
| Content-Type: text/plain
| Content-Length: 11
|
| Hi There!
3.2 Invalid message/sipfrag parts π ββοΈ
Now for the don'ts, bestie! π This section puts the character "X" followed by a space to the left of each example, so you can see the extent of each one πΈ. Each line of the invalid message/sipfrag element starts with the first character after the "X " pair π¦.
The start line, if present, must be complete and valid per [1] π .
X INVITE
X INVITE sip:alice@atlanta.com SIP/1.09
X SIP/2.0
X 404 Not Found
All header fields must be valid per [1] π«Ά.
X INVITE sip:alice@atlanta.com SIP/2.0
X Via: SIP/2.0/UDP ;branch=z9hG4bK29342a
X To: <>;tag=39234
X To: sip:alice@atlanta.com
X From: sip:bob@biloxi.com;tag=1992312
X Call-ID: this is invalid
X INVITE sip:alice@atlanta.com SIP/2.0
X From: <sip:bob@biloxi.com>;tag=z9hG4bK2912;tag=z9hG4bK99234
If a body is present in the message/sipfrag part, the headers required by Section 7.4 of [1] and the null-line separating the header from the body. π Here's what that looks like going wrong π
X MESSAGE sip:alice@atlanta.com SIP/2.0
X Hi There!
Full Copyright Statement β¨
Okay bestie, time for the legal bit, but make it cute π Copyright (C) The Internet Society (2002). All Rights Reserved. So anyone can copy this document and share it with others. You can also make derivative works that comment on or explain it, or help people implement it, and publish and distribute those too, in whole or in part, with no restrictions of any kind π¦. The one catch is that the above copyright notice and this paragraph have to stay on every copy and every derivative work.
BUT the document itself can't be modified in any way π . You can't remove the copyright notice, and you can't remove the references to the Internet Society or other Internet organizations. The exceptions are when it's needed for developing Internet standards, in which case the copyright procedures in the Internet Standards process must be followed, or when it's being translated into languages other than English π.
The limited permissions above are perpetual, and the Internet Society or its successors or assigns will never revoke them π.
This document and the info inside it is provided "AS IS", and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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. The caps are doing a lot here, not gonna lie π
Acknowledgement πΈ
Funding for the RFC Editor function is currently provided by the Internet Society. So the Internet Society is covering the RFC Editor right now, which is honestly iconic ππ«Ά
π¦ where this page comes from
- ietf: rfc3420 2002-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms