RFC 7252 - The Constrained Application Protocol (CoAP)
Pubblicato: Giugno 2014
Stato: Standards Track
Autori: Z. Shelby, K. Hartke, C. Bormann
Sommario (Abstract)
Il Constrained Application Protocol (CoAP) è un protocollo di trasferimento Web specializzato per l'uso con nodi vincolati e reti vincolate (ad esempio, a basso consumo energetico, con perdite). I nodi hanno spesso microcontrollori a 8 bit con piccole quantità di ROM e RAM, mentre le reti vincolate come IPv6 over Low-Power Wireless Personal Area Networks (6LoWPAN) hanno spesso tassi di errore di pacchetto elevati e una velocità tipica di decine di kbit/s. Il protocollo è progettato per applicazioni machine-to-machine (M2M) come l'energia intelligente e l'automazione degli edifici.
CoAP fornisce un modello di interazione richiesta/risposta tra endpoint applicativi, supporta la scoperta integrata di servizi e risorse e include concetti chiave del Web come URI e tipi di media Internet. CoAP è progettato per interfacciarsi facilmente con HTTP per l'integrazione con il Web, soddisfacendo al contempo requisiti specializzati come il supporto multicast, un overhead molto basso e la semplicità per ambienti vincolati.
Contenuti (Contents)
- 1. Introduction (Introduzione)
- 1.1 Features (Caratteristiche)
- 1.2 Terminology (Terminologia)
- 2. Constrained Application Protocol (Protocollo di applicazione vincolata)
- 2.1 Messaging Model (Modello di messaggistica)
- 2.2 Request/Response Model (Modello richiesta/risposta)
- 2.3 Intermediaries and Caching (Intermediari e caching)
- 2.4 Resource Discovery (Scoperta delle risorse)
- 3. Message Format (Formato del messaggio)
- 3.1 Option Format (Formato opzione)
- 3.2 Option Value Formats (Formati valore opzione)
- 4. Message Transmission (Trasmissione messaggi)
- 4.1 Messages and Endpoints (Messaggi ed endpoint)
- 4.2 Messages Transmitted Reliably (Messaggi trasmessi in modo affidabile)
- 4.3 Messages Transmitted without Reliability (Messaggi trasmessi senza affidabilità)
- 4.4 Message Correlation (Correlazione messaggi)
- 4.5 Message Deduplication (Deduplicazione messaggi)
- 4.6 Message Size (Dimensione messaggio)
- 4.7 Congestion Control (Controllo della congestione)
- 4.8 Transmission Parameters (Parametri di trasmissione)
- 5. Request/Response Semantics (Semantica richiesta/risposta)
- 5.1 Requests (Richieste)
- 5.2 Responses (Risposte)
- 5.3 Request/Response Matching (Corrispondenza richiesta/risposta)
- 5.4 Options (Opzioni)
- 5.5 Payloads and Representations (Payload e rappresentazioni)
- 5.6 Caching
- 5.7 Proxying
- 5.8 Method Definitions (Definizioni dei metodi)
- 5.9 Response Code Definitions (Definizioni dei codici di risposta)
- 5.10 Option Definitions (Definizioni delle opzioni)
- 6. CoAP URIs
- 6.1 coap URI Scheme (Schema URI coap)
- 6.2 coaps URI Scheme (Schema URI coaps)
- 6.3 Normalization and Comparison Rules (Regole di normalizzazione e confronto)
- 6.4 Decomposing URIs into Options (Scomposizione URI in opzioni)
- 6.5 Composing URIs from Options (Composizione URI da opzioni)
- 7. Discovery (Scoperta)
- 7.1 Service Discovery (Scoperta servizi)
- 7.2 Resource Discovery (Scoperta risorse)
- 8. Multicast CoAP
- 8.1 Messaging Layer (Livello messaggistica)
- 8.2 Request/Response Layer (Livello richiesta/risposta)
- 9. Securing CoAP (Protezione CoAP)
- 9.1 DTLS-Secured CoAP (CoAP protetto da DTLS)
- 10. Cross-Protocol Proxying (Proxy cross-protocollo)
- 10.1 CoAP-HTTP Proxying
- 10.2 HTTP-CoAP Proxying
- 11. Security Considerations (Considerazioni sulla sicurezza)
- 12. IANA Considerations (Considerazioni IANA)
- 13. Acknowledgements (Riconoscimenti)
- 14. References (Riferimenti)
Risorse correlate
- Testo ufficiale: RFC 7252
- Pagina ufficiale: RFC 7252 DataTracker
- Errata: RFC Editor Errata
Riferimento rapido
Cos'è CoAP?
CoAP (Constrained Application Protocol) è un protocollo Web specializzato progettato per dispositivi Internet delle cose (IoT) e ambienti vincolati.
Caratteristiche chiave
- ✅ Leggero - Adatto per dispositivi con risorse limitate
- ✅ Basato su UDP - Utilizza trasporto UDP con sicurezza DTLS opzionale
- ✅ RESTful - Modello richiesta/risposta simile a HTTP
- ✅ Risorse osservabili - Supporta il pattern publish/subscribe
- ✅ Scoperta integrata - Meccanismi di scoperta risorse e servizi
- ✅ Supporto multicast - Scoperta efficiente dei dispositivi
CoAP vs HTTP
| Caratteristica | HTTP | CoAP |
|---|---|---|
| Trasporto | TCP | UDP |
| Overhead header | Grande (centinaia di byte) | Piccolo (4 byte fissi) |
| Metodi | GET/POST/PUT/DELETE... | GET/POST/PUT/DELETE |
| Codici risposta | 3 cifre | 2 cifre |
| Caching | Supportato | Supportato |
| Proxying | Supportato | Supportato |
| Sicurezza | TLS | DTLS |
| Casi d'uso | Applicazioni Web | Dispositivi IoT |
Scenari applicativi
- 🏠 Casa intelligente - Luci, termostati, sensori
- 🏭 Automazione industriale - Monitoraggio e controllo dispositivi
- ⚡ Smart Grid - Gestione energia
- 🏢 Automazione edifici - Sistemi HVAC, illuminazione
- 📡 Reti a basso consumo - 6LoWPAN, LoRa, ecc.