Documente Academic
Documente Profesional
Documente Cultură
1
SISTEME ȘI REȚELE DE COMUNICAȚIE
entități (GAZDĂ A și GAZDĂ B, de exemplu – v. fig. 1 se face prin intermediul nivelului fizic care se
afla sub nivelul 1 (nivelul cel mai de jos).
2
SISTEME ȘI REȚELE DE COMUNICAȚIE
Nivelul FIZIC este responsabil de transmiterea biților printr-un canal de comunicație. Acest
nivel pune la dispoziție prin proiectare toate mijloacele mecanice, electrice, funcționale și
procedurale necesare transmiterii biților între nivelurile superioare (nivelurile LEGĂTURĂ DE DATE).
Gestionarea fluxirilor de date ce sunt transmise de-a lungul mediului de comunicație este realizată
la acest nivel, indiferent de natura sau modul de transmitere a biților (impulsuri electrice în cazul
conexiunilor fizice realizate prin fir de cupru, de exemplu, unde luminoase în cazul conexiunilor prin
fibră optică sau unde radio în cazul comunicațiilor fără fir).
Funcțiile nivelului FIZIC sunt:
- definirea modului în care două sau mai multe dispozitive pot fi conectate fizic;
- definirea modului de transmisie al datelor între două dispozitive (simplex, half-duplex,
full-duplex);
- stabilirea modului de aranjare / interconectare în rețea a dispozitivelor componente
(determină, practic, topologia rețelei);
- determină tipul semnalului utilizat pentru transmiterea informației.
Unitatea de date la acest nivel este bitul.
Nivelul LEGĂTURĂ DE DATE are ca rol principal transformarea unui mijloc de transmisie
oarecare într-o linie sigură de transfer de date, fără a avea erori nedetectate, linie care să fie
disponibila nivelului superior (nivelul REȚEA). Această sarcină este realizată prin forțarea
echipamentelor ce transmit date la un moment dat să descompună datele în cadre (frame-uri, cadre
de date) ce sunt trimise apoi secvențial.
Nivelul LEGĂTURĂ DE DATE definește formatul datelor transferate între dispozitivele din
rețea și este, de asemenea, responsabilul principal al identificării unice a fiecărui dispozitiv dintr-o
rețea locală.
Acest nivel este împărțit în două subniveluri:
- subnivelul MAC (Media Access Control) – controlează modul în care un dispozitiv obține
acces la date și permite transmiterea acestora;
- subnivelul LLC (Logical Link Control) – controlează sincronizarea cadrelor, controlul
fluxurilor de date și verificarea / controlul erorilor.
Funcțiile nivelului LEGĂTURĂ DE DATE sunt:
- completează fluxul de biți ce va fi transferat nivelului FIZIC prin adaugarea unui antet și
a unui sfârșit la cadrele de date;
- antetele care sunt adăugate cadrelor conțin adresele hardware ale sursei, respectiv
destinației datelor; un cadru oarecare format astfel în nivelul LEGĂTURĂ DE DATE este
trimis către adresa de destinație specificată în antet;
- controlul fluxului de date este funcția principală a nivelului LEGĂTURĂ DE DATE; pentru
a nu fi corupte datele transmise se utilizează rate de transfer constante și egale la
transmițător și la receptor – o problemă ce este gestionată la acest nivel este legată de
diferențele de viteze de procesare ale dispozitivelor interconectate - se asigură, de
exemplu, că stația de transmisie, cum ar fi un server cu viteză de procesare mare, nu
3
SISTEME ȘI REȚELE DE COMUNICAȚIE
4
SISTEME ȘI REȚELE DE COMUNICAȚIE
- controlul conexiunii - nivelul TRANSPORT oferă două tipuri de servicii: serviciu orientat
spre conexiune și serviciu fără conexiune; un serviciu fără conexiune tratează fiecare
segment ca un pachet individual de date și toate segmentele sunt transferate pe rute
diferite pentru a ajunge la destinație; un serviciu orientat spre conexiune face o
conexiune cu nivelul TRANSPORT la mașina (gazda) destinație înainte de livrarea
pachetelor de date, în cazul acestui serviciu (orientat spre conexiune), toate pachetele
de date fiind transferate pe o singură rută;
- controlul fluxului – nivelul TRANSPORT este responsabil și de controlul fluxului de date;
- controlul erorilor – nivelul TRANSPORT este, de asemenea, responsabil pentru controlul
erorilor; nivelul TRANSPORT de la dispozitivul expeditor trebuie să asigure faptul că
mesajul ajunge la destinație fără nicio eroare.
Unitatea de date cu care operează acest nivel este TPDU (Transport Protocol Data Unit).
Nivelul SESIUNE gestionează sesiunile ce se stabilesc între doi interlocutori dintr-un sistem
sau o rețea de comunicație. Gestionarea acestor sesiuni acoperă toate aspectele: inițiere sesiune,
menținere și interacțiune între dispozitivele interconectate.
Funcțiile principale ale nivelului SESIUNE sunt:
- controlul dialogului – nivelul SESIUNE acționează ca un controler de dialog care creează
și menține schimbul de date dintre două procese, schimb de date care poate fi half-
duplex sau full-duplex;
- sincronizare – nivelul SESIUNE adaugă câteva puncte de control atunci când se transmit
datele într-o secvență; dacă apare o eroare în mijlocul transmiterii datelor, atunci
transmisia va avea loc din nou de la ultimul punct de control validat; acest proces este
cunoscut sub numele de “sincronizare și recuperare”.
Unitatea de date cu care operează acest nivel este SPDU (Session (layer) Protocol Data Unit).
Nivelul PREZENTARE se ocupă în principal de sintaxa și semantica informațiilor schimbate
între cele două sisteme interconectate. Acest nivel este, în fapt, un translator de date pentru o rețea.
Acest nivel este o parte a sistemului de operare care convertește datele dintr-un format de
prezentare în alt format. Nivelul PREZENTARE este, de asemenea, cunoscut sub numele de nivel de
sintaxă.
Funcțiile de bază ale acestui nivel sunt:
- traducere – procesele din două sisteme schimbă informațiile sub formă de șiruri de
caractere, numere și așa mai departe; diferite calculatoare folosesc metode de codificare
diferite, stratul de prezentare gestionând interoperabilitatea chiar și în cazul utilizării
diferitelor metode de codificare; acest nivel convertește datele din formatul dependent
de expeditor într-un format comun și schimbă formatul comun în format dependent de
receptor;
- criptare – această funcție este necesară pentru a se asigura accesul securizat,
confidențial, la date;
- compresie – compresia datelor este un proces de comprimare a acestora, adică de
reducere a numărului de biți care trebuie transmiși.
5
SISTEME ȘI REȚELE DE COMUNICAȚIE
Unitatea de date cu care operează acest nivel este PPDU (Presentation Protocol Data Unit).
Nivelul APLICAȚIE servește ca interfață între utilizatori și o parte din procesele aplicației,
procese ce permit accesarea serviciilor de rețea. Acest nivel se ocupă de probleme precum
transparența rețelei, alocarea resurselor etc. Este important de precizat faptul că nivelul APLICAȚIE
nu este o aplicație în sine. Practic, acest nivel oferă servicii de rețea utilizatorilor finali.
Două exemple de funcții ale acestui nivel funcții ce sunt frecvent utilizate sunt:
- transferul, accesul și managementul fișierelor – nivelul APLICAȚIE îi permite utilizatorului
să acceseze fișierele de pe un calculator la distanță, de exemplu, să preia fișierele de pe
acesta sau, în general, să gestioneze la distanță fișierele de pe acest dispozitiv;
- servicii de e-mail – nivelul APLICAȚIE oferă facilitatea pentru redirecționarea și stocarea
e-mailurilor.
Unitatea de date cu care operează acest nivel este APDU (Application Protocol Data Unit).
Transmiterea de date între două entități (echipamente, dispozitive, procese) se poate
imagina ușor, prin parcurgerea pe niveluri a modelului OSI, în cadrul fiecărui nivel prelucrându-se
corespunzător datele. În exemplul de mai jos, în cadrul fiecărui nivel se adaugă câte un antet specific
nivelului respectiv, antet ce are rolul de a trimite datele în siguranță, necompromise și către
destinatarul bine identificat. În cadrul nivelului LEGĂTURA DE DATE pachetului de date i se adaugă
și un sfârșit de pachet cu rol, de regulă, de verificare la recepție a integrității pachetului.
Fig. 3 Exemplu de transmisie date între două procese utilizând modelul OSI
6
SISTEME ȘI REȚELE DE COMUNICAȚIE
7
SISTEME ȘI REȚELE DE COMUNICAȚIE
Nivelul INTERNET este al doilea nivel al modelului TCP/IP. Acest nivel este cunoscut și sub
numele nivel REȚEA. Principala responsabilitate a acestui nivel este de a trimite pachetele din orice
rețea către orice destinație, indiferent de ruta parcursă.
În cadrul acestui nivel sunt utilizate urmatoarele protocoale: IP, ARP și ICMP.
Protocolul IP (Internet Protocol) este cel mai semnificativ protocol din întreaga suită TCP /
IP. Responsabilitățile acestui protocol sunt:
- adresare IP - acest protocol implementează adrese de gazdă logice cunoscute sub
numele de adrese IP; adresele IP sunt folosite de nivelul Internet și de nivelurile
superioare pentru a identifica dispozitivul și pentru a facilita rutarea în Internet;
- comunicare gazdă – gazdă - determină calea prin care urmează să fie transmise datele;
- încapsularea și formatarea datelor - protocolul IP acceptă datele din protocolul nivelului
TRANSPORT; protocolul IP asigură faptul că datele sunt trimise și primite în siguranță,
încapsulează datele într-un mesaj cunoscut sub numele de datagramă IP;
- fragmentare și reasamblare - limita impusă mărimii datagramei IP de protocolul stratului
de legătură de date este cunoscută sub numele de unitate maximă de transmisie (MTU -
Maximum Transmission Unit) ; dacă dimensiunea datagramei IP este mai mare decât
unitatea MTU, atunci protocolul IP împarte datagrama în unități mai mici, astfel încât
acestea să poată fi transmise prin rețeaua locală; la receptor toate fragmentele sunt
reasamblate pentru a forma mesajul original;
- rutare - când datagrama IP este trimisă în aceeași rețea locală transmisia este cunoscută
sub numele de livrare directă; când sursa și destinația se află în rețele diferite, atunci
datagrama IP este trimisă indirect, acest lucru putând fi realizat prin rutarea datagramei
IP prin diferite dispozitive precum router-ele.
Protocolul ARP (Address Resolution Protocol) este utilizat pentru a determina adresa fizică
din adresa IP. Acestui protocol îi sunt asociați doi termeni: cerere ARP, respectiv răspuns ARP. Când
un expeditor dorește să cunoască adresa fizică a dispozitivului, acesta transmite către rețea o cerere
ARP. Fiecare dispozitiv atașat la rețea acceptă cererea ARP, o procesează, dar numai destinatarul
(care își recunoaște adresa IP) îi trimite înapoi adresa fizică sub formă de răspuns ARP. Destinatarul
adaugă adresa fizică atât în memoria cache, cât și în antetul datagramei.
Protocol ICMP (Internet Control Message Protocol) este un mecanism folosit de gazde sau
router-e pentru a trimite notificări înapoi către expeditor cu privire la problemele datagramelor. O
datagramă se transferă de la un router la altul până când ajunge la destinație. Dacă un router nu
poate direcționa datele din cauza unor condiții neobișnuite (legăturile dezactivate, dispozitive
defecte, congestie de rețea etc.), atunci protocolul ICMP este utilizat pentru a informa expeditorul
că datagrama nu poate fi livrată. ICMP folosește în principal doi termeni: test ICMP, respectiv
răspuns ICMP. Testul ICMP este utilizat pentru a testa dacă destinația este accesibilă sau nu.
Răspunsul ICMP este utilizat pentru a verifica dacă dispozitivul de destinație răspunde sau nu.
Responsabilitatea principală a protocolului ICMP este de a raporta problemele, nu de a le
corecta. Responsabilitatea corectării îi revine expeditorului.
8
SISTEME ȘI REȚELE DE COMUNICAȚIE
ICMP poate trimite mesajele numai către sursă, dar nu către routerele intermediare,
deoarece datagrama IP transportă adresele sursei și destinației, nu și cele ale routerului către care
este transmisă.
Nivelul TRANSPORT este responsabil de fiabilitatea transmiterii datelor, controlul fluxului
de date și corectarea datelor care sunt trimise prin rețea dacă este cazul. În cadrul acestui nivel sunt
utilizate două protocoale: UDP și TCP.
Protocolul UDP (User Datagram Protocol) oferă servicii fără conexiune. Este un protocol
nesigur, deoarece descoperă erorile, dar nu specifică care sunt acestea. UDP descoperă eroarea, iar
prin intermediul unui protocol (ICMP - Internet Control Message Protocol) raportează expeditorului
faptul că pachetul de date a fost deteriorat.
Protocolul UDP conține următoarele câmpuri:
- adresa portului sursă - este adresa programului de aplicație care a creat mesajul;
- adresa portului de destinație - este adresa programului de aplicație care primește
mesajul;
- lungime totală - definește numărul total de octeți ai pachetului de date a utilizatorului în
octeți;
- suma de control (checksum) - este un câmp pe 16 biți utilizat pentru detectarea erorilor.
UDP nu specifică ce pachet este pierdut / compromis. UDP conține doar suma de control, nu
conține niciun ID al vreunui segment de date.
Protocolul TCP (Transmission Control Protocol) oferă servicii complete de strat de transport
către aplicații. TCP creează un circuit virtual între emițător și receptor și este activ pe durata
transmisiei. TCP este un protocol de încredere, deoarece detectează eroarea și permite
retransmiterea cadrelor deteriorate. Prin urmare, se asigură că toate segmentele trebuie primite și
confirmate înainte ca transmisia să fie considerată finalizată și să se elimine circuitul virtual. TCP
împarte întregul mesaj în unități mai mici cunoscute sub numele de segmente și fiecare segment
conține un număr de identificare, număr necesar pentru reordonarea cadrelor în vederea reformării
mesajului original (la sfârșitul primirii tuturor segmentelor TCP le reordonează pe baza numerelor
de identificare).
Nivelul APLICAȚIE este nivelul superior din modelul TCP/IP și este responsabil de gestionarea
protocoalelor la nivel înalt și de problemelor de reprezentare. Acest nivel permite interacțiunea
dintre utilizator și aplicație. În cazul în care mașina trimite date, nivelul APLICAȚIE transmite datele
către nivelul TRANSPORT. În cazul în care mașina primește date, nivelul APLICAȚIE primește date de
la nivelul TRANSPORT. În acest nivel se încadrează doar aplicațiile ce interacționează direct cu
sistemul de comunicații. De exemplu, în acest strat nu se poate include un editor simplu de test,
însă browser-ul WEB ce folosește protocolul HTTP, da.
Cele mai importante protocoale utilizate în acest nivel sunt:
- HTTP (HyperText Transfer Protocol) - reprezintă protocolul de transfer hipertext; acest
protocol permite accesarea datelor de pe Internet; transferă datele sub formă de text
simplu, audio, video. Este cunoscut sub numele de protocol de transfer hipertext
9
SISTEME ȘI REȚELE DE COMUNICAȚIE
deoarece este eficient în utilizarea în medii hipertext în care există salturi rapide de la un
document la altul;
- SNMP (Simple Network Management Protocol) - este un protocol de gestionare simplă
a rețelei; acest protocol constituie cadrul utilizat pentru gestionarea dispozitivelor de pe
Internet utilizând suita de protocol TCP/IP;
- SMTP (Simple Mail Transfer Protocol) - înseamnă protocolul simplu de transfer de email;
acest protocol este utilizat pentru a trimite datele de la o adresă de email către o altă
adresă de email;
- DNS (Domain Name System) - o adresă IP este utilizată pentru a identifica în mod unic
conexiunea unei gazde la Internet, însă este preferată utilizarea numelor în loc de adrese;
sistemul responsabil de maparea numelor, respectiv a adreselor are la bază protocolul
DNS;
- TELNET (TErminaL NETwork) - este un protocol ce stabilește conexiunea între un
calculator local și unul aflat la distanță în așa fel încât terminalul sistemul la distanță pare
să fie terminalul sistemului local;
- FTP (File Transfer Protocol) - este un protocol de Internet standard utilizat pentru
transmiterea fișierelor de la o mașină la alta.
În prezent este frecvent utilizat modelul TCP/IP cu 5 niveluri. În cazul acestui model, nivelul
INTERFAȚĂ REȚEA este divizat în două niveluri, la fel ca la modelul OSI: nivelul LEGĂTURĂ DE DATE,
respectiv nivelul FIZIC (fig. 5).
10
SISTEME ȘI REȚELE DE COMUNICAȚIE
Nivelul LEGĂTURĂ DE DATE este al doilea nivel al modelului TCP/IP. Tratează datele sub
formă de cadre de date (cadre, frame-uri). În acest nivel se adaugă adresa sursei, respectiv adresa
destinației. Nivelul LEGĂTURĂ DE DATE facilitează livrarea de cadre în aceeași rețea. De asemenea,
facilitează controlul fluxului și erorilor transmisiei cadrelor de date. Prin rata de transmisie se
controleaza, de asemenea, fluxul de date. Erorile de transmisie și cadrele de date compromise pot
fi detectate prin sumele de control și se pot retransmite folosind informațiile din antetul specific
acestui nivel.
Internetul obiectelor (Internetul lucrurilor, Internet of Things, IoT) descrie rețeaua de
obiecte fizice sau lucruri care integrează senzori, software și/sau alte tehnologii în scopul conectării
și schimbului de date cu alte dispozitive și/sau sisteme prin intermediul Internetului.
“Lucrurile” au evoluat datorită convergenței mai multor tehnologii precum analize în timp
real, învățare automată, dezvoltarea de dispozitive cu putere de procesare din ce în ce mai mare,
resurse hardware integrate din ce în ce mai bogate etc. Toate acestea au încurajat și întrețin
permanent ideea de interconectare globală. Evident că la aceste aspecte se adaugă și multe alte
avantaje precum costuri de întreținere reduse, timpi de intervenție semnificativ reduși, posibilitatea
de monitorizare și control de la distanță etc.
Deși pe piața consumatorilor tehnologia IoT este în general asociată produselor care aparțin
conceptului de “casă inteligentă”, domeniile de aplicare sunt foarte diverse: sănătate, agricultura
de precizie, învățământ, o gamă largă de domenii inginerești, mediu etc. Deși avantajele sunt
evidente, există și o serie de dezavantaje legate în general de îngrijorări serioase cu privire la
confidențialitate și securitate. Pentru a se reduce aceste riscuri exista preocupari seriaose în
domeniu, inclusiv dezvoltarea de standarde internaționale.
Unele dintre protocoalele de rețea care sunt adoptate pe scară largă în cadrul IoT sunt
protocoale ce se pot asocia direct nivelurilor specifice modelului TCP / IP – fig. 6.
Fig. 6 Asocierea nivelelor modelului TCP/IP cu cele mai utilizate protocoale în IoT
11
SISTEME ȘI REȚELE DE COMUNICAȚIE
12
SISTEME ȘI REȚELE DE COMUNICAȚIE
subscriber) prin intermediul broker-ului clienții (unul sau mai mulți clienți) se pot “abona” la
subiectele de interes.
13
SISTEME ȘI REȚELE DE COMUNICAȚIE
Deoarece protocolul MQTT își propune să fie un protocol și pentru dispozitive cu resurse
modeste, este posibil ca SSL / TLS să nu fie întotdeauna o opțiune și, în unele cazuri, chiar să nu fie
de dorit. În astfel de situații, autentificarea este prezentată ca un nume de utilizator și o parolă cu
text clar, care sunt trimise de client către server în secvența de pachete specifică inițierii conexiunii
(CONNECT / CONNACK – fig. 8). În plus, unii broker-i acceptă clienți anonimi. În astfel de cazuri,
numele de utilizator și parola sunt lăsate necompletate.
MQTT este considerat un protocol ușor, simplu, deoarece toate mesajele sale au o amprentă
de cod mică. Fiecare mesaj constă dintr-un antet fix - 2 octeți - un antet variabil opțional, mesajul
care este limitat la 256 MB și un nivel de calitate a serviciului (QoS).
În timpul fazei de transfer de date, un client poate efectua operații de publicare, abonare,
dezabonare și testare dispozitiv (”ping”). Operația de publicare trimite un bloc binar de date
(conținutul util) către un subiect definit de editor. MQTT acceptă obiecte mari binare pentru mesaje
(până la 256 MB). Formatul conținutului va fi specific aplicației. Abonarea la subiecte se face folosind
o pereche de pachete (SUBSCRIBE / SUBACK); dezabonarea se efectuează în mod similar
(UNSUBSCRIBE / UNSUBACK). Șirurile de subiecte formează un arbore de subiect, calea către
subiectul propriu-zis fiind formată prin utilizarea unui delimitator special (/) de-a lungul arborelui.
Un client se poate abona “la” și se poate dezabona ”de la” ramuri întregi din arborele subiectului
folosind caractere speciale cu metacaracter. Există două metacaractere:
- un metacaracter cu un singur nivel (caracterul plus: +);
- un metacaracter pe mai multe niveluri, (caracterul ”hash”/diez: #).
Un caracter de subiect special este caracterul $; el exclude un subiect din orice abonare. De
obicei, acest caracter ($) este utilizat pentru transportul mesajelor specifice serverului sau ale
sistemului. O altă operațiune pe care un client o poate efectua în timpul fazei de comunicare este
de testare dispozitiv (ping) folosind o secvență de pachete specifice (PINGREQ / PINGRESP). Această
operațiune nu are altă funcție decât să mențină o conexiune și să asigure o conexiune TCP
neîntreruptă de un gateway sau router. Când un editor sau un abonat dorește să încheie o sesiune
MQTT, acesta trimite un mesaj specific (DISCONNECT) către broker și apoi închide conexiunea.
Aceasta se numește închidere grațioasă, deoarece oferă clientului posibilitatea de a se reconecta cu
ușurință, oferindu-i identitatea clientului și reluând din locul în care s-a rămas. În cazul în care
deconectarea se întâmplă brusc, fără ca editorul să trimită un mesaj specific (DISCONNECT), broker-
ul poate trimite abonaților un mesaj de la editor pe care brokerul l-a memorat anterior. Mesajul se
numește ultima dorință sau testament și oferă abonaților instrucțiuni despre ce trebuie să facă dacă
editorul moare (dispare) subit (în mod neașteptat).
Așa cum s-a mai precizat, simplitatea arhitecturii protocolului MQTT ajută la asigurarea unui
transfer de date fără probleme legate lățimea de bandă disponibilă și, de asemenea, pune presiune
redusă pe resursele hardware (în general CPU și RAM).
Printre avantajele MQTT față de protocoalele concurente merită amintite:
- transmisie de date eficientă și aplicații ușor de implementat;
- încărcare redusă a rețelei datorită pachetelor de date minimizate;
- distribuirea eficientă a datelor;
14
SISTEME ȘI REȚELE DE COMUNICAȚIE
15
SISTEME ȘI REȚELE DE COMUNICAȚIE
16
SISTEME ȘI REȚELE DE COMUNICAȚIE
Câteva exemple de domenii (de actualitate!) în care protocolul MQTT își poate demostra
utilitatea sunt:
- contorizare inteligentă - protocolul MQTT poate fi utilizat pentru a transmite date ce
asigură citiri precise ale contoarelor de energie în timp real, ceea ce permite facturarea
corectă cu precădere în sistemele centralizate;
- centralizarea datelor furnizate de senzori ambientali – senzorii ambientali utilizați în
locații îndepărtate sunt adesea dispozitive cu consum redus de energie, astfel încât
MQTT este o alegere bună integrarea acestor senzori în IoT;
- preluarea informațiilor de stare pentru mentenanța utilajelorde sănătate ale mașinilor;
- sisteme de facturare - MQTT ajută la eliminarea pachetelor de mesaje duplicate sau
pierdute în facturare.
Foarte multe platforme IoT acceptă protocolul MQTT (de exemplu Carriots, Evrythng,
ThingWorx etc.).
Protocolul MQTT are, în mod evident, o serie de protocoale concurente, între care:
- CoAP - Constrained Application Protocol – acest protocol folosește un model de
comunicare de tip cerere / răspuns; CoAP este conceput special pentru hardware cu
resurse limitate; hardware-ul care nu acceptă HTTP sau TCP / IP poate utiliza protocolul
CoAP; acest protocol s-a dezvoltat având ca punct de pornire protocolul HTTP;
- AMQP - Advanced Message Queuing Protocol – la fel ca MQTT, AMQP folosește un model
de comunicare de tip publicare / abonare;
- STOMP - Simple (sau Streaming) Text Oriented Message Protocol – este un protocol
bazat pe text; STOMP este un protocol bazat pe cadre modelate pe HTTP; deși STOMP
este bazat pe text el permite și transmiterea mesajelor binare;
- SMCP - Simple Media Control Protocol – este o stivă de protocol CoAP pentru dispozitive
încorporate; este dezvoltat în limbajul C și poate fi utilizat pentru trimiterea și primirea
de răspunsuri asincrone CoAP;
- SSI - Simple Sensor Interface – este un protocol de nivel APLICAȚIE conceput pentru
comunicarea dintre unități centrale și senzori; datele sunt transmise de către senzori
către unitățile centrale cu amprente mici de cod; în cazul acestui protocol mesajul dintre
senzor și unitatea centrală conține un antet de 2 octeți și datele utile; antetul conține o
adresă pe un singur octet și o comandă sau un tip de mesaj de asemenea pe un singur
octet;
- DDS - Data Distribution Service – este un protocol de nivel APLICAȚIE pentru comunicații
M2M în timp real. Pe baza unui model de publicare - abonare, cum ar fi MQTT,
arhitectura protocolului are noduri configurate ca editor, abonat sau ambele; protocolul
DDS nu necesită niciun dispozitiv intermediar de rețea, editorii putând elibera date
referitoare la subiecte specifice (de exemplu temperatura dintr-o locație, temperatură
furnizată de un senzor de temperatură) și protocolul în sine fiind responsabil de livrarea
către abonat; implementarea protocolului nu necesită configurări de rețea, deoarece
protocolul nu necesită verificarea existenței sau locației nodurilor și, de asemenea, nu
necesită confirmarea livrării mesajului.
17
SISTEME ȘI REȚELE DE COMUNICAȚIE
18
SISTEME ȘI REȚELE DE COMUNICAȚIE
19
SISTEME ȘI REȚELE DE COMUNICAȚIE
Unele aspecte ale QoS precum declasarea QoS sau unicitatea identificatorilor de pachete
pentru fiecare client sunt foarte importante atunci când se utilizează QoS.
După cum s-a menționat deja, nivelurile QoS dintre clientul care trimite (publică) mesajul și
clientul care primește mesajul pot fi diferite. Clientul care trimite mesajul PUBLISH către broker
definește nivelul QoS al mesajului. Cu toate acestea, atunci când broker-ul livrează mesajul către
destinatari (abonați), brokerul folosește QoS pe care receptorul (abonatul) l-a definit în timpul
abonării. Se consideră, pentru exemplificare, că expeditorul mesajului este clientul A, iar clientul B
este receptorul mesajului. Dacă clientul B se abonează la broker cu QoS 1 și clientul A trimite mesajul
către broker cu QoS 2, brokerul livrează mesajul către clientul B (receptor / abonat) cu QoS 1.
Mesajul poate fi livrat de mai multe ori către client B, deoarece QoS 1 garantează livrarea mesajului
cel puțin o dată și nu împiedică livrările multiple ale aceluiași mesaj.
Identificatorul de pachete pe care MQTT îl folosește pentru QoS 1 și QoS 2 este unic între un
anumit client și un broker în cadrul unei interacțiuni. Acest identificator nu este unic între toți clienții.
Odată ce fluxul este complet, identificatorul pachetului este disponibil pentru reutilizare. Această
reutilizare este motivul pentru care identificatorul de pachete nu trebuie să depășească valoarea
65535. Este nerealist faptul că un client poate trimite mai mult decât acest număr de mesaje fără a
finaliza o interacțiune.
Nu există reguli clare pentru alegerea nivelului QoS, acesta depinde în mare măsură de
fiecare aplicație în parte. Pentru alegerea corectă a nivelului QoS se pot face, însă, o serie de
recomandări.
QoS 0 se poate folosi când:
- există o conexiune stabilă între expeditor și receptor; un caz de utilizare clasic pentru
QoS 0 este conectarea unui client de testare sau a unei aplicații front-end la un broker
MQTT printr-o conexiune prin cablu;
- nu este nicio problemă dacă se pierd ocazional câteva mesaje; pierderea unor mesaje
poate fi acceptabilă dacă datele nu sunt atât de importante sau când datele sunt trimise
la intervale scurte de timp;
- nu este nevoie de așteptarea mesajelor; mesajele sunt așteptate numai pentru clienții
deconectați dacă utilizează QoS 1 sau 2 și o sesiune persistentă.
QoS 1 se poate folosi când:
- trebuie să fie recepționate toate mesajele, iar aplicația poate gestiona duplicatele; QoS
nivel 1 este cel mai frecvent utilizat deoarece garantează că mesajul ajunge cel puțin o
dată, permițând, însă, livrări multiple;
- nu se poate suporta efortul de transfer specific QoS 2 (QoS 1 livrează mesaje mult mai
rapid decât QoS 2).
QoS 2 se poate folosi când:
- este esențial pentru aplicație să se primească fiecare mesaj exact o dată, livrările duplicat
potând dăuna utilizatorilor aplicației sau clienților abonați; trebuie‚ ținut cont de faptul
că interacțiunea QoS 2 necesită mai mult timp pentru finalizare.
20
SISTEME ȘI REȚELE DE COMUNICAȚIE
Toate mesajele trimise cu QoS 1 și 2 “așteaptă” după clienții offline până când aceștia devin
disponibili din nou. Cu toate acestea, această așteptare este posibilă numai dacă clientul respectiv
are o sesiune persistentă.
2.3 FORMATUL PACHETELOR DE CONTROL MQTT V3.1.1
Protocolul MQTT funcționează prin schimbarea de pachete de control MQTT într-o manieră
bine definită. Un pachet de control MQTT constă din cel mult trei părți (fig. 13).
Bit 7 6 5 4 3 2 1 0
octet 1 tipul pachetului de control MQTT semnalizări specifice fiecărui tip de
pachet de control MQTT (fanioane / flag-
uri)
octet 2 ... rest pachet
Fig. 13 Formatul antetului fix al pachetului de control MQTT v3.1.1
Tipul pachetului de control MQTT este specificat în tetrada superioară a primului octet (fig.
14).
21
SISTEME ȘI REȚELE DE COMUNICAȚIE
Restul de biți (3 - 0) ai octetului 1 din antetul fix conțin fanioane specifice fiecărui tip de
pachet de control MQTT - fig. 15. În cazul în care acesti biti de semnalizare sunt marcati
ca ”Rezervat”, acestia sunt rezervati pentru utilizari viitoare și trebuie să fie setati la valorile indicate.
Dacă se primesc semnalizări nevalide, receptorul trebuie să închidă conexiunea de rețea.
22
SISTEME ȘI REȚELE DE COMUNICAȚIE
Cu aceasta codificare se pot trimite pachete cu lungimea de pana la 268.435.455 octeti (256
MB).
Exemplu – Daca se doreste codificarea numarului 400, se vor obtine 2 octeti, deoarece catul
impartirii acestuia la 128 este mai mic decat 128.
400 = 128*3 + 16 = 128 * 0x03 + 0x10
Deci:
- octetul 2 va fi 0x10 OR (SAU logic) 0x80 (=128) = 0x90;
- octetul 3 va fi 0x03.
23
SISTEME ȘI REȚELE DE COMUNICAȚIE
24
SISTEME ȘI REȚELE DE COMUNICAȚIE
Bit 7 6 5 4 3 2 1 0
Octet 1 MSB Identificator pachet
Octet 2 LSB Identificator pachet
Fig. 19 Octeti Identificator pachet
25
SISTEME ȘI REȚELE DE COMUNICAȚIE
Bit 7 6 5 4 3 2 1 0
octet 1 Tip pachet control MQTT Rezervat
0 0 0 1 0 0 0 0
octet 2 rest pachet
Fig. 22 Antetul fix al pachetului CONNECT
2.4.1.2 Antetul variabil pentru pachetul CONNECT
Antetul variabil pentru pachetul CONNECT este format din patru câmpuri: nume protocol,
nivel protocol, fanioane CONNECT și mentinere conexiune.
Numele protocolului este un șir de caractere codificate UTF-8 care reprezintă numele
protocolului, cu majuscule (”MQTT”) – fig. 23. Acest sir de caractere nu va fi modificat de versiunile
26
SISTEME ȘI REȚELE DE COMUNICAȚIE
viitoare ale specificației MQTT. Dacă numele protocolului este incorect, serverul poate deconecta
clientul sau poate continua să proceseze pachetul CONNECT în conformitate cu alte specificații, nu
in conformitate cu MQTT v3.1.1.
Descriere 7 6 5 4 3 2 1 0
Nume protocol
Octet 1 MSB lungime (0) 0 0 0 0 0 0 0 0
Octet 2 LSB lungime (4) 0 0 0 0 0 1 0 0
Octet 3 ’M’ 0 1 0 0 1 1 0 1
Octet 4 ’Q’ 0 1 0 1 0 0 0 1
Octet 5 ’T’ 0 1 0 1 0 1 0 0
Octet 6 ’T’ 0 1 0 1 0 1 0 0
Fig. 23 Codificarea numelui protocolului in antetul variabil al pachetului CONNECT
Nivelul protocolului este un camp care indica versiunea MQTT printr-un numar pe 8 biți, fara
semn – fig. 24. Valoarea acestui camp pentru versiunea 3.1.1 a protocolului MQTT este 4 (0x04).
Dacă nivelul de protocol nu este acceptat de server, acesta trebuie să răspundă la pachetul
CONNECT cu un cod de returnare ce indica nivelul inacceptabil de protocol și apoi trebuie sa
deconecteze clientul.
Descriere 7 6 5 4 3 2 1 0
Nivel protocol
Octet 7 Versiune protocol (4) 0 0 0 0 0 1 0 0
Fig. 24 Codificarea nivelului protocolului in antetul variabil al pachetului CONNECT
Bit 7 6 5 4 3 2 1 0
Fanion Fanion Fanion QoS Fanion Fanion Rezervat
nume parola retinere stare stare
utilizator solicitare sesiune
Octet 8 X X X X X X X 0
Fig. 25 Bitii de semnalizare ai pachetului CONNECT
Fanionul stare sesiune specifică, asa cum indica si denumirea, starea sesiunii curente.
Clientul și serverul pot stoca starea sesiunii pentru a permite mesajelor de încredere să
continue pe o secvență de conexiuni de rețea.
27