CoAP ( Constrained Application Protocol ) er en weboverførselsprotokol , der er optimeret til enheder og begrænsede netværk, der bruges i trådløse sensornetværk til at danne tingens internet . Baseret på REST- arkitektoniske stil gør det det muligt at manipulere ressourcerne til at kommunikere objekter og sensorer identificeret af URI'er gennem en klient-server- interaktionsmodel ved at stole på udveksling af anmodningssvar og metoder svarende til HTTP- protokol .
I 2016 er brugen af webtjenester almindelig i internetapplikationer. CoAP udvider dette paradigme til tingenes internet og M2M- applikationer, som således kan udvikles med delte og genanvendelige RESTful webtjenester . Under hensyntagen til begrænsningerne og behovene ved tingenes internet, såsom understøttelse af asynkron eller multicast . CoAP er planlagt til at blive en allestedsnærværende applikationsprotokol i det fremtidige Internet of Things.
CoAP-protokollen er placeret på applikationsniveauet i OSI- laget og er afhængig af UDP til kommunikation. Det implementerer en ressourceobservationsmetode og giver enhedsopdagelsesfunktioner for at minimere menneskelig indblanding. Implementeret med forskellige sprog kan denne protokol bruges inden for områder som sundhed eller energistyring. Det giver ydeevne, der er velegnet til objekter med lav ressource, samt sikkerhed for følsomme data.
CoAP blev oprettet af arbejdsgruppen CoRE ( Constrained Restful Environment ) og følger op på det arbejde, der udføres af IETF med 6LoWPAN- specifikationen, som tillader begrænsede trådløse sensornetværk at bruge "IPv6" -protokollen. CoAP tillader interaktion med disse sensorer gennem RESTful webtjenester. Denne protokol blev udviklet til begrænsede batteridrevne enheder udstyret med dårligt fungerende mikroprocessorer og med en begrænset mængde RAM og ROM- hukommelse . Det giver enkelhed, lav overbelastning til begrænsede netværk med lavt strømnetværk med høje tabsprocent. CoAP muliggør M2M-kommunikation, der kræves til interaktion og drift af indbyggede systemer. Den er defineret som en generisk protokol til netværk med lav effekt og tab og er baseret på de underliggende protokoller og netværk 6LoWPAN, IEEE802.15.4 . CoAP adskiller sig imidlertid fra sin HTTP- modstykke ved sin reducerede kompleksitet med brugen af UDP, som gør det muligt for den at have en reduceret headerstørrelse, mellem 10 og 20 byte, der let kan fortolkes af begrænsede enheder, samtidig med at en mekanisme videresendes i tilfælde af tab af beskeder. Specielt udviklet til begrænsede miljøer giver det disse hovedfunktioner:
CoAP er afhængig af en klientservermodel svarende til HTTP, hvor klienter sender anmodninger til REST- ressourcer for at hente oplysninger fra en sensor eller styre en enhed og dens miljø. Imidlertid behandler CoAP udvekslinger asynkront gennem UDP-datagrammer. HTTP er en dokumenteret protokol, men dens implementering kræver en stor kodestørrelse for enheder med kun 100 kb ROM-hukommelse og høj brug af netværksressourcer.
En CoAP-anmodning svarer til en HTTP-anmodning. Det sendes af klienten for at anmode om en GET-, POST-, PUT- eller SLET-handling på en ressource identificeret af en URI . Serveren reagerer med en svarkode, muligvis ledsaget af repræsentationen af ressourcen.
CoAP-arkitekturen er opdelt i to lag. Et beskedlag , der giver pålidelighed og end-to-end-udvekslingssekventering baseret på UDP. Et "Request / Response" -lag, der bruger svarmetoder og koder til interaktioner med anmodning / respons. Imidlertid er det faktisk en og samme protokol, der tilbyder disse funktioner i dens header.
Beskedlag Det Message lag giver pålidelighed for confirmable indtastede beskeder . Det sikrer derefter end-to-end kontrol og deres retransmission i tilfælde af tab. Brug af et token giver CoAP mulighed for at skabe sammenhængen mellem anmodninger og svar under en kommunikation. Mens en “Etiket” genereret og indsat af klienten i hver CoAP-meddelelsesoverskrift tillader detektering af dubletter. Når meddelelserne ikke kræver en garanti for god routing, er det også muligt, mens du drager fordel af detekteringen af dubletter, at bruge meddelelser af ikke-bekræftende typer . En server, der modtager en bekræftende meddelelse, skal bekræfte sin modtagelse over for klienten, der initierer forbindelsen, og svare med en ACK- type bekræftelsesmeddelelse . Hvis serveren kan give svaret med det samme, føjes det til kvitteringsmeddelelsen, og transaktionen afsluttes. Ellers returneres en tom bekræftelsesmeddelelse til klienten for at indikere, at svaret er forsinket. Når en bekræftelig besked sendes til serveren, tæller klienten den forløbne tid ned og sender meddelelsen med jævne mellemrum, indtil meddelelsen er blevet kvitteret. Hvis serveren ikke er i stand til at behandle anmodningen, kan den angive dette for klienten ved at svare med en RST- type besked .Metode | Handling |
---|---|
"FÅ" | Denne metode henter repræsentationen af de oplysninger, der svarer til den ressource, der er identificeret ved URI-anmodningen. |
"STOLPE" | Denne metode anmoder om behandling af repræsentationen knyttet til den ressource, der er identificeret ved URI-anmodningen. Normalt resulterer dette i oprettelsen af en ny ressource eller dens opdatering. |
"SÆTTE" | Denne metode anmoder om, at den ressource, der er identificeret ved URI-forespørgslen, opdateres med den vedhæftede repræsentation. Repræsentationsformatet specificeres af medietypen og kodningen, der er indeholdt i indstillingen Content-Format, hvis den findes. |
"SLET" | Denne metode anmoder om, at den ressource, der er identificeret ved URI-anmodningen, slettes. |
Svar identificeres ved svarkoder, der er analoge med HTTP-protokolsucces 2.xx, fejl 4.xx eller 5.xx statuskoder, der angiver status for operationen.
Succes 2.xx, angiver, at anmodningen blev modtaget korrekt, forstået og accepteret. Klientfejl 4.xx angiver, at klienten stødte på en fejl. Intern serverfejl 5.xx angiver, at serveren ikke er i stand til at behandle anmodningen.CoAP passer ind i en 5-lags model, fysisk, datalink, netværk, transport og anvendelse.
Niveau 5 CoAP som en weboverførselsprotokol på samme niveau som HTTP-protokollen, de øverste lag ligger inden for omkredsen af webbrowseren og M2M-applikationer. Niveau 4 UDP-transportlaget grænseflader med Message- underlaget til CoAP. Beskederne placeres i UDP-datagrammer, dets anvendelse sparer båndbredde og giver multicast- understøttelse . Niveau 3 IPv6, UDP-datagrammer placeres i IPv6-pakker. 6LowPAN- laget foretager tilpasningerne for det underliggende lag, der har en rammestørrelse begrænset til 128 byte. Det fortsætter til komprimering af IPv6-headere, udfører fragmenteringen og samlingen af IPv6-pakkerne igen. Men også ansvarlig for adressering, routing. Niveau 2 og 1 IEEE 802.15.4 er standarden, der specificerer lag 1 og lag 2 specifikationer for trådløse personlige netværk.CoAP-meddelelser transporteres som standard gennem UDP-datagrammer. Denne kommunikation kan overføres via DTLS, men også på andre måder som SMS, TCP eller SCTP. Beskederne er kodet i et simpelt binært format. En meddelelse begynder med en fast overskrift på 4 bytes, efterfulgt af et "Token" -felt med variabel størrelse mellem 0 og 8 byte, der tillader udveksling at knytte anmodninger til svar. Dens længde er angivet med "TKL" -feltet. Derefter vises en sekvens af muligheder i TLV-format efterfulgt af valgfrit af de data, der optager resten af datagrammet. Hvis sidstnævnte er til stede, adskilles de fra overskriften med en 1 byte-markør, der indeholder værdien "0xFF".
Overskriften i version 1 indeholder følgende oplysningerMark | Beskrivelse | |
---|---|---|
Orm (version) | Ver- feltet har 2 bit, der angiver den anvendte version af CoAP. | |
T (Type) | Feltet Type bruges til at specificere typen af meddelelsen:
|
|
TKL (tokenlængde) | består af 4 bits, der angiver længden på feltet Token. | |
Kodet | består af 8 bits, hvoraf de 3 mest betydningsfulde bits (c) angiver klassen og de 5 mindst signifikante bits detaljerne (dd). Koden i "c.dd" -format bruges til at angive typen af meddelelse, "0" for en anmodning, "2" for et OK-svar, "4" for et svar i klientfejl, "5" for en serverfejl . I tilfælde af en anmodning angiver koden metoden til anmodningen, og i tilfælde af et svar koden for svaret. Koden "0.00" angiver en tom besked. | |
Besked-id | består af 16 bits, der bruges til at registrere duplikering af meddelelser og til at matche bekræftelses- / nulstillingsmeddelelser til meddelelser, der kan bekræftes / ikke-bekræftes . | |
Polet | består af 0 til 8 byte, der bruges til at knytte en anmodning til et svar. |
Tilstanden for en ressource kan ændres over tid, og en klient har muligvis brug for disse tilstandsændringer. I HTTP initieres altid transaktioner af klienten, som udfører flere GET-anmodninger for at holde status på en ressource opdateret. Denne ressourcekrævende mekanisme er ikke egnet i et begrænset miljø med begrænsede netværksressourcer og for det meste sovende enheder. For at imødekomme dette behov drager CoAP fordel af en udvidelse af RFC7641-protokollen, der gør det muligt for klienter at observere ressourcer ved hjælp af observationsindstillingen. En CoAP-server er autoriteten til at afgøre, under hvilke betingelser ressourcerne ændrer deres tilstand, og det er derfor han, der beslutter, hvornår de skal informere observatørerne om de nye stater om disse ressourcer. Da protokollen ikke tilbyder et eksplicit middel til opsætning af udløsere eller tærskler, er det op til serveren at udsætte observerbare ressourcer, som underretter deres tilstand på en nyttig måde i forbindelse med applikationen. For eksempel kan en server med en temperatursensor udsætte en eller flere ressourcer. I tilfælde af at en ressource skifter tilstand hvert x sekund. En ressource kan ændre sin tilstand til kold eller varm i henhold til tilsvarende tærskler eller endda i henhold til komplekse udtryk.
DriftsprincipObservatører registrerer sig med et emne for at angive, at de ønsker at blive underrettet om hver tilstandsændring. Emnet er ansvarlig for administrationen af hans liste over registrerede observatører. Hvis observatøren er interesseret i flere emner, skal han registrere sig separat med hvert af dem. En klient registrerer sig ved at udstede en udvidet GET-anmodning med muligheden "observer: 0" til serveren. Værdien "0" er en registreringsanmodning, og værdien "1" svarer til en anmodning om at annullere registreringen. Serveren returnerer en 2.xx-meddelelse, der angiver, at den har tilføjet posten til listen over observatører. Når staten ændrer sig, sender serveren meddelelsen til klienten. Tokenet giver klienten mulighed for at identificere observationer, hvis de er flere. For at undgå overbelastning bør servere ikke sende mere end en anmeldelse hvert 3. sekund og bør bruge en mindre aggressiv værdi, hvis det er muligt. Der forventes optimeringer i fremtiden som CoCoA (Congestion Control / Advanced), der udvider CoAP-specifikationen med avanceret overbelastningskontrol.
I maskin-til-maskine ( M2M ) miljø skal enheder være i stand til at opdage hinanden og deres ressourcer. Disse begrænsede enheder kommunikerer med hinanden ved hjælp af trådløs kommunikation med lav effekt. Udfordringen er at gøre disse enheder så autonome som muligt og samtidig minimere menneskelig indgriben. Som illustreret er der to typer opdagelsestjenester til CoAP-protokollen: Centraliseret og distribueret.
Distribueret ressourceopdagelse er den grundlæggende metode, der bruges af en enhed til at opdage ressourcerne på en anden enhed uden behov for et bibliotek. Når en klientenhed skal hente de ressourcer, der hostes på en server, udsender den en GET-anmodning til /.well-known/core URI på RFC5785-serveren.
I tilfælde af en unicast-anmodning, fordi serveradressen er kendt, vil kun målserveren svare ved at kommunikere alle sine synlige ressourcer i Core Link-formatet RFC6690.
Hvis IP multicast understøttes inden for netværket, er det også muligt at sende en multicast-anmodning for at finde slutpunkter og deres tilbudte ressourcer i en enkelt anmodning. Multicast-anmodninger er imidlertid upålidelige, fordi klienten ikke kan vide, om deres anmodning har nået alle destinationer. Klienter kan også starte forespørgsler efter specifikke typer ressourcer ved at angive parametre (rt). Serverne beslutter, hvad deres ressourcer er tilgængelige for at opdage. Denne distribuerede detektionsmetode har den fordel, at anmodninger rettes direkte fra klienten til serveren uden en mellemmand. Men dette kræver, at klienten kender IP-adressen eller værtsnavnet på serveren, hvilket betyder, at en ekstern applikation skal angive adressen, ellers bliver den hårdkodet i klientens firmware. I tilfælde af at IP-adressen er ukendt, kan klienten også udstede en naboopdagelsesanmodning, hvis adresse vil blive opnået af netværkslaget. Denne metode er imidlertid ikke ønskelig for et begrænset netværk, hvor energi skal bevares.
Den DNS multicast (mDNS) er en uafhængig coap protokol defineret af RFC6762. MDNS er velegnet til tilsluttede enheder, da det fungerer uden infrastruktur, der er ikke behov for at konfigurere enhederne manuelt eller bruge yderligere administration til at administrere dem. Efter opdagelsen offentliggør enheder oplysninger om de tjenester og ressourcer, de tilbyder ved at lave en multicast-annonce. Når en klientenhed (for eksempel af switch-type) ønsker at få adgang til en ressource (for eksempel af lystype), bruger den de opnåede oplysninger (under offentliggørelse) til at få adgang til den.
Centraliseret topologiCoRE-arbejdsgruppen foreslår brug af en Resource Directory (RD) enhed i LowPAN til ressourceefterforskning.
Resource Directory gemmer beskrivelserne af de ressourcer, som serverne har (registreret af dem selv på RD). Så kunder kan opdage alle de nødvendige ressourcer i en enkelt anmodning. For at bruge DR, enten til optagelse eller til søgning, skal enheden vide, hvordan man når den. Slutpunktet kan finde DR på flere måder. Enten har terminalpunktet adressen til RD'en statisk i sin firmware og opdager den ved opstart eller af Edge Router, der transmitterer informationen under routerannonceringen (for eksempel standardruten, hvis RD er installeret i routeren) eller ved at bruge CoRE Link Format ved at lave en GET / .well-known / core? rt = core.rd *.
Med hensyn til opdateringer kan serverne opdatere deres post, DR kan kontrollere, om en post er gyldig ved at spørge slutpunktet, og posterne kan slettes af slutpunktet når som helst. RD kan også slette poster efter detektering af en udløbet levetid.
CoAP og DNS-SD undersøges af Internetsamfundet for opdagelsestjenesten i M2M-begrænsede netværk. DNS-SD er en separat protokol defineret af RFC6763. DNS-SD definerer, hvordan man navngiver og arrangerer DNS-poster For centraliseret DNS-SD-serviceopdagelse skal en DNS-SD-server være tilgængelig inden for netværksinfrastrukturen. Enhederne registrerer sig i DNS-SD efter at have opdaget det ved en af følgende metoder: IPV6-router-reklame ved hjælp af mDNS-metoden beskrevet tidligere eller ved den velkendte metode. Efter registrering vil enhver enhed være i stand til at søge efter tjenester gennem DNS- forespørgsler til DNS-SD-serveren.
IETF CoRE- arbejdsgruppen anerkendte behovet for at støtte afsendelse af en multicast-besked til en gruppe enheder for at manipulere deres ressourcer. Arbejdet i denne gruppe resulterede i den eksperimentelle RFC7390 offentliggjort til gennemgang, der beskriver gruppekommunikation til CoAP-protokollen. Fordelen er, at begrænsede enheder kan arbejde i grupper, for eksempel til automatisering af en bygning, hvor alle lysene i et rum muligvis skal aktiveres og / eller deaktiveres på samme tid. Anmodningerne sendes i multicast, mens svarene er i unicast (aspekt specificeret i afsnit 8 i RFC7252). Der er ikke angivet nogen sikkerhedstilstand for Multicast CoAP, dvs. i denne ramme er CoAP ikke krypteret eller godkendt, og der er ingen adgangskontrol. IP multicast er generelt klassificeret som en upålidelig tjeneste, fordi der ikke er nogen garanti for levering af pakker til hvert medlem af gruppen. Imidlertid kan kvaliteten af denne service forbedres ved at anvende Multicast-protokollen til MPL (Low-Power and Lossy Networks), der udfører periodiske genoverførsler. Coap reducerer risikoen for multicast-overbelastning med de foranstaltninger, der er beskrevet på side 19 og 20 i RFC7390. Der er værker, der foreslår alternative løsninger til let at manipulere grupper af ressourcer gennem enheder, der administreres af en enhedsadministrator.
Kommunikationsenheder adresseres ved hjælp af universelle ressourcer (URI'er), og data udveksles gennem standard XML. RESTful webservices paradigme har mange fordele for netværk med lav effekt i forhold til RPC webservices ved hjælp af SOAP (og derfor XML ). XML præsenterer en stor kompleksitet i fortolkningen, hvis den bruges i nyttelasten. Selvom webservices har mange fordele, er de anvendte protokoller og nyttelastformater ikke nødvendigvis optimeret til trådløse enheder. Mange kompressionsteknikker er udviklet til at tilpasse XML-data til begrænsede netværk, men den valgte er EXI .
EXI-formatet (Effektiv XML-udveksling) er en kompakt XML-repræsentation, der i øjeblikket er standardiseret af World Wide Web Consortium W3C. Det er designet til at understøtte højtydende XML-applikationer til ressourcebegrænsede miljøer, hvilket dramatisk reducerer kravene til båndbredde og forbedrer kodnings- og dekodningsydelsen. EXI kompression kombinerer XML med en standard komprimering algoritme til at opnå en høj kompression satser , hvilket reducerer informationsmængde af XML-dokumenter. Arbejdet har vist, at brug af EXI-komprimering til nyttelast kan være op til 50 gange mere effektiv end blot at bruge grundlæggende XML.
Der er mange CoAP-implementeringer skrevet på forskellige sprog, de leverer biblioteker og API'er, der kan bruges til integration af CoAP i trådløse sensorer og udvikling af applikationer i forskellige miljøer.
Implementering | Sprog | Platform | Beskrivelse |
---|---|---|---|
Californium | Java | JVM | Det er en Java Framework til ikke-begrænsede enheder. Det muliggør udvikling af klienter og webapplikationer, der er i stand til at kommunikere med trådløse sensornetværk. |
Erbium | VS | Contiki | Dette er en letvægts REST-motor til Contiki-operativsystemet. Det bringer internetforbindelse til begrænsede enheder. |
Kobber | Javascript | Firefox | Kobber er et Firefox-plugin til styring af CoAP-enheder, det giver brugerne mulighed for at udføre tests. |
libcoap | VS | Posix / Contiki | Libcoap-biblioteket kan bruges til implementering på enheder i klasse 1, 2 og højere. |
CoapBlip | VS | TinyOS | Det er en tilpasning af biblioteket "libcoap" til TinyOS, der er beregnet til periferiudstyr i klasse 1. |
jCoAP | Java | JVM | Skrevet i Java er jCoAP rettet mod ubegrænsede enheder såsom Android-smartphones og indlejrede systemer. Det tillader udførelse af CoAP-til-HTTP og HTTP-til-CoAP-proxy, der oversættes mellem de 2 protokoller. |
coap.me | Rubin | Det er et testværktøj, der er tilgængeligt på en webfront på adressen, det gør det muligt at gendanne CoAP-servere. | |
Watteco | VS | Contiki | Det er en kommerciel implementering af Contiki klasse 1-enheder baseret på Erbium. |
Cooja | VS | Contiki | Cooja er et simuleringsværktøj baseret på Contiki-operativsystemet, det tillader simulering og implementeringstest. |
Disse implementeringer adresserer forskellige enheder, som IETF klassificerer som følger:
Klasse 0 Disse enheder er ikke i stand til sikkert at køre en RFC-kompatibel IP-stak. De skal bruge en gateway til at oprette forbindelse til Internettet. Klasse 1 Det inkluderer de fleste enheder, der har begrænsede ressourcer, der er i stand til at oprette forbindelse til Internettet med indbyggede sikkerhedsmekanismer. De har 100 kb ROM og 10 kb RAM. De kan ikke implementere en HTTP-protokolstak over TLS og kræver brug af lette protokoller med optimeret energiforbrug. Med den meget begrænsede størrelse på deres cache-hukommelse bruger de for det meste netværk med lav effekt som IEE802.15.4 på 6LowPAN. I kraft af deres ydeevne og deres beskedne omkostninger er de de foretrukne perifere enheder til dannelse af tingenes internet. Klasse 2 Dette er enheder, der kan oprette forbindelse til Internettet og har computere, der ligner smartphones. Dette er muliggjort med ca. 250 KB ROM og 50 KB RAM. De kan drage fordel af fordelene ved en letvægts- og lavenergiprotokol for at frigøre ressourcer til deres applikationer og reducere deres produktionsomkostninger.Forskningsmiljøet har foretaget mange implementeringer af CoAP. Flere store aktører inden for bygningsautomation og måling har vist deres interesse i at bruge denne protokol i deres indbyggede systemer. Disse undersøgelser har vist muligheden for at implementere CoAP med kun omkring ti kilobyte ROM og RAM-hukommelse, men også for at evaluere dens ydeevne: responstid, energiforbrug, dens overbelastning. En implementering af Contiki OS fremhæver CoAP's gevinster med hensyn til energistyring, men også at brugen af " ContiMAC RDC " -protokollen til at optimere driftscyklusser for forbrugerradiokomponenter giver lignende gevinster og rejser spørgsmålet. interessen for at holde energibesparende mekanismer på niveauet med applikationslagene. CoAP-implementeringen udført på Contiki viser en besættelse på 8,5 kb ROM og 1,5 kb RAM med det tilknyttede REST-lag. Eksperimentering viser også, at udvekslingen af anmodninger og svar er mere energieffektive, når hver besked kan passe ind i en enkelt 802.15.4 ramme.
Evalueringen af CoapBlip-biblioteket fremhæver et problem i processen med at tilpasse bibliotekerne uafhængigt af operativsystemet, hvilket derefter ikke garanterer ydeevne og pålidelig udførelse. En indbygget implementering af operativsystemet er meget mere effektiv. Målingerne viser, at nyttelasten ikke kan overstige 650 byte med CoapBlip, når den specifikke TinyCoAP-implementering når 1200 byte. TinyCoAP er hurtigere end CoapBlip-tilpasningen, bruger mindre energi og kan håndtere et større antal anmodninger
Endelig udføres i flere implementeringer end-to-end-kommunikation med sensornetværk ved hjælp af CoAP gennem en proxyserver, der er ansvarlig for at foretage protokoltilpasninger. En anden tilgang er mulig ved at deportere tilpasningsbehandlingen til klientens webbrowser ved brug af en JVM og JavaScript, hvorfor man undgår brugen af mellemliggende servere.
Der er mange anvendelsesområder. CoAP er med succes implementeret i eksperimenter inden for sundhed, energistyring og konstruktion.
SundhedsovervågningssystemInden for sundhed er en af de praktiske anvendelser realiseringen af et sundhedsovervågningssystem med et netværk af trådløse sensorer baseret på CoAP for at reducere arbejdsbyrden for de medicinske centre, der udfører analyserne og lette hurtig patientbehandling i en nødsituation. Denne infrastruktur overvåger patientens sundhedsmæssige forhold og giver adgang til vigtige parametre til enhver tid med en webbrowser fra ethvert sted. Dette giver patienter, der ikke er i kritisk tilstand, mulighed for at forlade hospitalet, da deres vitale tegn kan overvåges i realtid hjemmefra. CoAP gør det muligt at modellere egenskaberne for sundhedsfølere som ressourcer og udsætte dem for klienter. Disse ressourcer manipuleres derefter ved hjælp af HTTP-metoder gennem en webbrowser.
I et CoAP-baseret trådløst sensornetværk kan hver opføre sig som en server og udsætte stien til en ressource " /.well-known/core " for at muliggøre opdagelse af ressourcer fra klienter. Sidstnævnte får adgang til denne placering ved hjælp af en "POST" -metode for at erklære deres egne ressourcer eller en "GET" -metode for at finde de allerede deklarerede ressourcer. Indstillingen Observer , når den bruges med en "GET" -metode, giver klienter mulighed for at signalere deres interesse for en ressource. I tilfælde af en opdatering af denne ressource underretter serveren derefter asynkront klienterne. I eksperimentet er de traditionelle sensorer, der er ansvarlige for at kontrollere hjertefrekvensen, iltmætning i blodet og elektrokardiogrammer , forbundet til begrænsede perifere enheder såsom “Telos Mote” gennem et serielt link, hvor Contiki OS er installeret. Erbium-implementeringen med sin REST-motor er ansvarlig for at udsætte ressourcerne for hver sensor. I tilfælde af en sensor, der overvåger hjerterytmen og udsætter dens ressourcer til adressen "coap: // server / oximeter / hrs". Klienten sender en anmodning, der indeholder en "GET" -metode med "uri-host = server" og "uri-path = / oximeter / hrs" for at få patientens puls og fremtidige opdateringer tilbage. Oplysninger, der opnås med patientens sensorer, overføres til webserveren i JSON- format , derefter gemt og brugt af medicinsk personale.
Intelligent energistyringssystem, Smart GridEt intelligent el-distributionsnet stræber efter at optimere energiproduktion, distribution og forbrug. Implementeringen af et hjemmeenergistyringssystem, der er i stand til at interagere med husholdningsudstyr og kommunikere med et smart net, gør det muligt at kontrollere forbruget og opnå energibesparelser. Systemet består af et hjemmeenergistyringssystem kaldet HEMS installeret i hjemmet baseret på en gratis løsning og et netværk af aktuatorer og sensorer kaldet HEC ved hjælp af CoAP-protokollen tilsluttet husholdningsudstyr. HEC'er tilsluttet hjemmets lokale netværk genvinder energiforbrug: spænding, øjeblikkelig strøm fra det tilsluttede udstyr. Disse data sendes asynkront til HEMS takket være CoAP- observationsmekanismen . Disse behandles af energioptimeringsalgoritmer, der udføres på HEMS-systemet, som derefter kan styre HEC-ressourcerne gennem CoAP-metoder for at anmode om, at de er slået til eller fra.
BygningsautomatiseringInden for bygningsautomatisering. De ressourcer, der administreres af det historiske BacNet , LON- protokoller, kan tilpasses til at arbejde med CoAP, de historiske meddelelser kan overføres i nyttelasten af CoAP-meddelelser. Med understøttelse af multicast- og gruppekommunikation kan en enhed kommunikere med andre enheder, der deler de samme karakteristika (for eksempel: adressering af alle enheder i et rum).
CoAP kan også bruges i applikationsområder som transport, industri, landbrug, hjem.
De forskellige implementeringer fremhæver følgende punkter:
Økonomisk viser andre undersøgelser, at valget om at bruge CoAP viser sig at være et klogt valg sammenlignet med HTTP:
Udført arbejde sammenligner CoAP-ydeevne med sin forgænger, HTTP. CoAP-responstider er meget kortere end HTTP med en estimeret besparelsestid på omkring 30% takket være headerkomprimering og det faktum, at CoAP bruger UDP. Hovedkomprimering vil også have en indvirkning på strømforbruget. Antallet af overførte bytes er lavere i en CoAP-transaktion sammenlignet med en HTTP-transaktion
På niveauet med CoAP-opdagelsesprotokollerne overgår den distribuerede mekanisme den centraliserede mekanisme vedrørende overbelastning, siden opdagelsen af RD (Resource Discovery) og de forskellige registreringsfaser ikke udføres. Med hensyn til DNS-opdagelsesprotokollerne er de mindre effektive med hensyn til overbelastning end CoAp-protokollen. Faktisk er CoAP-opdagelse den mest rimelige tilgang i et begrænset enhedsmiljø med lavt strømforbrug.
Processen med at sikre strømme i CoAP er ikke uden indflydelse på udstyrets ROM-hukommelse, når datakryptering udføres på en hardware måde, og brugen af RAM på mere end 80% kan også være et problem, fordi dette kan forhindre korrekt drift af andre applikationer, der kører på udstyret.
Netværksprotokolydelse spiller en vigtig rolle i strømforbrug, og CoAP er afhængig af denne ydeevne på grund af den underliggende transportprotokol UDP, hyppig pakkefragmentering og enkle retransmissionsmekanismer. Strømforbruget i CoAP stiger, når pakkestørrelsen bliver større end 1024 byte på grund af fragmentering.
Enheder, der bruger CoAP-protokollen, skal være i stand til at beskytte informationsstrømmen af følsom karakter (for eksempel for sundhedssektoren). Effektiv sikkerhed i CoAP kan opsummeres i de forskellige temaer, der præsenteres i følgende tabel:
Temaer | Tilknyttede trusler |
---|---|
Integritet | Downloader ondsindet kode |
Tilgængelighed | Denial of service ( DoS ) |
Fortrolighed | Trafikanalyse
Aflytning (aflytning) |
For at sikre strømme i CoAP, DTLS , Datagram Transport Layer Security, den største sikkerhedsprotokol i IoT, der blev specificeret af IETF i RFC 6347, var designet til at sikre end-til-end-kommunikation mellem to enheder. DTLS er en version af TLS og overtager funktionaliteten af sidstnævnte, men bruger Transportlaget fra UDP i modsætning til TLS, der bruger TCP .
DTLS-repræsentation i protokolstakken
CoAP |
---|
Sikkerhed - DTLS |
Transportlag - UDP |
Netværkslag - IPV6 |
Fysisk lag - IEEE 802.15.4 |
DTLS er en protokol, der består af to lag:
CoAP-baserede IoT-enheder er konfigureret i en af følgende 4 sikkerhedstilstande:
I "NoSec" -tilstand er systemet kun beskyttet ved at blokere afsendelse eller modtagelse af pakker på netværket af en angriber og sender simpelthen pakkerne via UDP.
CoAP er baseret på URI-kommandoerne "coap" eller "coaps" - når DTLS bruges - til at identificere ressourcer og deres placering. Brugen af "coaps" indebærer, at UDP-datagrammer er sikret med DTLS. De tilgængelige ressourcer gennem "coaps" deles ikke med "coap", selvom deres ressourceidentifikator er identisk.
CoaP er pr. Definition en begrænset protokol, og dets anvendelse med DTLS, som det er, udgør et problem, fordi det var designet til traditionelle computernetværk.
DTLS er en tung protokol, og dens overskrifter er for lange til at passe i en enkelt IEEE802.15.4-ramme. For at overvinde kompatibilitetsproblemer giver 6LoWPAN , netværkslaget, som CoAP er afhængig af, headerkomprimeringsmekanismer for at reducere størrelsen på de øverste lagheadere (DTLS).
IPSec , sikkerhedsprotokollen til IP-stakken, kan bruges til at sikre CoAP-strømme i begrænsede miljøer og især ESP, når CoAP bruges uden DTLS.
Brugen af IPsec mellem CoAP-slutpunkter er gennemsigtig for applikationslaget og kræver ikke særlige betingelser for implementering i CoAP. Imidlertid er IPsec muligvis ikke egnet til alle miljøer: firewalls og NAT'er kan i høj grad begrænse brugen af IPsec
.
Brug af en beskyttelsesmekanisme som DTLS er afgørende for CoAP-netværk og -systemer, men de giver ikke adgangskontrol. Brug af adgangskontrol på en CoAP-enhed kan give LÆS / SKRIF adgang til sine tjenester til en gruppe brugere, mens kun LÆS kun adgang til en anden gruppe. Dette tilføjer endnu et lag af beskyttelse og øger dermed sikkerheden på niveauet for CoAP-strømme.
CoRE-arbejdsgruppen, Constrained RESTFul Environment oprettede CoAP-protokollen som et resultat af arbejdet i 6LoWPAN- arbejdsgruppen . CoAPs mål er at udvide WEB-arkitekturen til Machine to Machine (M2M) og Internet of Things (IoT) -applikationer ved hjælp af begrænsede systemer Webtjenester over Internettet er vigtige elementer i de fleste applikationer og afhænger af REST-arkitekturen. For at gøre dette muligt har CORE defineret CoAP-protokollen, Constrained Application Protocol. Denne protokol tillader kommunikation mellem forbundne objekter i en begrænset arkitektur. CoAP-protokollen er målrettet mod udstyr og maskiner, som undertiden kun har en 8-bit processor mikrocontroller med meget lidt hukommelse, og som er forbundet med langsomme og upålidelige radioforbindelser, LowPAN'erne.
CoAP udvikler sig konstant. Protokollen er beriget med udvidelser som Observer, Gruppekommunikation ...