HTTP/2 - Noul protocol al www-ului, mai rapid si mai sigur

Numarul tot mai mare de terminale cu acces la internet, volumul urias de date stocat in online cat si varietatea tipurilor de date existente (imagini, animatii, videoclipuri, grafice interactive, s.a.) necesita in primul rand o viteza de acces la internet cat mai mare si in acelasi timp un trafic fluent de date de la server la calculatorul utilizatorului printr-un protocol de transfer eficient.

Furnizorii de servicii de internet implementeaza constant viteze tot mai mari de acces la internet pentru a tine pasul cu vremurile prezente insa de mai bine de 16 ani protocolul prin care se realizeaza transferul de date pe www a ramas neschimbat, dar asta pana in anul 2015, cand o varianta optimizata a vechiului protocol a fost aprobata pentru a fi data in folosinta la nivel global.

Protocolul HTTP/2 este o versiune imbunatatita a celui folosit in prezent - HTTP/1.1 - fiind prima actualizare majora a standardului HTTP aparuta dupa anul 1999. Principalul scop al actualizarii s-a axat in primul rand pe scaderea timpului necesar pentru descarcarea datelor din internet.

Performanta HTTP/2 - Video (EN), sursa: Youtube.

In articolul de fata vei afla fara prea multe detalii tehnice ce este HTTP/2, ce aduce in plus fata de vechiul protocol, compatibilitatea cu browserele importante si care sunt aspectele controversate ale acestuia.

  De ce o noua versiune?

HTTP (HiperText Transfer Protocol) reprezinta o tehnica de comunicare intre un calculator aflat la distanta si unul local (cel al clientului) prin intermendiul internetului, fiind in acelasi timp si o metoda prin care informatiile stocate pe servere din Word Wide Web (www sau web) sunt accesate si redate clientului printr-un canal de comunicatie stabilit initial.

Versiunea HTTP/1.1 este protocolul de baza folosit pentru transferul de date intre server si client, ambii avand acces la o aceeasi reteaua, cum este si cea de internet. Acesta a fost implementat intr-o faza incipienta in 1991, finalizat in 1996 si definitivat in actuala versiune in 1999, si este folosit atat pentru transferul resurselor web, de exemplu pagini web, pagini de stil CSS, imagini si fisiere de scripting precum JavaScript, cat si pentru alte aplicatii prezente pe internet cum ar fi cele de streaming, transfer de fisere, mesagerie si VoIP.

La inceputul utilizarii internetului paginile web erau in special continut textual, avand putine sau chiar inexistente resurse externe cum sunt imaginile, videoclipurile, animatiile si alte elemente care imbunatatesc interactiunea dintre utilizator cu pagina web. Din moment ce protocolul HTTP/1.1 este de tip textual, acesta s-a putut folosi fara prea mari deficiente, insa odata cu revolutia numita web 2.0 prin care un volum diversificat de informatie, in special de alta natura decat textuala, este utilizat frecvent pe majoritatea site-urilor de pe web, performanta protocolului nu a putut tine pasul cu expansiunea internetului.

Asta doar intr-o prima instanata pentru ca nu numai ca aportul de date si diversitatea lor au fost sustinute sa creasca dar si au fost implementate noi tehnologii (ex. HTML5), eventual platforme, care sa vina in beneficiul acestor noi tendinte. Rezultatul: protocolul HTTP/1.1 a inceput sa devina depasit de numarul mare de resurse necesare redarii unui pagini web, iar modalitatea de transfer a datelor de la server la calculatorul clientului face ca rapiditatea de accesare si descarcare a datelor sa ingreuneze redarea paginilor web in timp util.

  Despre HTTP/2

HTTP/2 este dezvoltat de catre Internet Engineering Task Force si vine ca solutie oficiala a unui protocol de retea compatibil cu HTTP numit SPDY, dezvoltat de Google si suportat in navigatoarele de internet importante.

Prin HTTP/2 se elimina, poate ca nu in totalitate dar sigur intr-o mare masura, deficiente ale vechiului protocol ce tin de incarcarea elementelor de pe web, plus ca isi mentine compatibilitate cu HTTP/1.1 si cu instructiunile standard ale acestuia, si vine si cu o serie de alte caracteristici noi precum:
  • este binar si nu textual asa cum este HTTP/1.1;
  • poate folosi o conexiune pentru a transmite date in paralel;
  • datele care urmeaza a fi transmise pot fi comprimate, reducandu-li-se astfel dimensiunea - ceea ce duce automat la o transmitere de date mai rapida;
  • este multiplex - adica se pot transmite mai multe mesaje sau date pe acelasi canal de comunicatie, si nu singular si ordonat cum este in cazul HTTP/1.1;
  • permite serverelor sa stocheze date in cache-ul clientului, date care vor fi solicitate ulterior de catre client;
  • conexiunea stabilita va fi criptata cu TSL (Transport Layer Security) 1.2, standardizata in 2008 - contribuind astfel si la o securitate marita a datelor transmise sau primite catre/ de la serverul www.
Pentru a putea beneficia de avantajele noului protocol trebuie ca acesta sa fie implementat atat la parea de server (website) cat si la partea de client (calculatorul utilizatorului). Conform unui studiu efectuat de w3techs, peste 1.3 % dintre website-uri utilizeaza deja HTTP/2 (Septembrie 2015), printre acestea enumerandu-se si website-uri apartinand unor companii majore din mediul online - de exemplu google, youtube, twitter, s.a.

In ceea ce priveste implementarea la partea de client, aceasta se face automat prin actualizarea navigatoarelor de internet la ultimile versiuni disponibile, mai exact: cele mai noi versiuni ale navigatoarelor web majore, de exemplu Chrome, Firefox, Opera, Safari, Internet Explorer si Microsoft Edge suporta deja protocolul HTTP/2.

  Dezavantaje

HTTP/2 aduce numeroase imbunatatiri dar in acelasi timp este criticat pentru anumite aspecte. Cel mai dezbatut aspect considerat negativ este criptarea datelor chiar si fara sa fie nevoie, adica atat la HTTP securizat, cunoscut si ca HTTPS, cat si la protocolul nesecurizat de transmitere de date. Un dezavantaj care ar rezulta din acest lucru ar fi ca toate site-urile care implementeaza noul protocol vor trebuie sa foloseasca un certificat de securitate pentru a efectua criptarea datelor, care desigur costa si va trebuie reinnoit periodic. Mai mult decat atat, terminalele mobile ar putea fi afectate de criptare, fiind nevoie de mai multa putere de procesare pentru efectuarea procesului de criptare / decriptare, si deci si de acumulatori cu o autonomie mai mare.

Un alt aspect este legat de stocarea unor date de tip cookie in browser-ul clientului, care pot fi folosite pentru pentru a culege date despre utilizatori, de exemplu in acelasi mod in care marile companii urmaresc vizitatorii atat pe website-urile proprii cat si pe site-urile terta parte. Iar acest fenomen se doreste a fi limitat, in special in Uniunea Europeana, care a emis o lege prin care detinatorii de website-uri au obligatia de a instiinta noii vizitatori de actiunea stocarii unor fisiere cookie pe calculatorul acestora, in unele cazuri de a permite vizitatorului sa acorde sau nu dreptul de a stoca cookie-uri.

  Concluzie

HTTP/2 este prima actualizare majora din ultimii 16 ani a protocolului de comunicatie HTTP. Principalul obiectiv este optimizarea traficului de date care are loc intre calculatorul utilizatorului si serverul web unde sunt stocate date, asadar durata de incarcare a paginilor web este asteptata sa scada chiar si cu cateva zeci de procente, in timp ce securitatea datelor va creste. In plus, desi acesta a fost aprobat pentru a fi folosit in locul vechiului protocol, implementarea va mai dura o perioada de timp, probabil inca un an, astfel ca beneficiile HTTP/2 vor putea fi vazute, la o scara mai larga, incepand cu anul 2016.

Pentru a testa daca un website a implementat deja protocolul HTTP/2 puteti folosi site-ul h2check.org iar pentru a verifica daca browserul pe care il folositi suporta noul protocol si de a vedea in actiune performantele acestuia accesati https://http2.akamai.com/demo.

Surse de documentare:
 https://blog.httpwatch.com/2015/01/16/a-simple-performance-comparison-of-https-spdy-and-http2/
 https://http2.github.io/faq/
 https://en.wikipedia.org/wiki/HTTP/2
 https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
 https://http2.akamai.com/