| rfc7641v2.txt | rfc7641.txt | |||
|---|---|---|---|---|
| skipping to change at page 2, line 9 | skipping to change at page 3, line 7 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.1. Background . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Background . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.2. Protocol Overview . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Protocol Overview . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.3. Consistency Model . . . . . . . . . . . . . . . . . . . . 5 | 1.3. Consistency Model . . . . . . . . . . . . . . . . . . . . 6 | |||
| 1.4. Observable Resources . . . . . . . . . . . . . . . . . . 6 | 1.4. Observable Resources . . . . . . . . . . . . . . . . . . 7 | |||
| 1.5. Requirements Notation . . . . . . . . . . . . . . . . . . 7 | 1.5. Requirements Notation . . . . . . . . . . . . . . . . . . 8 | |||
| 2. The Observe Option . . . . . . . . . . . . . . . . . . . . . 7 | 2. The Observe Option . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3. Client-Side Requirements . . . . . . . . . . . . . . . . . . 8 | 3. Client-Side Requirements . . . . . . . . . . . . . . . . . . 9 | |||
| 3.1. Request . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.1. Request . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.2. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Notifications . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.3. Caching . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Caching . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.4. Reordering . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.4. Reordering . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.5. Transmission . . . . . . . . . . . . . . . . . . . . . . 11 | 3.5. Transmission . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.6. Cancellation . . . . . . . . . . . . . . . . . . . . . . 11 | 3.6. Cancellation . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4. Server-Side Requirements . . . . . . . . . . . . . . . . . . 12 | 4. Server-Side Requirements . . . . . . . . . . . . . . . . . . 13 | |||
| 4.1. Request . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 4.1. Request . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4.2. Notifications . . . . . . . . . . . . . . . . . . . . . . 13 | 4.2. Notifications . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.3. Caching . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Caching . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.4. Reordering . . . . . . . . . . . . . . . . . . . . . . . 14 | 4.4. Reordering . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 4.5. Transmission . . . . . . . . . . . . . . . . . . . . . . 15 | 4.5. Transmission . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5. Intermediaries . . . . . . . . . . . . . . . . . . . . . . . 18 | 5. Intermediaries . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 6. Web Linking . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 6. Web Linking . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 21 | 9.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 22 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| A.1. Client/Server Examples . . . . . . . . . . . . . . . . . 22 | A.1. Client/Server Examples . . . . . . . . . . . . . . . . . 24 | |||
| A.2. Proxy Examples . . . . . . . . . . . . . . . . . . . . . 25 | A.2. Proxy Examples . . . . . . . . . . . . . . . . . . . . . 28 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 28 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 28 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 1. Introduction | 1. Introduction | |||
| 1.1. Background | 1.1. Background | |||
| The Constrained Application Protocol (CoAP) [RFC7252] is intended to | The Constrained Application Protocol (CoAP) [RFC7252] is intended to | |||
| provide RESTful services [REST] not unlike HTTP [RFC7230] while | provide RESTful services [REST] not unlike HTTP [RFC7230] while | |||
| reducing the complexity of implementation as well as the size of | reducing the complexity of implementation as well as the size of | |||
| packets exchanged in order to make these services useful in a highly | packets exchanged in order to make these services useful in a highly | |||
| constrained network of themselves highly constrained nodes [RFC7228]. | constrained network of themselves highly constrained nodes [RFC7228]. | |||
| skipping to change at page 5, line 33 | skipping to change at page 6, line 33 | |||
| | | | | | | |||
| | 2.05 Content | | | 2.05 Content | | |||
| | Token: 0x4a | Notification upon | | Token: 0x4a | Notification upon | |||
| | Observe: 60 | a state change | | Observe: 60 | a state change | |||
| | Payload: 23.1 Cel | | | Payload: 23.1 Cel | | |||
| |<-------------------+ | |<-------------------+ | |||
| | | | | | | |||
| Figure 2: Observing a Resource in CoAP | Figure 2: Observing a Resource in CoAP | |||
| Note: In this document, "Cel" stands for "degrees Celsius". | ||||
| A client remains on the list of observers as long as the server can | A client remains on the list of observers as long as the server can | |||
| determine the client's continued interest in the resource. The | determine the client's continued interest in the resource. The | |||
| server may send a notification in a confirmable CoAP message to | server may send a notification in a confirmable CoAP message to | |||
| request an acknowledgement from the client. When the client | request an acknowledgement from the client. When the client | |||
| deregisters, rejects a notification, or the transmission of a | deregisters, rejects a notification, or the transmission of a | |||
| notification times out after several transmission attempts, the | notification times out after several transmission attempts, the | |||
| client is considered no longer interested in the resource and is | client is considered no longer interested in the resource and is | |||
| removed by the server from the list of observers. | removed by the server from the list of observers. | |||
| 1.3. Consistency Model | 1.3. Consistency Model | |||
| skipping to change at page 14, line 18 | skipping to change at page 15, line 36 | |||
| cannot tell if the observed state and the actual state are still in | cannot tell if the observed state and the actual state are still in | |||
| sync. Thus, when the age of the latest notification becomes greater | sync. Thus, when the age of the latest notification becomes greater | |||
| than its indicated Max-Age, the client no longer has a usable | than its indicated Max-Age, the client no longer has a usable | |||
| representation of the resource state. The server MAY wish to prevent | representation of the resource state. The server MAY wish to prevent | |||
| that by sending a new notification with the unchanged representation | that by sending a new notification with the unchanged representation | |||
| and a new Max-Age just before the Max-Age indicated earlier expires. | and a new Max-Age just before the Max-Age indicated earlier expires. | |||
| 4.3.2. Validation | 4.3.2. Validation | |||
| A client can include a set of entity tags in its request using the | A client can include a set of entity tags in its request using the | |||
| ETag Option. When a observed resource changes its state and the | ETag Option. When an observed resource changes its state and the | |||
| origin server is about to send a 2.05 (Content) notification, then | origin server is about to send a 2.05 (Content) notification, then | |||
| whenever that notification has an entity tag in the set of entity | whenever that notification has an entity tag in the set of entity | |||
| tags specified by the client, the server MAY send a 2.03 (Valid) | tags specified by the client, the server MAY send a 2.03 (Valid) | |||
| response with an appropriate ETag Option instead. | response with an appropriate ETag Option instead. | |||
| 4.4. Reordering | 4.4. Reordering | |||
| Because messages can get reordered, the client needs a way to | Because messages can get reordered, the client needs a way to | |||
| determine if a notification arrived later than a newer notification. | determine if a notification arrived later than a newer notification. | |||
| For this purpose, the server MUST set the value of the Observe Option | For this purpose, the server MUST set the value of the Observe Option | |||
| skipping to change at page 20, line 37 | skipping to change at page 22, line 21 | |||
| | Number | Name | Reference | | | Number | Name | Reference | | |||
| +--------+---------+-----------+ | +--------+---------+-----------+ | |||
| | 6 | Observe | RFC 7641 | | | 6 | Observe | RFC 7641 | | |||
| +--------+---------+-----------+ | +--------+---------+-----------+ | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, | |||
| RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5988] Nottingham, M., "Web Linking", RFC 5988, DOI 10.17487/ | [RFC5988] Nottingham, M., "Web Linking", RFC 5988, | |||
| RFC5988, October 2010, | DOI 10.17487/RFC5988, October 2010, | |||
| <http://www.rfc-editor.org/info/rfc5988>. | <http://www.rfc-editor.org/info/rfc5988>. | |||
| [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained | [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained | |||
| Application Protocol (CoAP)", RFC 7252, DOI 10.17487/ | Application Protocol (CoAP)", RFC 7252, | |||
| RFC7252, June 2014, | DOI 10.17487/RFC7252, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7252>. | <http://www.rfc-editor.org/info/rfc7252>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [GOF] Gamma, E., Helm, R., Johnson, R., and J. Vlissides, | [GOF] Gamma, E., Helm, R., Johnson, R., and J. Vlissides, | |||
| "Design Patterns: Elements of Reusable Object-Oriented | "Design Patterns: Elements of Reusable Object-Oriented | |||
| Software", Addison-Wesley Professional Computing Series, | Software", Addison-Wesley Professional Computing Series, | |||
| 1994. | 1994. | |||
| [REST] Fielding, R., "Architectural Styles and the Design of | [REST] Fielding, R., "Architectural Styles and the Design of | |||
| Network-based Software Architectures", Ph.D. Dissertation, | Network-based Software Architectures", Ph.D. Dissertation, | |||
| University of California, Irvine, 2000, | University of California, Irvine, 2000, | |||
| <http://www.ics.uci.edu/~fielding/pubs/dissertation/ | <http://www.ics.uci.edu/~fielding/pubs/dissertation/ | |||
| fielding_dissertation.pdf>. | fielding_dissertation.pdf>. | |||
| [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, | [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, | |||
| DOI 10.17487/RFC1982, August 1996, | DOI 10.17487/RFC1982, August 1996, | |||
| <http://www.rfc-editor.org/info/rfc1982>. | <http://www.rfc-editor.org/info/rfc1982>. | |||
| [RFC5405] Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines | [RFC5405] Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines | |||
| for Application Designers", BCP 145, RFC 5405, DOI | for Application Designers", BCP 145, RFC 5405, | |||
| 10.17487/RFC5405, November 2008, | DOI 10.17487/RFC5405, November 2008, | |||
| <http://www.rfc-editor.org/info/rfc5405>. | <http://www.rfc-editor.org/info/rfc5405>. | |||
| [RFC5989] Roach, A., "A SIP Event Package for Subscribing to Changes | [RFC5989] Roach, A., "A SIP Event Package for Subscribing to Changes | |||
| to an HTTP Resource", RFC 5989, DOI 10.17487/RFC5989, | to an HTTP Resource", RFC 5989, DOI 10.17487/RFC5989, | |||
| October 2010, <http://www.rfc-editor.org/info/rfc5989>. | October 2010, <http://www.rfc-editor.org/info/rfc5989>. | |||
| [RFC6202] Loreto, S., Saint-Andre, P., Salsano, S., and G. Wilkins, | [RFC6202] Loreto, S., Saint-Andre, P., Salsano, S., and G. Wilkins, | |||
| "Known Issues and Best Practices for the Use of Long | "Known Issues and Best Practices for the Use of Long | |||
| Polling and Streaming in Bidirectional HTTP", RFC 6202, | Polling and Streaming in Bidirectional HTTP", RFC 6202, | |||
| DOI 10.17487/RFC6202, April 2011, | DOI 10.17487/RFC6202, April 2011, | |||
| <http://www.rfc-editor.org/info/rfc6202>. | <http://www.rfc-editor.org/info/rfc6202>. | |||
| [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | [RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link | |||
| Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, | Format", RFC 6690, DOI 10.17487/RFC6690, August 2012, | |||
| <http://www.rfc-editor.org/info/rfc6690>. | <http://www.rfc-editor.org/info/rfc6690>. | |||
| [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | |||
| Constrained-Node Networks", RFC 7228, DOI 10.17487/ | Constrained-Node Networks", RFC 7228, | |||
| RFC7228, May 2014, | DOI 10.17487/RFC7228, May 2014, | |||
| <http://www.rfc-editor.org/info/rfc7228>. | <http://www.rfc-editor.org/info/rfc7228>. | |||
| [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
| Protocol (HTTP/1.1): Message Syntax and Routing", RFC | Protocol (HTTP/1.1): Message Syntax and Routing", RFC | |||
| 7230, DOI 10.17487/RFC7230, June 2014, | 7230, DOI 10.17487/RFC7230, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7230>. | <http://www.rfc-editor.org/info/rfc7230>. | |||
| Appendix A. Examples | Appendix A. Examples | |||
| A.1. Client/Server Examples | A.1. Client/Server Examples | |||
| End of changes. 8 change blocks. | ||||
| 43 lines changed or deleted | 45 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||