Documente Academic
Documente Profesional
Documente Cultură
Referat Sacmi
Referat Sacmi
Referat Sacmi
Protocolul WebSocket
2018
Introducere
Protocolul “WebSocket” permite comunicarea full-duplex, in ambele
sensuri, intre un client catre o gazda la distanța, intr-un mediu controlat.
Handshake
Handshake-ul de la client :
Handshake-ul de la server:
Transferul de date
O data ce clientul si serverul au “trimis” handshake, si daca acest proces
s-a realizat cu success, atunci incepe transferul de date pe un canal de
comunicatie full-duplex care fiecare poate sa trimita date. Un mesaj este
compus din unul sau mai multe cadre. Mesajul WebSocket nu
corespunde neaparat unei incadrari specifice a unui strat de rețea,
deoarece un mesaj fragmentat poate fi coalizat sau împarțit de un
intermediar.
Legatura cu TCP
Conceptual, WebSocket este doar un strat pe partea de sus a TCP care
face urmatoarele:
1. Adauga un model de Securitate web pentru browsere.
2. Adauga un mecanism de adresare și denumire de protocol pentru a
suporta mai multe servicii pe un port și mai multe nume de gazda
pe o singura adresa IP.
3. Include o banda suplimentara de “closing handshake” care este
proiectata sa functioneze in prezența proxy-urilor si a altor
intermediari.
Cadre de control
Cadre de control (Control frames) sunt identificati de opcoduri unde cel
mai significativ bit este 1.
Opcode definite includ:
1. 0x8 (Close)
2. 0x9 (Ping)
3. 0xA (Pong).
Cadrele de control sunt folosite pentru a comunica starea WebSocket-
ului.
Toate cadrele trebuie sa aiba un payload maxim de 125 bytes si nu
trebuie fragmentata.
Close Frame.
Cadrul de inchidere( Close Frame) contine un opcode de 0x8.
Ping Frame
Cadrul Ping ( Ping Frame) contine un opcode de 0x9.
Cadrul poate sa include si “Application Data”.
La primirea unui cadru Pong, un punct final trebuie sa trimita un raspuns
la Pong, cu excepția cazului in care acesta a primit deja un cadru Close. Ar
trebui sa raspunda cu un cadru Pong cat mai curand posibil.
Pong Frame
Cadrul Pong (Pong Frame) contine un opcode de 0xA.
Un cadru Pong trimis ca raspuns la un cadru Ping trebuie sa aiba acelasi
camp "Application Data" la fel ca si in corpul de mesaje al cadrului Pong
caruia i s-a raspuns.
Daca un punct final primeste un cadru Ping si nu a trimis in
cacadrul/cadrelede pong ca raspuns la cadrele anterioare de ping,
punctul final poate alege sa trimita un cadru Pong doar pentru cel mai
recent procesat cadru Ping. Un cadru Pong POATE fi trimis nesolicitat.
Aceasta serveste ca o bataie de inima unidirectionale. Nu este de asteptat
un raspuns la un cadru Pong nesolicitat.
Trimitera datelor
Pentru a trimite un mesaj folosind o Conexiune WebSocket, un endpoint
trebuie sa efectueze urmatorii pasi:
1. Endpoint trubuie sa se asigure ca conexiunea WebSocket se afla in
starea Deschis (OPEN state). Daca la un moment dat starea se
schimba, endpoint trebuie sa intrerupa pasii urmatori.
5. Daca clientul este cel care trimite date, cadrele trebuie sa fie
mascate.