miniatura|Fig.1 Estructura protocolo 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. 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.
Implementaciones NombreLenguaje de programaciónVersión CoAP implementadaCliente/ServidorFuncionalidades CoAP implementadasLicenciaEnlaceaiocoapPython 3RFC 7252Client + ServerBlockwise Transfers, Observe (parcial)MIThttps://pypi.python.org/pypi/aiocoapCaliforniumJavaRFC 7252Client + ServerObserve, Blockwise Transfers, DTLSEPL+EDLhttps://www.eclipse.org/californiumcantcoapC++/CRFC 7252Client + ServerBSDhttps://github.com/staropram/cantcoapCanopusGoRFC 7252Client + ServerCoreApache License 2.0https://github.com/zubairhamed/canopusCoAP implementation for GoGoRFC 7252Client + ServerCore + Draft SubscribeMIThttps://github.com/dustin/go-coapCoAP.NETC#RFC 7252, coap-13, coap-08, coap-03Client + ServerCore, Observe, Blockwise Transfers3-clause BSDhttps://github.com/smeshlink/CoAP.NETCoAPSharpC#, .NETRFC 7252Client + ServerCore, Observe, Block, RDLGPLhttp://www.coapsharp.comCoAPthonPythonRFC 7252Client + Server + Forward Proxy + Reverse ProxyObserve, Multicast server discovery, CoRE Link Format parsing, Block-wiseMIThttps://github.com/Tanganelli/CoAPthonCopperJavaScript (Browser Plugin)RFC 7252ClientObserve, Blockwise Transfers3-clause BSDhttps://github.com/mkovatsc/Copper eCoAPCRFC 7252Client + ServerCoreMIThttps://gitlab.com/jobol/ecoapErbium for ContikiCRFC 7252Client + ServerObserve, Blockwise Transfers3-clause BSDhttp://www.contiki-os.org/ (er-rest-example)iCoAPObjective-CRFC 7252ClientCore, Observe, Blockwise TransfersMIThttps://github.com/stuffrabbit/iCoAPjCoAPJavaRFC 7252Client + ServerObserve, Blockwise TransfersApache License 2.0https://code.google.com/p/jcoap/libcoapCRFC 7252Client + ServerObserve, Blockwise Transfers, DTLSBSD/GPLhttp://sourceforge.net/projects/libcoap/developLibNyociCRFC 7252Client + ServerCore, Observe, Block, DTLSMIThttps://github.com/darconeous/libnyocilobaro-coapCRFC 7252Client + ServerObserve, Blockwise TransfersMIThttp://www.lobaro.com/lobaro-coapmicrocoapCRFC 7252Client + ServerMIThttps://github.com/1248/microcoapnCoapJavaRFC 7252Client + ServerObserve, Blockwise Transfers, CoRE Link Format, Endpoint-ID-DraftBSDhttps://github.com/okleine/nCoAPnode-coapJavascriptRFC 7252Client + ServerCore, Observe, BlockMIThttps://github.com/mcollina/node-coapRuby coapRubyRFC 7252Client + Server (david)Core, Observe, Block, RDMIT, GPLhttps://github.com/nning/coap https://github.com/nning/davidSensinode C Device LibraryCRFC 7252Client + ServerCore, Observe, Block, RDComercialhttps://silver.arm.com/browse/SEN00Sensinode Java Device LibraryJava SERFC 7252Client + ServerCore, Observe, Block, RDComercialhttps://silver.arm.com/browse/SEN00Sensinode NanoService PlatformJava SERFC 7252Cloud ServerCore, Observe, Block, RDComercialhttps://silver.arm.com/browse/SEN00SwiftCoAPSwiftRFC 7252Client + ServerCore, Observe, Blockwise TransfersMIThttps://github.com/stuffrabbit/SwiftCoAPTinyOS CoapBlipnesC/Ccoap-13Client + ServerObserve, Blockwise TransfersBSDhttp://docs.tinyos.net/tinywiki/index.php/CoAP txThingsPython (Twisted)RFC 7252Client + ServerBlockwise Transfers, Observe (partial)MIThttps://github.com/mwasilak/txThings/FreeCoAPCRFC 7252Client + Server + HTTP/CoAP ProxyCore, DTLS, Blockwise TransfersBSDhttp://www.freecoap.org coap-rsRustRFC 7252Client + ServerMIThttps://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 Internet de las cosas RFC 7252 RFC 7390 MQTT
Referencias
Categoría:Protocolos de red