miniatura|Fig.1 Estructura protocol CoAP CoAP (acrònim anglès de Constrained Application Protocol) és un protocol de la capa d'aplicació d'internet per a dispositius amb recursos restringits. CoAP permet que dispositius amb pocs recursos es puguin comunicar amb qualsevol node d'internet. CoAP és un protocol de capa d'aplicació dirigit a la internet de les coses. Propietats El nucli del protocol està basat en l'especificació internet RFC 7252 realitzada per The Internet Engineering Task Force (IETF). L'eficiència de la comunicació és molt important, per tant CoAP utilitza el protocol de transport UDP. Els errors i reintents de missatges es gestionen des de la capa d'aplicació. COAP és un protocol que segueix el model client/servidor. Opcionalment empra la seguretat DTLS (Datagram Transport Layer Security) que és la implementació del protocol SSL sobre el protocol UDP.
Implementacions NomLlenguatge de programacióVersió CoAP implementadaClient/ServidorFuncionalitats CoAP implenatadesLlicènciaEnllaçaiocoapPython 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 https://addons.mozilla.org/firefox/addon/copper-270430/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.cat/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
Comunicacions en grup amb CoAP En moltes aplicacions CoAP és essencial de tenir la possibilitat de comunicar-se amb diferents nodes al mateix temps (per exemple per apagar o encendre totes les llums alhora). CoAP solventa aquesta necessitat amb unes extensions definides en la recomanació RFC 7390 que implementa una difusió múltiple (multicast) a tots els nodes del grup.
Vegeu també OMA LWM2M: protocol obert i de baixa complexitat per a la gestió de dispositius IoT o M2M.
Internet de les coses Passarel·la (IoT) RFC 7252 RFC 7390
Referències
Categoria:Protocols de xarxa