| rfc8710xml2.original.xml | rfc8710.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 --> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| ]> | ||||
| <?rfc strict="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <?rfc toc="yes"?> | ||||
| <?rfc tocdepth="4"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc comments="yes"?> | ||||
| <?rfc inline="yes"?> | ||||
| <rfc ipr="trust200902" docName="draft-ietf-core-multipart-ct-04" category="std"> | <rfc number="8710" xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" | |||
| docName="draft-ietf-core-multipart-ct-04" consensus="true" category="std" o | ||||
| bsoletes="" | ||||
| updates="" submissionType="IETF" xml:lang="en" tocInclude="true" | ||||
| tocDepth="4" symRefs="true" sortRefs="true" version="3"> | ||||
| <front> | <front> | |||
| <title abbrev="Multipart Content-Format for CoAP">Multipart Content-Format f | <title abbrev="Multipart Content-Format for CoAP">Multipart Content-Format | |||
| or CoAP</title> | for the Constrained Application Protocol (CoAP)</title> | |||
| <author initials="T.F." surname="Fossati" fullname="Thomas Fossati"> | <seriesInfo name="RFC" value="8710"/> | |||
| <author initials="T." surname="Fossati" fullname="Thomas Fossati"> | ||||
| <organization>ARM</organization> | <organization>ARM</organization> | |||
| <address> | <address> | |||
| <email>thomas.fossati@arm.com</email> | <email>thomas.fossati@arm.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="K." surname="Hartke" fullname="Klaus Hartke"> | <author initials="K." surname="Hartke" fullname="Klaus Hartke"> | |||
| <organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Torshamnsgatan 23</street> | <street>Torshamnsgatan 23</street> | |||
| <city>Stockholm</city> | <city>Stockholm</city> | |||
| <code>SE-16483</code> | <code>16483</code> | |||
| <country>Sweden</country> | <country>Sweden</country> | |||
| </postal> | </postal> | |||
| <email>klaus.hartke@ericsson.com</email> | <email>klaus.hartke@ericsson.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="C." surname="Bormann" fullname="Carsten Bormann"> | <author initials="C." surname="Bormann" fullname="Carsten Bormann"> | |||
| <organization>Universität Bremen TZI</organization> | <organization>Universität Bremen TZI</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Postfach 330440</street> | <street>Postfach 330440</street> | |||
| <city>Bremen</city> | <city>Bremen</city> | |||
| <code>D-28359</code> | <code>D-28359</code> | |||
| <country>Germany</country> | <country>Germany</country> | |||
| </postal> | </postal> | |||
| <phone>+49-421-218-63921</phone> | <phone>+49-421-218-63921</phone> | |||
| <email>cabo@tzi.org</email> | <email>cabo@tzi.org</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2020" month="February"/> | ||||
| <date year="2019" month="August" day="21"/> | ||||
| <area>ART</area> | <area>ART</area> | |||
| <workgroup>CoRE</workgroup> | <workgroup>CoRE</workgroup> | |||
| <keyword>CoAP, Multipart Content-Format</keyword> | <keyword>CoAP</keyword> | |||
| <keyword>Multipart Content-Format</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>This memo defines application/multipart-core, an | ||||
| <t>This memo defines application/multipart-core, an | application-independent media type that can be used to combine | |||
| application-independent media-type that can be used | representations of zero or more different media types (each with a | |||
| to combine representations of zero or more different media types into a single | Constrained Application Protocol (CoAP) Content-Format identifier) into a | |||
| message, such as a CoAP request or response body, with minimal framing overhead, | single | |||
| each along with a CoAP | representation, with minimal framing overhead. | |||
| Content-Format identifier.</t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" title="Introduction"> | <section anchor="introduction" numbered="true" toc="default"> | |||
| <name>Introduction</name> | ||||
| <t>This memo defines application/multipart-core, an application-independent | <t> | |||
| media-type that can be used to combine representations of zero or more | This memo defines application/multipart-core, an application-independent media | |||
| different media types, each along with a CoAP Content-Format | type that can be used to combine representations of zero or more different | |||
| identifier, into a single representation, with minimal framing overhead. | media types (each with a CoAP Content-Format identifier <xref target="RFC7252" | |||
| This combined representation may then be carried in a single message, | format="default"/>) into a single representation, with minimal framing | |||
| such as a CoAP <xref target="RFC7252"/> request or response body.</t> | overhead. | |||
| </t> | ||||
| <t>This simple and efficient binary framing mechanism can be employed to | ||||
| create application-specific message bodies that build on multiple | ||||
| already existing media types.</t> | ||||
| <t>This simple and efficient binary framing mechanism can be employed to | <t>As the name of the media type suggests, application/multipart-core | |||
| create application specific request and response bodies which build on | was inspired by the multipart media types initially defined in the | |||
| multiple already existing media types.</t> | original set of MIME specifications <xref target="RFC2046" | |||
| format="default"/> and later. However, while those needed to focus on the | ||||
| syntactic aspects of integrating multiple representations into one | ||||
| email, transfer protocols providing full data transparency such as CoAP | ||||
| as well as readily available encoding formats such as the Concise Binary | ||||
| Object Representation (CBOR) <xref target="RFC7049" format="default"/> | ||||
| shift the focus towards the intended use of the combined | ||||
| representations. In this respect, the basic intent of the | ||||
| application/multipart-core media type is like that of multipart/mixed | ||||
| (<xref sectionFormat="of" section="5.1.3" target="RFC2046" | ||||
| format="default"/>); however, the semantics are relaxed to allow for | ||||
| both ordered and unordered collections of media types. </t> | ||||
| <t>As the name of the media-type suggests, it is inspired by the | <ul empty="true"> | |||
| multipart media types that started to be defined with the original set | <li>Historical Note: Experience with multipart/mixed in email has shown that | |||
| of MIME specifications <xref target="RFC2046"/>. However, while those needed | recipients that care about order of included body parts will process them in | |||
| to focus on the syntactic aspects of integrating multiple | the order they are listed inside multipart/mixed, and recipients that don't | |||
| representations into one e-mail, transfer protocols providing full data | care about the order will ignore it anyway. The media type multipart/parallel | |||
| transparency such as CoAP as well as readily available encoding | that was intended for unordered collections didn't deploy. | |||
| formats such as the Concise Binary Object Representation (CBOR) | </li> | |||
| <xref target="RFC7049"/> shift the focus towards the intended | </ul> | |||
| use of the combined representations. In this respect, the basic | <t> | |||
| intent of the application/multipart-core media type is like that of | The detailed semantics of the representations are refined by the context | |||
| multipart/mixed (Section 5.1.3 of <xref target="RFC2046"/>). The detailed | established by the application in the accompanying request parameters, e.g., | |||
| semantics of the representations are refined by the context | the resource URI and any further options (header fields), but three usage | |||
| established by the application in the accompanying request parameters, | scenarios are envisioned:</t> | |||
| e.g., the resource URI and any further options (header fields), but | ||||
| three usage scenarios are envisioned:</t> | ||||
| <t>The individual representations in an application/multipart-core body | <t>In one case, the individual representations in an application/multipart -core message body | |||
| occur in a sequence, which may be employed by an application where | occur in a sequence, which may be employed by an application where | |||
| such a sequence is natural, e.g. for a number of audio snippets in | such a sequence is natural, e.g., for a number of audio snippets in | |||
| various formats to be played out in that sequence, or search results | various formats to be played out in that sequence or search results | |||
| returned in order of relevance.</t> | returned in order of relevance.</t> | |||
| <t>In other cases, an application may be more interested in a bag of | <t>In another case, an application may be more interested in a bag of | |||
| representations, which are distinguished by their Content-Format identifier, | representations (which are distinguished by their Content-Format | |||
| such as an audio snippet and a text representation accompanying it. | identifiers), such as an audio snippet and a text representation | |||
| In such a case, the sequence in which these occur may not be relevant | accompanying it. In such a case, the sequence in which these occur may | |||
| to the application. | not be relevant to the application. This specification adds the option | |||
| This specification adds the option of | of substituting a null value for the representation of an optional part, | |||
| substituting a null value for the representation of an optional part, | which indicates that the part is not present.</t> | |||
| which indicates that the part is not present.</t> | <t>A third common situation only has a single representation in the | |||
| sequence, and the sender selects just one of a set of formats | ||||
| <t>A third situation that is common only ever has a single representation | possible for this situation. This kind of union "type" of formats may | |||
| in the sequence, where the sender already selects just one of a set of formats | also make the presence of the actual representation optional, the | |||
| possible for this situation. This kind of union “type” of formats may | omission of which leads to a zero-length array.</t> | |||
| also make the presence of the actual representation optional, the | ||||
| omission of which leads to a zero-length array.</t> | ||||
| <t>Where these rules are not sufficient for an application, it might | ||||
| still use the general format defined here, but register a new media | ||||
| type and an associated Content-Format identifier to associate the | ||||
| representation with these more specific semantics instead of using | ||||
| the application/multipart-core media type.</t> | ||||
| <t>Also, future specifications might want to define rough equivalents for | ||||
| other multipart media types with specific semantics not covered by the | ||||
| present specification, such as multipart/alternative (Section 5.1.4 of | ||||
| <xref target="RFC2046"/>), where several alternative representations are | ||||
| provided in the message, but only one of those is to be selected by | ||||
| the recipient for its use (this is less likely to be useful in a | ||||
| constrained environment that has facilities for pre-flight discovery).</t> | ||||
| <section anchor="requirements-language" title="Requirements Language"> | ||||
| <t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL | ||||
| NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, | ||||
| “MAY”, and “OPTIONAL” in this document are to be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | ||||
| only when, they | ||||
| appear in all capitals, as shown here.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="encoding" title="Multipart Content-Format Encoding"> | ||||
| <t>A representation of media-type application/multipart-core contains a collecti | <t>Where these rules are not sufficient, an application might still use | |||
| on of | the general format defined here but register a new media type and an | |||
| zero or more representations, each along with their respective content | associated Content-Format identifier to associate the representation | |||
| format.</t> | with these more specific semantics instead of using the | |||
| application/multipart-core media type.</t> | ||||
| <t>Also, future specifications might want to define rough equivalents | ||||
| for other multipart media types with specific semantics not covered by | ||||
| the present specification, such as multipart/alternative (<xref | ||||
| sectionFormat="of" section="5.1.4" target="RFC2046"/>), where several | ||||
| alternative representations are provided in the message body, but only | ||||
| one of those is to be selected by the recipient for its use (this is | ||||
| less likely to be useful in a constrained environment that has | ||||
| facilities for pre-flight discovery).</t> | ||||
| <section anchor="requirements-language" numbered="true" toc="default"> | ||||
| <name>Requirements Language</name> | ||||
| <t>The collection is encoded as a CBOR <xref target="RFC7049"/> array with an ev | <t> | |||
| en | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| number of elements. | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| Counting from zero, the odd-numbered elements are a byte string containing | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| a representation, or the value <spanx style="verb">null</spanx> if an optional p | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| art is indicated | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| as not given. | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
| The (even-numbered) element preceding each of these is an unsigned integer | <xref target="RFC8174"/> when, and only when, they appear in all capitals, | |||
| specifying the content format ID of the representation following it.</t> | as shown here. | |||
| </t> | ||||
| <t>For example, a collection containing two representations, one with | </section> | |||
| content format ID 42 and one with content format ID 0, looks like this | </section> | |||
| <section anchor="encoding" numbered="true" toc="default"> | ||||
| <name>Multipart Content-Format Encoding</name> | ||||
| <t>A representation of media type application/multipart-core contains a co | ||||
| llection of | ||||
| zero or more representations, each along with their respective Content-Format.</ | ||||
| t> | ||||
| <t>The collection is encoded as a CBOR <xref target="RFC7049" | ||||
| format="default"/> array with an even number of elements. Counting from | ||||
| zero, the odd-numbered elements are a byte string containing a | ||||
| representation or the value "null" (if an optional part is | ||||
| indicated as not given). The (even-numbered) element preceding each of | ||||
| these is an unsigned integer specifying the Content-Format ID of the | ||||
| representation following it.</t> | ||||
| <t>For example, a collection containing two representations, one with | ||||
| Content-Format ID 42 and one with Content-Format ID 0, looks like this | ||||
| in CBOR diagnostic notation:</t> | in CBOR diagnostic notation:</t> | |||
| <artwork><![CDATA[[42, h'0123456789abcdef', 0, h'3031323334']]]> | ||||
| </artwork> | ||||
| <t><list style='empty'> | <t>For illustration, the structure of an application/multipart-core repres | |||
| <t>[42, h’0123456789abcdef’, 0, h’3031323334’]</t> | entation can | |||
| </list></t> | be described by the Concise Data Definition Language (CDDL) <xref target="RFC861 | |||
| 0" format="default"/> specification in <xref target="mct-cddl" format="default"/ | ||||
| <t>For illustration, the structure of an application/multipart-core representati | >:</t> | |||
| on can | <figure anchor="mct-cddl"> | |||
| be described by the CDDL <xref target="RFC8610"/> specification in <xref target= | <name>CDDL for application/multipart-core</name> | |||
| "mct-cddl"/>:</t> | <artwork type="cddl" name="" align="left" alt=""><![CDATA[ | |||
| <figure title="CDDL for application/multipart-core" anchor="mct-cddl"><artwork t | ||||
| ype="CDDL"><![CDATA[ | ||||
| multipart-core = [* multipart-part] | multipart-core = [* multipart-part] | |||
| multipart-part = (type: uint .size 2, part: bytes / null) | multipart-part = (type: uint .size 2, part: bytes / null) | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t>This format is intended as a strict specification: An implementation | <t>This format is intended as a strict specification: an implementation | |||
| MUST stop processing the representation if there is a CBOR | <bcp14>MUST</bcp14> stop processing the representation if there is a CBOR | |||
| well-formedness error, a deviation from the structure defined above, | well-formedness error, a deviation from the structure defined above, | |||
| or any residual data left after processing the CBOR data item. | or any residual data left after processing the CBOR data item. | |||
| (This generally means the representation is not processed at | (This generally means the representation is not processed at | |||
| all except if some streaming processing has already happened.)</t> | all unless some streaming processing has already happened.)</t> | |||
| </section> | ||||
| </section> | <section anchor="usage-example-observing-resources" numbered="true" toc="def | |||
| <section anchor="usage-example-observing-resources" title="Usage Example: Observ | ault"> | |||
| ing Resources"> | <name>Usage Example: Observing Resources</name> | |||
| <t>This section illustrates a less obvious example for using | ||||
| <t>This section illustrates one less obvious example for using | ||||
| application/multipart-core: combining it with observing a resource | application/multipart-core: combining it with observing a resource | |||
| <xref target="RFC7641"/> to handle pending results.</t> | <xref target="RFC7641" format="default"/> to handle pending results.</t> | |||
| <t>When a client registers to observe a resource for which no | <t>When a client registers to observe a resource for which no | |||
| representation is available yet, the server may send one or more 2.05 | representation is available yet, the server may send one or more 2.05 | |||
| (Content) notifications before sending the first actual 2.05 | (Content) notifications that indicate the lack of an actual | |||
| (Content) or 2.03 (Valid) notification. A diagram depicting possible | representation. Later on, when one becomes available, the server will | |||
| resulting sequences of notifications, identified by their respective | send the first actual 2.05 (Content) or 2.03 (Valid) notification. | |||
| response code, is shown in <xref target="fig-sequence"/>.</t> | ||||
| <figure title="Sequence of Notifications" anchor="fig-sequence"><artwork><![CDAT | A diagram depicting possible resulting sequences of notifications, identified | |||
| A[ | by their respective response code, is shown in <xref target="fig-sequence" | |||
| format="default"/>.</t> | ||||
| <figure anchor="fig-sequence"> | ||||
| <name>Sequence of Notifications</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| __________ __________ __________ | __________ __________ __________ | |||
| | | | | | | | | | | | | | | |||
| ---->| 2.05 |---->| 2.05 / |---->| 4.xx / | | ---->| 2.05 |---->| 2.05 / |---->| 4.xx / | | |||
| | Pending | | 2.03 | | 5.xx | | | Pending | | 2.03 | | 5.xx | | |||
| |__________| |__________| |__________| | |__________| |__________| |__________| | |||
| ^ \ \ ^ \ ^ | ^ \ \ ^ \ ^ | |||
| \__/ \ \___/ / | \__/ \ \___/ / | |||
| \_______________________/ | \_______________________/ | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </figure> | ||||
| <t>The specification of the Observe option requires that all | <t>The specification of the Observe option requires that all | |||
| notifications carry the same Content-Format. The | notifications carry the same Content-Format. The | |||
| application/multipart-core media type can be used to provide that | application/multipart-core media type can be used to provide that | |||
| Content-Format: e.g., carrying an empty list of representations in the | Content-Format, e.g., by carrying an empty list of representations in the | |||
| case marked as “Pending” in <xref target="fig-sequence"/>, and carrying a single | case marked as "Pending" in <xref target="fig-sequence" format="default"/> and c | |||
| representation specified as the target content-format in the case in | arrying a single | |||
| representation specified as the target Content-Format in the case in | ||||
| the middle of the figure.</t> | the middle of the figure.</t> | |||
| </section> | ||||
| </section> | <section anchor="implementation-hints" numbered="true" toc="default"> | |||
| <section anchor="implementation-hints" title="Implementation Hints"> | <name>Implementation Hints</name> | |||
| <t>This section describes the serialization for readers that may be new | ||||
| <t>This section describes the serialization for readers that may be new | ||||
| to CBOR. It does not contain any new information.</t> | to CBOR. It does not contain any new information.</t> | |||
| <t>An application/multipart-core representation carrying no | ||||
| <t>An application/multipart-core representation carrying no | ||||
| representations is represented by an empty CBOR array, which is | representations is represented by an empty CBOR array, which is | |||
| serialized as a single byte with the value 0x80.</t> | serialized as a single byte with the value 0x80.</t> | |||
| <t>An application/multipart-core representation carrying a single | ||||
| <t>An application/multipart-core representation carrying a single | ||||
| representation is represented by a two-element CBOR array, which is | representation is represented by a two-element CBOR array, which is | |||
| serialized as 0x82 followed by the two elements. The first element is | serialized as 0x82 followed by the two elements. The first element is | |||
| an unsigned integer for the Content-Format value, which is represented as descri bed in | an unsigned integer for the Content-Format value, which is represented as descri bed in | |||
| <xref target="tbl-integer"/>. The second element is the object as a byte string | <xref target="tbl-integer" format="default"/>. The second element is the object | |||
| , | as a byte string, | |||
| which is represented as a length as described in <xref target="tbl-length"/> | which is represented as a length as described in <xref target="tbl-length" forma | |||
| t="default"/> | ||||
| followed by the bytes of the object.</t> | followed by the bytes of the object.</t> | |||
| <table anchor="tbl-integer" align="center"> | ||||
| <name>Serialization of Content-Format</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Serialization</th> | ||||
| <th align="left">Value</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">0x00..0x17</td> | ||||
| <td align="left">0..23</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">0x18 0xnn</td> | ||||
| <td align="left">24..255</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">0x19 0xnn 0xnn</td> | ||||
| <td align="left">256..65535</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <table anchor="tbl-length" align="center"> | ||||
| <name>Serialization of Object Length</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Serialization</th> | ||||
| <th align="left">Length</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">0x40..0x57</td> | ||||
| <td align="left">0..23</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">0x58 0xnn</td> | ||||
| <td align="left">24..255</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">0x59 0xnn 0xnn</td> | ||||
| <td align="left">256..65535</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">0x5a 0xnn 0xnn 0xnn 0xnn</td> | ||||
| <td align="left">65536..4294967295</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">0x5b 0xnn .. 0xnn (8 bytes)</td> | ||||
| <td align="left">4294967296..</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>For example, a single text/plain object (Content-Format 0) of value | ||||
| "Hello World" (11 characters) would be serialized as follows:</t> | ||||
| <artwork><![CDATA[0x82 0x00 0x4b H e l l o 0x20 W o r l d]]> | ||||
| </artwork> | ||||
| <texttable title="Serialization of content-format" anchor="tbl-integer"> | <t>In effect, the serialization for a single object is done by prefixing | |||
| <ttcol align='left'>Serialization</ttcol> | the object with information that there is one object (here: 0x82), | |||
| <ttcol align='left'>Value</ttcol> | information about its Content-Format (here: 0x00), and information | |||
| <c>0x00..0x17</c> | regarding its length (here: 0x4b).</t> | |||
| <c>0..23</c> | ||||
| <c>0x18 0xnn</c> | ||||
| <c>24..255</c> | ||||
| <c>0x19 0xnn 0xnn</c> | ||||
| <c>256..65535</c> | ||||
| </texttable> | ||||
| <texttable title="Serialization of object length" anchor="tbl-length"> | ||||
| <ttcol align='left'>Serialization</ttcol> | ||||
| <ttcol align='left'>Length</ttcol> | ||||
| <c>0x40..0x57</c> | ||||
| <c>0..23</c> | ||||
| <c>0x58 0xnn</c> | ||||
| <c>24..255</c> | ||||
| <c>0x59 0xnn 0xnn</c> | ||||
| <c>256..65535</c> | ||||
| <c>0x5a 0xnn 0xnn 0xnn 0xnn</c> | ||||
| <c>65536..4294967295</c> | ||||
| <c>0x5b 0xnn .. 0xnn (8 bytes)</c> | ||||
| <c>4294967296..</c> | ||||
| </texttable> | ||||
| <t>For example, a single text/plain object (content-format 0) of value | ||||
| “Hello World” (11 characters) would be serialized as</t> | ||||
| <t><list style='empty'> | ||||
| <t>0x82 0x00 0x4b H e l l o 0x20 W o r l d</t> | ||||
| </list></t> | ||||
| <t>In effect, the serialization for a single object is done by prefixing | ||||
| the object with information that there is one object (here: 0x82), | ||||
| about its content-format (here: 0x00) and its length (here: 0x4b).</t> | ||||
| <t>For more than one representation included in an | ||||
| application/multipart-core representation, the head of the CBOR array | ||||
| is adjusted (0x84 for two representations, 0x86 for three, …) and | ||||
| the sequences of content-format and embedded representations follow.</t> | ||||
| <t>For instance, the example from <xref target="encoding"/> would be serialized | ||||
| as:</t> | ||||
| <t><list style='empty'> | ||||
| <t>0x84 (*) 0x182A 0x48 0x0123456789ABCDEF (+) 0x00 0x45 0x3031323334</t> | ||||
| </list></t> | ||||
| <t>where (*) marks the start of the information about the first | ||||
| representation (content-format 42, byte string length 8) and, (+), of | ||||
| the second representation (content-format 0, byte string length 5).</t> | ||||
| </section> | ||||
| <section anchor="IANA" title="IANA Considerations"> | ||||
| <section anchor="registration-of-media-type-applicationmultipart-core" title="Re | <t>For more than one representation included in an | |||
| gistration of media type application/multipart-core"> | application/multipart-core representation, the head of the CBOR array is | |||
| adjusted (0x84 for two representations, 0x86 for three, etc.), and the | ||||
| sequences of Content-Format and embedded representations follow.</t> | ||||
| <t>For instance, the example from <xref target="encoding" | ||||
| format="default"/> would be serialized as follows:</t> | ||||
| <artwork><![CDATA[0x84 (*) 0x182A 0x48 0x0123456789ABCDEF (+) 0x00 0x45 0x303132 | ||||
| 3334]]> | ||||
| </artwork> | ||||
| <t>IANA is requested to register the following media type <xref target="RFC6838" | <t>where (*) marks the start of the information about the first | |||
| />:</t> | representation (Content-Format 42, byte string length 8), and (+) marks | |||
| the start of the second representation (Content-Format 0, byte string | ||||
| length 5).</t> | ||||
| </section> | ||||
| <t><list style="hanging"> | <section anchor="IANA" numbered="true" toc="default"> | |||
| <t hangText='Type name:'> | <name>IANA Considerations</name> | |||
| application</t> | <section anchor="registration-of-media-type-applicationmultipart-core" num | |||
| <t hangText='Subtype name:'> | bered="true" toc="default"> | |||
| multipart-core</t> | <name>Registration of Media Type application/multipart-core</name> | |||
| <t hangText='Required parameters:'> | <t>IANA has registered the following media type <xref target="RFC6838" f | |||
| N/A</t> | ormat="default"/>:</t> | |||
| <t hangText='Optional parameters:'> | <dl newline="false" spacing="normal"> | |||
| N/A</t> | <dt>Type name:</dt> | |||
| <t hangText='Encoding considerations:'> | <dd> | |||
| binary</t> | application</dd> | |||
| <t hangText='Security considerations:'> | <dt>Subtype name:</dt> | |||
| See the Security Considerations Section of RFCthis</t> | <dd> | |||
| <t hangText='Interoperability considerations:'> | multipart-core</dd> | |||
| N/A</t> | <dt>Required parameters:</dt> | |||
| <t hangText='Published specification:'> | <dd> | |||
| RFCthis</t> | N/A</dd> | |||
| <t hangText='Applications that use this media type:'> | <dt>Optional parameters:</dt> | |||
| <dd> | ||||
| N/A</dd> | ||||
| <dt>Encoding considerations:</dt> | ||||
| <dd> | ||||
| binary</dd> | ||||
| <dt>Security considerations:</dt> | ||||
| <dd> | ||||
| See the Security Considerations section of RFC 8710.</dd> | ||||
| <dt>Interoperability considerations:</dt> | ||||
| <dd> | ||||
| N/A</dd> | ||||
| <dt>Published specification:</dt> | ||||
| <dd> | ||||
| RFC 8710</dd> | ||||
| <dt>Applications that use this media type:</dt> | ||||
| <dd> | ||||
| Applications that need to combine representations of zero or more different | Applications that need to combine representations of zero or more different | |||
| media types into one, e.g., EST-CoAP <xref target="I-D.ietf-ace-coap-est"/></t> | media types into one, e.g., EST over secure CoAP (EST-CoAP) <xref target="I-D.ie | |||
| <t hangText='Fragment identifier considerations:'> | tf-ace-coap-est" format="default"/></dd> | |||
| <dt>Fragment identifier considerations:</dt> | ||||
| <dd> | ||||
| The syntax and semantics of fragment identifiers specified for | The syntax and semantics of fragment identifiers specified for | |||
| “application/multipart-core” is as specified for “application/cbor”. | application/multipart-core are as specified for application/cbor. (At | |||
| (At publication of this document, there is no fragment | publication of this document, there is no fragment identification syntax | |||
| identification syntax defined for “application/cbor”.)</t> | defined for application/cbor.)</dd> | |||
| <t hangText='Additional information:'> | <dt>Additional information:</dt> | |||
| <list style="hanging"> | <dd> | |||
| <t hangText='Deprecated alias names for this type:'> | <ul> | |||
| N/A</t> | <li>Deprecated alias names for this type: N/A</li> | |||
| <t hangText='Magic number(s):'> | <li>Magic number(s): N/A</li> | |||
| N/A</t> | <li>File extension(s): N/A</li> | |||
| <t hangText='File extension(s):'> | <li>Macintosh file type code(s):N/A</li> | |||
| N/A</t> | </ul> | |||
| <t hangText='Macintosh file type code(s):'> | </dd> | |||
| N/A</t> | <dt>Person & email address to contact for further information:</dt | |||
| </list> | > | |||
| </t> | <dd> | |||
| <t hangText='Person & email address to contact for further information:'> | iesg@ietf.org</dd> | |||
| iesg&ietf.org</t> | <dt>Intended usage:</dt> | |||
| <t hangText='Intended usage:'> | <dd> | |||
| COMMON</t> | COMMON</dd> | |||
| <t hangText='Restrictions on usage:'> | <dt>Restrictions on usage:</dt> | |||
| N/A</t> | <dd> | |||
| <t hangText='Author:'> | N/A</dd> | |||
| CoRE WG</t> | <dt>Author:</dt> | |||
| <t hangText='Change controller:'> | <dd> | |||
| IESG</t> | CoRE WG</dd> | |||
| <t hangText='Provisional registration? (standards tree only):'> | <dt>Change controller:</dt> | |||
| no</t> | <dd> | |||
| </list></t> | IESG</dd> | |||
| <dt>Provisional registration? (standards tree only):</dt> | ||||
| </section> | <dd> | |||
| <section anchor="registration-of-a-content-format-identifier-for-applicationmult | no</dd> | |||
| ipart-core" title="Registration of a Content-Format identifier for application/m | </dl> | |||
| ultipart-core"> | </section> | |||
| <section anchor="registration-of-a-content-format-identifier-for-applicati | ||||
| <t>IANA is requested to register the following Content-Format to the | onmultipart-core" numbered="true" toc="default"> | |||
| “CoAP Content-Formats” subregistry, within the “Constrained RESTful | <name>Registration of a Content-Format Identifier for application/multip | |||
| Environments (CoRE) Parameters” registry, from the Expert Review space | art-core</name> | |||
| (0..255):</t> | <t>IANA has registered the following Content-Format in the "CoAP | |||
| Content-Formats" subregistry within the "Constrained RESTful | ||||
| <texttable> | Environments (CoRE) Parameters" registry:</t> | |||
| <ttcol align='left'>Media Type</ttcol> | <table align="center"> | |||
| <ttcol align='left'>Encoding</ttcol> | <name>Addition to "CoAP Content-Formats" Registry</name> | |||
| <ttcol align='left'>ID</ttcol> | <thead> | |||
| <ttcol align='left'>Reference</ttcol> | <tr> | |||
| <c>application/multipart-core</c> | <th align="left">Media Type</th> | |||
| <c>—</c> | <th align="left">Encoding</th> | |||
| <c>TBD1</c> | <th align="left">ID</th> | |||
| <c>RFCthis</c> | <th align="left">Reference</th> | |||
| </texttable> | </tr> | |||
| </thead> | ||||
| </section> | <tbody> | |||
| </section> | <tr> | |||
| <section anchor="Security" title="Security Considerations"> | <td align="left">application/multipart-core</td> | |||
| <td align="left">-</td> | ||||
| <t>The security considerations of <xref target="RFC7049"/> apply. In particular | <td align="left">62</td> | |||
| , | <td align="left">RFC 8710</td> | |||
| resource exhaustion attacks may employ large values for the byte string | </tr> | |||
| size fields, or deeply nested structures of recursively embedded | </tbody> | |||
| application/multipart-core representations.</t> | </table> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <t>The security considerations of <xref target="RFC7049" format="default"/> | ||||
| apply. In particular, resource exhaustion attacks may employ large values for | ||||
| the byte string size fields or employ deeply nested structures of recursively | ||||
| embedded application/multipart-core representations.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title='Normative References'> | <displayreference target="I-D.ietf-ace-coap-est" to="EST-COAPS"/> | |||
| <references> | ||||
| <reference anchor="RFC7049" target='https://www.rfc-editor.org/info/rfc7049'> | <name>References</name> | |||
| <front> | <references> | |||
| <title>Concise Binary Object Representation (CBOR)</title> | <name>Normative References</name> | |||
| <author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></ | ||||
| author> | ||||
| <author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></ | ||||
| author> | ||||
| <date year='2013' month='October' /> | ||||
| <abstract><t>The Concise Binary Object Representation (CBOR) is a data format wh | ||||
| ose design goals include the possibility of extremely small code size, fairly sm | ||||
| all message size, and extensibility without the need for version negotiation. T | ||||
| hese design goals make it different from earlier binary serializations such as A | ||||
| SN.1 and MessagePack.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7049'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7049'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7252" target='https://www.rfc-editor.org/info/rfc7252'> | ||||
| <front> | ||||
| <title>The Constrained Application Protocol (CoAP)</title> | ||||
| <author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></au | ||||
| thor> | ||||
| <author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></au | ||||
| thor> | ||||
| <author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></ | ||||
| author> | ||||
| <date year='2014' month='June' /> | ||||
| <abstract><t>The Constrained Application Protocol (CoAP) is a specialized web tr | ||||
| ansfer protocol for use with constrained nodes and constrained (e.g., low-power, | ||||
| lossy) networks. The nodes often have 8-bit microcontrollers with small amount | ||||
| s of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireles | ||||
| s Personal Area Networks (6LoWPANs) often have high packet error rates and a typ | ||||
| ical throughput of 10s of kbit/s. The protocol is designed for machine- to-mach | ||||
| ine (M2M) applications such as smart energy and building automation.</t><t>CoAP | ||||
| provides a request/response interaction model between application endpoints, sup | ||||
| ports built-in discovery of services and resources, and includes key concepts of | ||||
| the Web such as URIs and Internet media types. CoAP is designed to easily inte | ||||
| rface with HTTP for integration with the Web while meeting specialized requireme | ||||
| nts such as multicast support, very low overhead, and simplicity for constrained | ||||
| environments.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7252'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7252'/> | ||||
| </reference> | ||||
| <reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
| <author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></ | ||||
| author> | ||||
| <date year='1997' month='March' /> | ||||
| <abstract><t>In many standards track documents several words are used to signify | ||||
| the requirements in the specification. These words are often capitalized. This | ||||
| document defines these words as they should be interpreted in IETF documents. | ||||
| This document specifies an Internet Best Current Practices for the Internet Comm | ||||
| unity, and requests discussion and suggestions for improvements.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='2119'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2119'/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
| <author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
| or> | ||||
| <date year='2017' month='May' /> | ||||
| <abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
| pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
| ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='8174'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
| </reference> | ||||
| </references> | ||||
| <references title='Informative References'> | ||||
| <reference anchor="RFC2046" target='https://www.rfc-editor.org/info/rfc2046'> | ||||
| <front> | ||||
| <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title | ||||
| > | ||||
| <author initials='N.' surname='Freed' fullname='N. Freed'><organization /></auth | ||||
| or> | ||||
| <author initials='N.' surname='Borenstein' fullname='N. Borenstein'><organizatio | ||||
| n /></author> | ||||
| <date year='1996' month='November' /> | ||||
| <abstract><t>This second document defines the general structure of the MIME medi | ||||
| a typing system and defines an initial set of media types. [STANDARDS-TRACK]</t | ||||
| ></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='2046'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2046'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7641" target='https://www.rfc-editor.org/info/rfc7641'> | ||||
| <front> | ||||
| <title>Observing Resources in the Constrained Application Protocol (CoAP)</title | ||||
| > | ||||
| <author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></au | ||||
| thor> | ||||
| <date year='2015' month='September' /> | ||||
| <abstract><t>The Constrained Application Protocol (CoAP) is a RESTful applicatio | ||||
| n protocol for constrained nodes and networks. The state of a resource on a CoA | ||||
| P server can change over time. This document specifies a simple protocol extens | ||||
| ion for CoAP that enables CoAP clients to "observe" resources, i.e., t | ||||
| o retrieve a representation of a resource and keep this representation updated b | ||||
| y the server over a period of time. The protocol follows a best-effort approach | ||||
| for sending new representations to clients and provides eventual consistency be | ||||
| tween the state observed by each client and the actual resource state at the ser | ||||
| ver.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7641'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7641'/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-ace-coap-est"> | ||||
| <front> | ||||
| <title>EST over secure CoAP (EST-coaps)</title> | ||||
| <author initials='P' surname='Stok' fullname='Peter van der Stok'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='P' surname='Kampanakis' fullname='Panos Kampanakis'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='M' surname='Richardson' fullname='Michael Richardson'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='S' surname='Raza' fullname='Shahid Raza'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='June' day='5' year='2019' /> | ||||
| <abstract><t>Enrollment over Secure Transport (EST) is used as a certificate pro | ||||
| visioning protocol over HTTPS. Low-resource devices often use the lightweight C | ||||
| onstrained Application Protocol (CoAP) for message exchanges. This document def | ||||
| ines how to transport EST payloads over secure CoAP (EST-coaps), which allows co | ||||
| nstrained devices to use existing EST functionality for provisioning certificate | ||||
| s.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-ace-coap-est-12' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-ace-coap-est-12.t | ||||
| xt' /> | ||||
| </reference> | ||||
| <reference anchor="RFC8610" target='https://www.rfc-editor.org/info/rfc8610'> | ||||
| <front> | ||||
| <title>Concise Data Definition Language (CDDL): A Notational Convention to Expre | ||||
| ss Concise Binary Object Representation (CBOR) and JSON Data Structures</title> | ||||
| <author initials='H.' surname='Birkholz' fullname='H. Birkholz'><organization /> | ||||
| </author> | ||||
| <author initials='C.' surname='Vigano' fullname='C. Vigano'><organization /></au | ||||
| thor> | ||||
| <author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></ | ||||
| author> | ||||
| <date year='2019' month='June' /> | ||||
| <abstract><t>This document proposes a notational convention to express Concise B | ||||
| inary Object Representation (CBOR) data structures (RFC 7049). Its main goal is | ||||
| to provide an easy and unambiguous way to express structures for protocol messa | ||||
| ges and data formats that use CBOR or JSON.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8610'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8610'/> | ||||
| </reference> | ||||
| <reference anchor="RFC6838" target='https://www.rfc-editor.org/info/rfc6838'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7049. | |||
| <front> | xml"/> | |||
| <title>Media Type Specifications and Registration Procedures</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7252. | |||
| <author initials='N.' surname='Freed' fullname='N. Freed'><organization /></auth | xml"/> | |||
| or> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
| <author initials='J.' surname='Klensin' fullname='J. Klensin'><organization /></ | xml"/> | |||
| author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | |||
| <author initials='T.' surname='Hansen' fullname='T. Hansen'><organization /></au | xml"/> | |||
| thor> | </references> | |||
| <date year='2013' month='January' /> | <references> | |||
| <abstract><t>This document defines procedures for the specification and registra | <name>Informative References</name> | |||
| tion of media types for use in HTTP, MIME, and other Internet protocols. This m | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2046. | |||
| emo documents an Internet Best Current Practice.</t></abstract> | xml"/> | |||
| </front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7641. | |||
| <seriesInfo name='BCP' value='13'/> | xml"/> | |||
| <seriesInfo name='RFC' value='6838'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8610. | |||
| <seriesInfo name='DOI' value='10.17487/RFC6838'/> | xml"/> | |||
| </reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6838. | |||
| xml"/> | ||||
| <xi:include href="https://www.rfc-editor.org/refs/bibxml3/reference.I-D.ietf-ace | ||||
| -coap-est.xml"/> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section numbered="false" anchor="acknowledgements" toc="default"> | ||||
| <section numbered="no" anchor="acknowledgements" title="Acknowledgements"> | <name>Acknowledgements</name> | |||
| <t>Most of the text in this document is from earlier contributions by | ||||
| <t>Most of the text in this draft is from earlier contributions by two of | two of the authors, <contact fullname="Thomas Fossati"/> and <contact | |||
| the authors, Thomas Fossati and Klaus Hartke. The re-mix in this | fullname="Klaus Hartke"/>. This earlier work was reorganized in this docu | |||
| document is based on the requirements in <xref target="I-D.ietf-ace-coap-est"/>, | ment based on the | |||
| based on | requirements in <xref target="I-D.ietf-ace-coap-est" format="default"/> | |||
| discussions with Michael Richardson, Panos Kampanis and Peter van der | and discussions with <contact fullname="Michael Richardson"/>, | |||
| Stok.</t> | <contact fullname="Panos Kampanis"/>, and <contact fullname="Peter van | |||
| der Stok"/>.</t> | ||||
| <!-- LocalWords: multipart | ||||
| --> | ||||
| </section> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| 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 | ||||
| +q34P3zw5yeyMQAA | ||||
| </rfc> | </rfc> | |||
| End of changes. 49 change blocks. | ||||
| 634 lines changed or deleted | 387 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||