CoAP

CoAP (acrónimo inglés de Constrained Application Protocol) es un protocolo de la capa de aplicación de internet para dispositivos con recursos restringidos. CoAP permite que dispositivos con pocos recursos se puedan comunicar con cualquier nodo de Internet. CoAP es un protocolo de capa de aplicación dirigido a la internet de las cosas.[1][2][3]
Propiedades
- El núcleo del protocolo está basado en la especificación internet RFC 7252 realizada por The Internet Engineering Task Force (IETF).
- La eficiencia de la comunicación es muy importante, por tanto CoAP utiliza el protocolo de transporte UDP. Los errores y reintentos de mensajes se gestionan desde la capa de aplicación.
- CoAP es un protocolo que sigue el modelo cliente/servidor.
- Opcionalmente emplea la seguridad DTLS (Datagram Transport Layer Security) que es la implementación del protocolo SSL sobre el protocolo UDP.[4]
Implementaciones
| Nombre | Lenguaje de programación | Versión CoAP implementada | Cliente/Servidor | Funcionalidades CoAP implementadas | Licencia | Enlace |
|---|---|---|---|---|---|---|
| aiocoap | Python 3 | RFC 7252 | Client + Server | Blockwise Transfers, Observe (parcial) | MIT | https://pypi.python.org/pypi/aiocoap |
| Californium | Java | RFC 7252 | Client + Server | Observe, Blockwise Transfers, DTLS | EPL+EDL | https://www.eclipse.org/californium |
| cantcoap | C++/C | RFC 7252 | Client + Server | BSD | https://github.com/staropram/cantcoap | |
| Canopus | Go | RFC 7252 | Client + Server | Core | Apache License 2.0 | https://github.com/zubairhamed/canopus |
| CoAP implementation for Go | Go | RFC 7252 | Client + Server | Core + Draft Subscribe | MIT | https://github.com/dustin/go-coap |
| CoAP.NET | C# | RFC 7252, coap-13, coap-08, coap-03 | Client + Server | Core, Observe, Blockwise Transfers | 3-clause BSD | https://github.com/smeshlink/CoAP.NET |
| CoAPSharp | C#, .NET | RFC 7252 | Client + Server | Core, Observe, Block, RD | LGPL | http://www.coapsharp.com |
| CoAPthon | Python | RFC 7252 | Client + Server + Forward Proxy + Reverse Proxy | Observe, Multicast server discovery, CoRE Link Format parsing, Block-wise | MIT | https://github.com/Tanganelli/CoAPthon |
| Copper | JavaScript (Browser Plugin) | RFC 7252 | Client | Observe, Blockwise Transfers | 3-clause BSD | https://github.com/mkovatsc/Copper https://addons.mozilla.org/firefox/addon/copper-270430/ (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). |
| eCoAP | C | RFC 7252 | Client + Server | Core | MIT | https://gitlab.com/jobol/ecoap |
| Erbium for Contiki | C | RFC 7252 | Client + Server | Observe, Blockwise Transfers | 3-clause BSD | http://www.contiki-os.org/ (er-rest-example) |
| iCoAP | Objective-C | RFC 7252 | Client | Core, Observe, Blockwise Transfers | MIT | https://github.com/stuffrabbit/iCoAP |
| jCoAP | Java | RFC 7252 | Client + Server | Observe, Blockwise Transfers | Apache License 2.0 | https://code.google.com/p/jcoap/ |
| libcoap | C | RFC 7252 | Client + Server | Observe, Blockwise Transfers, DTLS | BSD/GPL | http://sourceforge.net/projects/libcoap/develop |
| LibNyoci | C | RFC 7252 | Client + Server | Core, Observe, Block, DTLS | MIT | https://github.com/darconeous/libnyoci |
| lobaro-coap | C | RFC 7252 | Client + Server | Observe, Blockwise Transfers | MIT | http://www.lobaro.com/lobaro-coap |
| microcoap | C | RFC 7252 | Client + Server | MIT | https://github.com/1248/microcoap | |
| nCoap | Java | RFC 7252 | Client + Server | Observe, Blockwise Transfers, CoRE Link Format, Endpoint-ID-Draft | BSD | https://github.com/okleine/nCoAP |
| node-coap | Javascript | RFC 7252 | Client + Server | Core, Observe, Block | MIT | https://github.com/mcollina/node-coap |
| Ruby coap | Ruby | RFC 7252 | Client + Server (david) | Core, Observe, Block, RD | MIT, GPL | https://github.com/nning/coap https://github.com/nning/david |
| Sensinode C Device Library | C | RFC 7252 | Client + Server | Core, Observe, Block, RD | Comercial | https://silver.arm.com/browse/SEN00 |
| Sensinode Java Device Library | Java SE | RFC 7252 | Client + Server | Core, Observe, Block, RD | Comercial | https://silver.arm.com/browse/SEN00 |
| Sensinode NanoService Platform | Java SE | RFC 7252 | Cloud Server | Core, Observe, Block, RD | Comercial | https://silver.arm.com/browse/SEN00 |
| SwiftCoAP | Swift | RFC 7252 | Client + Server | Core, Observe, Blockwise Transfers | MIT | https://github.com/stuffrabbit/SwiftCoAP |
| TinyOS CoapBlip | nesC/C | coap-13 | Client + Server | Observe, Blockwise Transfers | BSD | http://docs.tinyos.net/tinywiki/index.php/CoAP Archivado el 12 de marzo de 2013 en Wayback Machine. |
| txThings | Python (Twisted) | RFC 7252 | Client + Server | Blockwise Transfers, Observe (partial) | MIT | https://github.com/mwasilak/txThings/ |
| FreeCoAP | C | RFC 7252 | Client + Server + HTTP/CoAP Proxy | Core, DTLS, Blockwise Transfers | BSD | http://www.freecoap.org Archivado el 24 de marzo de 2017 en Wayback Machine. |
| coap-rs | Rust | RFC 7252 | Client + Server | MIT | https://github.com/Covertness/coap-rs |
Comunicaciones en grupo con CoAP
En muchas aplicaciones CoAP es esencial tener la posibilidad de comunicarse con diferentes nodos al mismo tiempo (por ejemplo para apagar o encender todas las luces a la vez). CoAP solventa esta necesidad con unas extensiones definidas en la recomendación RFC 7390 que implementa una difusión múltiple (multicast) a todos los nodos del grupo.
Véase también
Referencias
- ↑ coap.technology, ed. (20 de abril de 2017). «CoAP — Constrained Application Protocol | Overview» (en inglés). Archivado desde el original el 3 de enero de 2017. Consultado el 20 de abril de 2017.
- ↑ Chen, Xi. www.cs.wustl.edu, ed. «Constrained Application Protocol for Internet of Things» (en inglés). Consultado el 20 de abril de 2017.
- ↑ Joncas, Roxanne (20 de abril de 2017). eclipse.org, ed. «MQTT and CoAP, IoT Protocols» (en inglés). Consultado el 20 de abril de 2017.
- ↑ «Hands-on with CoAP». Google Docs (en inglés). 20 de abril de 2017.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.