Ovo je stara izmjena dokumenta!
Constrained Application Protocol
Sažetak
Uvod
U zadnjih 10 godina možemo se sve češće susresti s pojmom Internet Stvari. Uređaji koje svakodnevno koristimo postaju “pametniji” povezivanjem na internet, te počinju pružati korisniku puno širi spektar mogućnosti. Iako postoje razni protokoli za komunikaciju između uređaja i poslužitelja, s potpuno različitim mogućnostima i karakteristikama u posljednje vrijeme počinje se sve češće koristiti CoAP.
CoAP (Constrained Application Protocol) zasniva se na klijent-poslužitelj modelu komunikacije. Temelji se na REST-u (Representational state transfer) te se resursi identificiraju pomoću URI-ja. Za pristup resursima koristi se asinkroni mehanizam te za samu razmjenu podataka UDP protokol s dodatnim slojem za retransmisiju podataka u slučaju da je došlo do gubljenja istih.
Osnovne karakteristike protokola
Model klijent-poslužitelj
CoAP se zasniva na komunikacijskom modelu klijent-poslužitelj. Model se sastoji od dva entiteta, klijenta i poslužitelja. Klijent šalje zahtjeve poslužitelju nakon čega dobiva odgovor odmah ili naknadno, ovisno o načinu na koji su se zatražili podaci. Odgovor od strane poslužitelja može biti sadržan u jednoj ili više poruka, ovisno o vrsti zahtjeva i frekvenciji kojom se mijenjaju vrijednosti traženih resursa.
Vrste CoAP poruka
Postoje četiri različita tipa poruka koje CoAP implementira.
Metode CoAP-a
CoAP implementira četiri osnovne HTTP metode.
URI schema za pristup resursima
Unutar CoAP protokola svaki resurs ima svoj URI. On se definira na sljedeći način:
gdje je:
coap[s] -
URI schema, može biti secure
<host>[:<port>] - authority, sastoji se od imena poslužitelja i definiranog porta
<path> - path, najčešće ime samog senzora ili aktuatora
[?<query>] - query, dodatni parametri ako su potrebni
Primjer pravilno definiranog URI-ja:
Sadržaj svakog okvira CoAP poruke definiran je u standardu RFC 7252.
Dijelova okvira su:
Version (Ver)
2-bitni prirodni broj koji predstavlja verziju CoAP protokola
U slučaju da verzija ne odgovara trenutno specificiranoj verziji, poruka mora biti ignorirana
Type (T)
2-bitni prirodni broj koji predstavlja o kojoj vrsti poruke se radi
Confirmable (0), Non-confirmable (1), Acknowledgement (2), Reset (3)
Token Length (TKL)
4-bitni prirodni broj koji predstavlja duljinu polja varijabli
Mogu se koristiti brojevi od 0 do 8, u slučaju da se koriste broj 9 do 15 moraju biti tretirani kao pogrešno definirane poruke
Code
8-bitni prirodni broj koji se dijeli na najznačajnije bitove (prva 3 bita) i manje značajne brojeve (drugih 5 bitova) predstavlja kod zahtjeva i odgovora
Request (0), Success response (2), Client error response (4), Server error response (5)
U slučaju da se radi o poruci koja predstavlja zahtjev, kod odgovara jednom od kodova zahtjeva, suprotno radi se o kodu odgovora
Primjer CoAP poruka
Confirmable request (CON)
Nakon slanja poruke očekuje se odgovor. U slučaju da se odgovor ne primi, poruka se ponovno šalje.
Non-Confirmable request (NON)
Nakon slanja poruke ne očekuje se odgovor.
Opservacija
U slučaju da želimo konstantno primati podatke kao što su npr. očitanja senzora, možemo koristiti mehanizam opservacije. U odgovoru (ACK) se prenose očitanja, a sljedeći odgovori se šalju bez ponovnih zahtjeva sve dok ne dobijemo poruku za otkazivanje pretplate.