sveuČiliŠte u rijeci tehniČki fakultet · 2016-09-28 · osnovni cilj ovog završnog rada je...

42
SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET Preddiplomski sveučilišni studij računarstva Završni rad HTTP/2 - protokol prilagođen modernom webu Rijeka, rujan 2016. Julian Čop 0069064305

Upload: others

Post on 18-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

SVEUČILIŠTE U RIJECI

TEHNIČKI FAKULTET

Preddiplomski sveučilišni studij računarstva

Završni rad

HTTP/2 - protokol prilagođen modernom webu

Rijeka, rujan 2016. Julian Čop

0069064305

Page 2: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

SVEUČILIŠTE U RIJECI

TEHNIČKI FAKULTET

Preddiplomski sveučilišni studij računarstva

Završni rad

HTTP/2 - protokol prilagođen modernom webu

Mentor: izv. prof. dr. sc. Miroslav Joler

Rijeka, rujan 2016.Julian Čop

0069064305

Page 3: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

UMJESTO OVE STR. DOLAZI ZADATAK

Page 4: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

Izjava o samostalnoj izradi rada

Izjavljujem da sam samostalno izradio ovaj rad.

Rijeka, rujan 2016.

________________

Julian Čop

Page 5: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao
Page 6: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

SADRŽAJ:

1. UVOD ............................................................................................................................................. 1

1.1. Predmet i cilj rada ................................................................................................................. 1

1.2. Izvori podataka i metode prikupljanja ................................................................................ 1

1.3. Sadržaj i struktura rada ....................................................................................................... 2

2. POVIJESNI RAZVOJ HTTP-A .................................................................................................. 3

3. OPĆENITO O HTTP-U................................................................................................................ 4

3.1. Klijent/poslužitelj razmjena podataka ................................................................................ 5

3.2. Sigurnost................................................................................................................................. 7

3.3. HTTP/1.1 ................................................................................................................................ 8

3.3.1. Glavne značajke protokola .............................................................................................. 8

3.3.2. Nedostaci HTTP/1.1 protokola ...................................................................................... 10

4. HTTP/2 ......................................................................................................................................... 12

4.1. Ekperimentalni SPDY protokol ......................................................................................... 12

4.2. Prednosti HTTP/2 protokola .............................................................................................. 13

4.2.1. Povezivanje i logički tok podataka ................................................................................ 13

4.2.2. HPACK ......................................................................................................................... 14

4.2.3. Server push .................................................................................................................... 16

4.2.4. Binarni protokol ............................................................................................................ 17

4.3. Nedostatci HTTP/2 protokola ............................................................................................ 17

4.3.1. Sporo čitanje .................................................................................................................. 17

4.3.2. HPACK bomba .............................................................................................................. 18

4.3.3. Krug zavisnosti .............................................................................................................. 19

4.3.4. Zloupotreba multipleksiranja ......................................................................................... 20

4.4. Prilagodba ............................................................................................................................ 20

4.5. Dodatne mogućnosti ............................................................................................................ 20

5. OPIS PRAKTIČNOG DIJELA ZAVRŠNOG RADA ............................................................. 22

5.1. Priprema za rad ................................................................................................................... 22

5.2. Konfiguracija poslužitelja................................................................................................... 23

5.3. Uspostava HTTP/2 veze na web pregledniku.................................................................... 25

5.4. Mogućnosti web aplikacije.................................................................................................. 27

6. ZAKLJUČAK .............................................................................................................................. 33

LITERATURA .................................................................................................................................... 34

SAŽETAK ............................................................................................................................................ 36

Page 7: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

1

1. UVOD

1.1. Predmet i cilj rada

Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola

verzije 2 (HTTP/2 ili H2), kao i njegov potencijalni doprinos napretku Interneta. HTTP/2

protokol je prilagođen modernom webu, a ujedno i druga glavna verzija jednog od najznačajnijih

internetskih, komunikacijskih protokola - HTTP-a. Tema je odabrana s obzirom da je to prva

nova verzija istog protokola koji se nije mijenjao još od 1997. godine, te zbog toga donosi cijeli

niz nepoznanica te novina, koje je potrebno objasniti i demonstrirati.

U praktičnom dijelu rada osnovni cilj bio je napraviti web aplikaciju ili web sjedište sa zadatkom

predstavljanja prednosti HTTP/2 u odnosu na dosadašnji HTTP/1.1. Demonstrirane prednosti

trebalo je predstaviti u obliku realnih primjera pogodnih za mjerenje i analiziranje.

1.2. Izvori podataka i metode prikupljanja

S obzirom kako je HTTP/2 novi protokol, koji je izašao 2015. godine, većina sadržaja je

pronađena na web portalima te stranicama koje se bave analizom Internet protokola. Također,

mnogo podataka izvučeno je iz RFC dokumenata odnosno Request for Comments dokumenata

izdanih od strane IETF-a (Internet Engineering Task Force). IETF dokumenti opširno opisuju

metode, istraživanja, ili inovacije vezane uz Internet i globalnu povezanost njime.

Informacije su prikupljane i uz pomoć nekoliko video prezentacija novog protokola, koje su

također objavljene na Internetu. Jedna od njih jest i prezentacija sa Chrome Dev Summita iz

2015. godine.

Rad je pisan na način da su se prvo prikupili svi podaci i informacije o temi te se zatim krenulo u

implementaciju zadanog programa te pisanja završnog rada.

Page 8: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

2

1.3. Sadržaj i struktura rada

Ovaj dokument pisan je sa ciljem prezentacije HTTP/2 protokola sa naglaskom na razlike

u odnosu na prethodnu verziju HTTP/1.1. Nova verzija donosi mnoga unaprjeđenja, koja su

detaljno opisana, a pojedina čak i predstavljena sa primjerima kojima se nastoji olakšati

razumijevanje istih. Osim toga, opisuje se prilagodba internetske mreže na HTTP/2, pa i njegova

povezanost sa SPDY protokolom (SPDY je internetski, ekperimentalni protokol razvijen od

strane kompanije Google).

U prvom dijelu ovog dokumenta opisan je i protokol HTTP/1.1, kao i HTTP protokol i njegov

razvitak. Razlog za to leži u činjenici, da nije moguće shvatiti kako funkcionira novi HTTP/2

protokol bez poznavanja barem osnovnog znanja o HTTP protokolima, a posebice o verziji

HTTP/1.1 koja mu prethodi.

Tijekom razrade teme HTTP/2 protokola, opisuju se i njegovi najveći, dosad otkriveni, nedostaci

koji bi mogli naštetiti njegovom sve većem širenju. Uz nedostatke, opisane su i dodatne

mogućnosti, s kojima bi HTTP/2 postao još efektivniji i brži.

Dokument sadrži i detaljni opis praktičnog dijela završnog rada sa fokusom na njegovu izradu i

mogućnosti.

Na kraju rada nalazi se i poglavlje Zaključak (6.), koje služi kao okvirni osvrt na temu i

subjektivni stav prema uspješnosti projekta i samom radu.

Page 9: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

3

2. POVIJESNI RAZVOJ HTTP-A

Sami početak razvoja HTTP protokola veže se uz nastajanje hiperteksta i Interneta. Tim

Berners -Lee, zajednom sa CERN timom, još je 1989. godine napravio originalni HTTP, zajedno

sa HTML-om i ostalim pripadajućim tehnologijama, a taj je projekt poznatiji pod pojom World

Wide Web. Prva verzija protokola imala je samo jednu liniju koda za zahtjev odnosno jednu

metodu (GET, POST ili HEAD), koja je mogla poslati poslužitelju (engl. server) isključivo

zahtjev za web stranicom. Kao odgovor od poslužitelja, klijent bi dobio HTML dokument. Ta

verzija protokola, koja je dokumentirana 1991. godine, naziva se HTTP V0.9. [1]

Nešto kasnije, 1995. godine, Dave Raggett vodio je HTTP Working Group s ciljem proširivanja

protokola sa dodatnim operacijama, mogućnostima, bogatijim meta-informacijama te

sigurnosnim protokolom. Uz sve to, pridodane su još i dodatne metode (PUT, DELETE, LINK),

ali i polja zaglavlja (engl. header fields), koja do tada nisu postojala. Taj novi protokol nazvan je

HTTP V1.0 ili HTTP/1.0 te je doživio izniman uspjeh, iako je i on posjedovao određene

nedostatke. RFC 1945 i službeno je priznao novu verziju HTTP V1.0 sredinom 1996. godine.

Danas, gotovo svaki poslužitelj može komunicirati preko HTTP/1.0, međutim zahtjevanje nove

TCP veze za svaki zahtjev ima veliki negativan utjecaj na brzinu izvođenja. Pod pojmom TCP

veze podrazumijeva se veza koja koristi Transmission Control Protocol (TCP) i pripada

transportnom sloju. Koristi se pri isporuci podataka na način, da se TCP segmenti podataka

pakiraju u (IP) pakete te takvi šalju preko veze.

To nije bio jedini problem HTTP/1.0 protokola te se, već u razdoblju od 1995. do 1999. godine

razvijao novi ažurirani i poboljšani standard - HTTP/1.1. O njemu će biti riječi nešto kasnije u

nastavku (poglavlje 3.3.).

Dugo vremena nije bilo nikakvih promjena protokola, točnije sve do 2007. godine, kada

HTTPbis Working Group radi reviziju i nastoji unaprijediti postojeći protokol. Kao rezultat toga,

izlazi šestodjelna specifikacija, koja nadopunjuje RFC 2616, u kojem je službeno dokumentiran

HTTP/1.1.

Daljnji napredak Interneta, kao i povećanje njegovih korisnika, zahtjevao je i nova unaprjeđenja

kod HTTP internet protokola, te je u svibnju 2015. godine izašao i HTTP/2 kao posljednja

verzija tog protokola.

Page 10: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

4

3. OPĆENITO O HTTP-U

HTTP odnosno HyperText Transfer Protocol najznačajniji je protokol aplikacijskog sloja

na Internetu. On služi prvenstveno za razmjenu hipertekstova odnosno strukturiranih tekstova

koji koriste logičke poveznice. Za uspostavljanje veze najčešće koristi TCP protokol

transportnog sloja, iako se može prilagoditi i primjeniti i za UDP veze (npr. HTTPU, SSDP).

UDP, kao i TCP, je protokol koji se koristi kod transportnog sloja, ali je od TCP-a znatno

jednostavniji i nema kontrolu razmjene podataka (pogodan za komunikacije gdje su pogrješke

prihvatljive)

Koristi se kao sredstvo komunikacije između klijenta i poslužitelja, pri čemu je bitno za

napomenuti kako riječi "klijent" i "poslužitelj" predstavljaju samo uloge koje program ima

unutar određene veze te nije isključeno da se i klijent i poslužitelj nalaze na istom računalu .

Klijent je, stoga, program koji ostvaruje vezu sa poslužiteljem kako bi poslao jedan ili više

HTTP zahtjeva, te pridobio željene datoteke ili usluge od poslužitelja. S druge strane, poslužitelj

ili server predstavlja program koji prihvaća vezu, potvrđuje je odgovore u obliku poslane poruke

te ispunjava klijentove zahtjeve, ukoliko je u mogućnosti ih izvršiti. Pri tome sasvim je nebitno

kakva vrsta medija/podataka se razmjenjuje između sugovornika, jer HTTP nije zavisan samo o

jednoj vrsti podataka već može prenositi gotovo sve. Podaci se šalju jedan po jedan preko

portova, a HTTP, ako nije drugačije navedeno, koristi broj porta 80 (alternativni port za HTTP je

8080). [2]

HTTP je ujedno i protokol bez stanja (engl. stateless), odnosno protokol koji ne održava

konstantnu vezu između sugovornika već se svaki upućeni zahtjev promatra odvojeno. To znači,

da poslužitelj ne mora pratiti stanje te nikakve informacije vezane uz klijenta. Međutim iako je

definiran kao bez stanja, HTTP ipak sprema određene informacije o klijentu u obliku kolačića

(engl. cookie), koje kasnije može koristiti kod, primjerice, profiliranja klijenata.

Page 11: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

5

3.1. Klijent/poslužitelj razmjena podataka

Komunikacija između klijenata i poslužitelja temelji se razmjeni zahtjeva te pripadajućih

odgovora, pritom poštivajući dogovorenu sintaksu temeljenu na RFC dokumentaciji i

standardima.

Slika 3.1. Komunikacija između klijenta (engl. client) i poslužitelja (engl. server). Klijent šalje

HTTP zahtjev (engl. request) na zadani URL poslužitelja (URL predstavlja putanju do sadržaja

tj. resursa na Internetu), a kao odgovor (engl. response) od poslužitelja prima cjelokupni HTML

dokument. [3]

Zahtjev je, dakle, poruka kojom klijent otvara komunikaciju između klijenta i poslužitelja, te se

sastoji od metode koja se koristi, URI traženog izvora podataka te verzije HTTP preko koje se

planira poslati zahtjev, ali i ostalih dodatnih polja zaglavlja. URI odnosno Uniform Resource

Identifier predstavlja niz znakova kojima se identificira izvor (npr.

https://example.org/resource.txt). Za slanje zahtjeva HTTP koristi razne metode. Te metode

odnose se na obavljanje neke akcije, poput dohvaćanja određenih podataka na udaljenom

poslužitelju. Prve metode koje su nastale bile su GET, POST i HEAD, dok je s vremenom

dodano još pet metoda: OPTIONS, PUT, DELETE, TRACE i CONNECT. Zahtjev se šalje dalje

na URI izvora podataka, koji označava string znakova po kojima se prepoznaje mjesto/ računalo

s kojega se podaci šalju na odredište.

Kod slanja odgovora na dobivene zahtjeve, procedura je drugačija. Odgovor, osim osnovnog

tijela poruke, kao što je npr. HTML dokument kojeg je klijent zatražio, sadrži i statusnu liniju te

ostala polja zaglavlja. Statusna linija označava početak odgovora, a nadopunjava se pridruženom

tekstualnom frazom, kao što je, na primjer, 200 OK.

Page 12: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

6

One su od izrazite važnosti s obzirom da ukazuju kako primatelj, odnosno klijent, treba

interpretirati sljedeću poruku koju dobije od poslužitelja. Pri tom, razlikujemo 5 različitih grupa

statusnih linija (x označava nedefinirani broj):

1xx - informational; zahtjev je zaprimljen i može se poslati ostatak (HTTP klijenti

ignoriraju ovu statusnu liniju u zaglavlju)

2xx - successful; zahtjev je uspješno zaprimljen

3xx - redirection; potrebna je dodatna akcija kako bi se izvršio zahtjev

4xx - client error; zahtjev ili ima pogrješku u sintaksi ili nemože biti izvršen

5xx - server error; statusna linija, koja tumači klijentu, kako je poslužitelj taj koji nije

mogao izvršiti traženi zahtjev [4]

Slika 3.2. Prikaz poruka zahtjeva (lijevo) i odgovora (desno). I kod jednog i drugog prisutno je

zaglavlje, te narančasta linija koja označava prazan red, nakon kojeg dolazi tijelo poruke. [5]

Može se primjetiti da su zaglavlja, smještena unutar zahtjeva i odgovora, od izrazite važnosti za

funkcioniranje same komunikacije korištenjem HTTP-a. Oni sadrže sve potrebne, dodatne

informacije kako bi se veza između klijenta i poslužitelja uspješno i efikasno uspostavila. Postoje

4 vrste zaglavlja (general, request, response i entity). General zaglavlja mogu se koristiti i kod

slanja zahtjeva i kod slanja odgovora. Za razliku od general zaglavlja, request zaglavlja koriste

se isključivo kod slanja zahtjeva sa strane klijenta, dok se response zaglavlja koriste kod slanja

odgovora. Entity zaglavlja definiraju meta informacije kod poslane poruke ili kod izvora

podataka na koji klijent šalje zahtjev.

Page 13: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

7

3.2. Sigurnost

Pitanje sigurnosti kod HTTP protokola rješeno je uz pomoć drugih slojeva OSI modela

(Open Systems Interconnection modela). Osnovni primjer jednog od takvih sigurnih, internetskih

protokola je i HTTPS ili HyperText Transfer Protocol Secure, koji je nastao kombinacijom

protokola HTTP s protokolom SSL (Secure Socket Layer) / TLS (Transport Layer Security). Za

razliku od HTTP-a koji koristi port 80, HTTPS standardno rabi TCP/IP port 443 te njegovi URL-

ovi počinju s "https://". Ovaj protokol omogućava kriptiranu komunikaciju i sigurnu

identifikaciju web poslužitelja mreže. HTTPS veze često se koriste za novčane transakcije na

World Wide Webu i za ostale povjerljive transakcije u korporativnim informacijskim sustavima,

odnosno općenito kada je potrebno poslati povjerljivu informaciju ili osigurati pouzdanu

identitifikaciju. Isto tako, služi i kao osnova uspostavljanja veze za HTTP/2 protokol.

Bitno je naglasiti kako prilikom prijenosa podataka, sve važne informacije, poput onih o

privatnosti klijenta ili same poruke, trebaju biti spremljene u ekriptiranoj formi na poslužitelju.

Pri tome, proxy poslužitelji, odnosno računala koja se nalaze između krajnjih točaka pošiljatelja i

primatelja kao posrednici, trebaju biti posebno oprezni kako ne bi odali identitet klijenta.

Cijeli sustav sa HTTPS-om može se koristiti i za autentikaciju korisnika odnosno kontrolu

pristupa. Prilikom kontrole pristupa administrator web-stranice uobičajeno stvara određenu

vjerodajnicu (engl. certficate) za svakog pojedinog korisnika, te se tu vjerodajnicu učitava u

njegov preglednik. Vjerodajnica ili certifikat sadrži ime i e-mail adresu ovlaštenog korisnika, kao

i još neke dodatne opcionalne podatke, a automatski je provjeravan od strane poslužitelja za

svako ponovno povezivanje kako bi potvrdili korisnikov identitet, potencijalno čak i bez unosa

lozinke.

Page 14: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

8

3.3. HTTP/1.1

3.3.1. Glavne značajke protokola

HTTP/1.1 verzija HTTP protokola nastala je kao revizija iznenađujuće uspješnog

HTTP/1.0 protokola, a ujedno je i prethodnik nove HTTP/2 verzije. Službeno je objavljena

unutar RFC 2068, 1997. godine. Rezultat je četverogodišnjeg istraživanja i dogovaranja skupine

web programera (HTTP Working Group). Potaknut velikim brojem korisnika koji su prihvatili

ovaj protokol, HTTP/1.1 standard doživio je i određena poboljšanja i ažuriranja 1999. godine,ali

i dalje se radi o istom protokolu.

HTTP/1.1, u odnosu na prijašnji protokol donosi nekoliko novina koje su još više unaprijedile i

poboljšale sami protokol. Omogućava brže učitavanje web stranica od originalnog HTTP-a te

smanjeni web promet.

Jedna od najvažnijih značajki koja je ubrzala izvođenje je sposobnost slanja više istodobnih

zahtjeva preko jedne veze. Umjesto otvaranja i zatvaranja veze za svaki par zahtjev/odgovor koji

se šalje, klijent ili poslužitelj može poslati nekoliko zahtjeva/odgovora preko neprekinute (engl.

persistent) veze jedan za drugim (engl. pipeline), koji će zatim biti prihvaćeni od strane

međuspremnika (engl. buffer) primatelja. Za to koristi posebno polje zaglavlja, koje govori

primatelju da drži vezu otvorenom (Connection: keep-alive).

Slika 3.3. Primjer usporedbe gdje se s lijeve strane nalazi komunikacija bez slanja više

istovremenih zahtjeva (engl. pipelining), a desno sa više istovremenih zahtjeva. [6]

Page 15: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

9

Osim toga, HTTP/1.1 koristi i novi mehanizam za slanje podataka nazvano razdijeljeno

kodiranje prijenosa (engl. chunked transfer encoding). Razdijeljeno kodiranje prijenosa označava

slanje podataka/datoteke u serijskim zasebnim dijelovima (eng. chunk) preko HTTP. Pri tomu je

veličina dijela datoteke poslana prije samog dijela datoteke, kako bi primatelj znao kada bi

trebao završiti sa primanjem podataka za taj dio. Kao i kod slanja više zahtjeva preko jedne veze,

i mehanizam razdijeljenog kodiranja prijenosa koristi posebno polje zaglavlja (Transfer-

Encoding: chunked), koje dolazi umjesto Content-Lenght polja zaglavlja, s obzirom

da pošiljatelj nemora znati veličinu podatka da bi ga počeo slati preko veze.

Slika 3.4. Primjer uobičajenog slanja dokumenta (lijevo) te razdijeljenog kodiranja (desno). [7]

HTTP/1.1 je, također, uveo i podršku za predmemoriju (engl. caching). Caching predstavlja

privremenu pohranu podataka, kako bi budući zahtjevi za istim podacima bili brži posluženi.

Osnovni cilj pohranjivanja u predmemoriju kod HTTP-a jest povećati efektivnost slanja

podataka, na način da se eliminira potreba za slanjem nepotrebnih zahtjeva sa strane klijenta te

dugih punih odgovora sa druge strane.

Za razliku od HTTP/1.0, njegov nasljednik HTTP/1.1 efektivnije se koristi i samim IP adresama

(IP broj ili IP adresa predstavlja jedinstvenu brojčanu oznaku računala na Internetu), pa je tako

omogućeno i posluživanje više domena sa jedne IP adrese.

Page 16: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

10

3.3.2. Nedostaci HTTP/1.1 protokola

Kao razlog pojavljivanja prvih problema sa HTTP/1.1, možemo navesti ogromno

povećanje korisnika, čiji se broj utrostručio samo u posljednjih 4 godine. Tako su zahtjevi web

sjedišta i aplikacija postali sve više suprotstavljeni mehanizmima i pravilima na kojima se

zasnivala HTTP/1.1 verzija protokola. Sve do pojave novog protokola, uvijek se nastojalo

zaobići potencijalne nedostatke HTTP/1.1 ili ih, jednostavno, neutralizirati uz pomoć dodatnih

tehnika (engl. best practices) ili čak ostalih protokola drugih slojeva.

Jedan od najvećih problema, koji su se pojavljivali kod HTTP/1.1 je problem prijenosa podataka

nazvan head-of-line blokiranje. Head-of-line blokiranje je fenomen koji smanjuje brzinu

prijenosa podataka na webu, a pojavljuje se kada prvi paket blokira ostale kod zajednog slanja

više zahtjeva (engl. pipelining). Do problema dolazi zbog blokiranih TCP veza, pri čemu je bitno

naglasiti, kako veza ostaje zauzeta za jedan klijent/poslužitelj par od slanja zahtjeva sve do

primitka odgovora od strane poslužitelja. To znači da nijedan drugi klijent nemože poslati novi

zahtjev na tu istu vezu, a svi paketi iza prvoga paketa moraju čekati njegov dolazak kod strane

primatelja. Originalni HTTP/1.0 omogućava samo 2 veze za spajanje, no s vremenom, te

razvojem drugih verzija protokola, to ograničenje se podiglo na 6, što je i dalje poprilično malo,

zbog čega i dolazi do zagušivanja i head-of-line blokiranja.

Slika 3.5. Prikaz head-of-line blokiranja (označeno crvenom bojom). Na slici se prikazuje

višestruko slanje zahtjeva sa strane klijenta te zatim nepotrebno čekanje poslužitelja, koji nezna

je li klijent završio sa slanjem ili nije. [8]

Page 17: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

11

Broj od samo 6 mogućih istovremenih TCP veza ujedno i povećava vrijeme odaziva (engl.

latency), odnosno vrijeme proteklo od slanja paketa od strane klijenta pa sve do primitka istog

paketa na strani poslužitelja. Samim time, i vrijeme čekanja za učitavanje pojedine web stranice

postaje mnogo duže.

Osim toga, HTTP/1.1, prilikom slanja svojih paketa (zahtjeva ili odgovora), u zaglavljima vrlo

često ponavlja ista polja. Ta ponavljujuća polja zaglavlja često nepotrebno uzrokuju da se TCP

prozor zagušenja vrlo brzo napuni podacima te i tu dolazi do dodatnih čekanja. Kao primjer

možemo navesti korištenje sesija, pri čemu se šalju uvijek ista, duga polja kolačića te user-

agenta (označava klijenta odnosno u velikom broju slučajeva korišteni internetski preglednik).

Page 18: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

12

4. HTTP/2

Koliko je HTTP/1.1 kvalitetan i efikasan protokol, dovoljno za sebe govori njegova dugotrajnost,

s obzirom da se koristio gotovo 16 godina bez ikakvih promjena i ažuriranja na njemu. Međutim,

16 godina u području informacijskih tehnologija je veoma dugačak period, u kojem je Internet

drastično napredovao te povećao svoj broj korisnika, zbog čega je čak i HTTP/1.1 počeo

pokazivati svoje "godine". Svi problemi nabrojani iz poglavlja 3.3.2, jednostavno su postali

preveliki te su previše utjecali na perfomanse samog protokola. Iz tog razloga, počela se javljati

sve veća potreba za novim protokolom, koji će biti prilagođeniji modernom webu.

HTTP/2 protokol druga je velika revizija HTTP internetskog protokola, čija je specifikacija

objavljena kao RFC 7540 u svibnju 2015. godine. Protokol je razvila skupina programera i

inovatora poznatija pod nazivom HTTP Working Group. Već do završetka iste 2015. godine,

velika većina preglednika, kao što su Chrome, Opera, Firefox, Internet Explorer, Safari prihvatila

je protokol te započela sa njegovim korištenjem.

4.1. Ekperimentalni SPDY protokol

Prije nego li se započne sa upoznavanjem HTTP/2 protokola, potrebno je, najprije,

objasniti njegov početak i sličnost sa eksperimentalnim SPDY protokolom. SPDY protokol je

protokol za razmjenu web sadržaja i podataka otvorene specifikacije, razvijen sa strane tvrtke

Google. On manipulira HTTP web prometom sa ciljem povećanja brzine učitavanja web stranica

i povećanjem internetske sigurnosti. Kako bi to postigao, koristi se kompresijom podataka,

prioritizacijom te multipleksiranjem, a upravo je ovo zadnje ključno za spajanje više transakcija

podataka unutar jedne veze.

Bitno je napomenuti da SPDY ne zamjenjuje HTTP, već mijenja način na koji se njegovi podaci

šalju preko veze. Tako rečeno, SPDY se može shvatiti kao "tunel" za HTTP i HTTPS protokole.

SPDY omogućuje operacije preko TCP-a, iako primarno ipak zahtjeva slanje podataka preko

SSL/ TLS veze, uz TLS dodatak ALPN. Application-Layer Protocol Negotiation, ili skraćeno

ALPN, dodatak je TLS-a, koji daje aplikacijskom sloju za pravo odabrati koji protokol će se

koristiti preko uspostavljene sigurne veze. ALPN se koristi i u HTTP/2.

S obzirom kako je SPDY ipak samo eksperimentalni protokol, Google je prestao davati podršku

za njega u veljači 2015. godine, kako bi time oslobodio prostor i dao šansu da što više korisnika

prihvati njemu sličan, nadolazeći protokol HTTP/2.

Page 19: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

13

4.2. Prednosti HTTP/2 protokola

HTTP/2, vrlo često identificiran i kao H2 (h2), koristi istu semantiku kao i prijašnji HTTP

protokoli te se i dalje primjenjuje zahtjev/odgovor način komunikacije, zaglavlja i ostali

čimbenici, no bitna je razlika u načinu slanja istih. Iz toga proizlazi da je ključni faktor

poboljšanja, u odnosu na prijašnje protokole, razlika u performansama.

4.2.1. Povezivanje i logički tok podataka

Veza za razmjenu podataka preko HTTP/2 može se stvoriti preko TLS ili preko TCP veze.

Za spajanje preko TCP veze nije potreban prethodno implemetirani HTTP/1.1 protokol te je

moguća upotreba HTTP/2 protokola bez prijašnjih verzija.

Način uspostave veze preko TLS-a ipak je ponešto drugačiji od uobičajenog. To je, ponajprije

zbog toga što se HTTP/2 veza mora uspostaviti kao nadogradnja (engl. upgrade) na već postojeći

protokol, što znači da svaka veza započinje spajanjem sa poslužiteljem preko HTTP/1.1 veze te

se onda prelazi na novi protokol koji se i koristi u daljnjoj komunikaciji. Pri tome, i klijent i

poslužitelj moraju podržavati HTTP/2, jer, u protivnom, veza ostaje na protokolu sa kojim je i

započela - HTTP/1.1. Većina je preglednika odlučila podržati samo tu opciju, pa tako mnogi web

preglednici nude HTTP/2 usluge samo preko TLS veze. Samim time, enkripcija i zaštita

podataka postale su obavezne.

Uspostavljanje veze između klijenta i poslužitelja neizostavan je dio njihove međusobne

razmjene podataka. Zbog toga bi, to uspostavljanje veze, trebalo biti što jednostavnije i

efikasnije.

Kod HTTP/1.1 gubi se mnogo vremena zbog problema sa blokiranjem svih 6 mogućih TCP veza

te zbog head-of-line blokiranja, uslijed čega su budući zahtjevi bili na nepotrebnom čekanju. Taj

problem, HTTP/2 rješio je na način upostavljanja samo jedne TCP veze.

Uspostavljanje samo jedne TCP veze između klijenta i poslužitelja omogućeno je zbog toga što

se HTTP/2 koristi multipleksiranjem te logičkim tokom podataka (eng. logical stream) kako bi

osigurao što bolje performanse. On dijeli svoje HTTP poruke u binarne okvire (engl. frame) sa

dogovorenim veličinama te ih onda kao tokove podataka (engl. stream) šalje na vezu, koju svi

zajedno koriste (dijeli se propustnost). Time se rješio i problem head-of-line blokiranja, jer

Page 20: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

14

ukoliko jedan tok podataka postane blokiran čekajući odgovor, drugi tok može preuzeti vezu i

koristiti ju. Svi tokovi podataka zajedno dijele istu vezu i njezinu propustnost.

Slika 4.1. Primjer logičkog toka podataka preko jedne TCP veze. Osnovni tokovi podataka koji

se nalaze na vezi, podijeljeni su na okvire zaglavlja i podatkovne okvire. [9]

Klijent, isto tako, može odlučivati o težini, odnosno prioritetu svakog toka podataka, kao i

njihovoj međusobnoj zavisnosti. Tako, može dobiti kritične i potrebne podatke odmah i bez

čekanja na slanje ostalih podataka. Određivanje prioriteta i zavisnosti su, za sada, implementirani

samo na klijentovoj strani, međutim ozbiljno se razmišlja i o njihovom uvođenju na strani

poslužitelja.[10]

Kao što je već spomenuto, HTTP poruke se dijele na okvire. Postoje 2 vrste osnovnih okvira, a

to su okviri zaglavlje i podataka (i jedni i drugi su vidljivi na slici 4.1.). Iz samih naziva, može se

zaključiti o čemu je riječ i koji dio paketa, tj. poruke oni sadržavaju.

4.2.2. HPACK

Podijela zaglavlja i podataka na okvire, donijela je još jednu mogućnost koja dotad nije

bila ostvariva, a radi se o kompresiji samih zaglavlja. Ne samo to, u HTTP/2 implementirana je

potpuno nova, posebna kompresija, samo za HTTP zaglavlja pod nazivom HPACK.

HPACK se koristi algoritmom poznatim kao Huffmanovo kodiranje, koje doprinosi smanjenju

veličine podataka poslanih preko mreže, pritom upotrebljivajući tablice sa binarnim kodovima.

Sva zaglavlja, koja su slana preko HTTP/2, poslana su preko TCP veze u obliku HPACK

formata.

Page 21: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

15

Svojim kompresiranjem, HPACK smanjuje veličinu zaglavlja za gotovo 30%, a, isto tako,

uspješno zamjenjuje prikupljanje podataka sa više izvora istovremeno (eng. domain sharding).

[11]

Postoje 3 glavne prednosti HPACK-a:

koristi se fiksnim Huffman kodiranjem za velika zaglavlja

mogućnost kodiranja već korištenih, otprije poslanih, polja zaglavlja kao varijable u byte-

ovima. Time se izbacilo nepotrebno ponovno slanje cijelih zaglavlja kod svakog slanja

paketa.

zbog kodiranja, podaci više nisu ugroženi napadima na kompresiju (CRIME napadi).

Gzip kompresija upravo zbog učestalih CRIME napada nije podržana unutar HTTP/2.

Huffmanovo kodiranje je algoritam koji radi tako da pridružuje binarne kodove umjesto sadržaja

pojedinog polja zaglavlja. Na taj način, kada primatelj zaprimi zaglavlje kompresirano HPACK-

om, on pogleda u tablicu sa binarnim kodovima te zatim vrši dekompresiju. Tablica sadrži

statički i dinamički dio.

Dinamički dio tablice koristi se za dinamičko indeksiranje. Tako se stalno ponavljujuća polja

zaglavlja, poput user-agenta, mogu zapisati u tablicu kao poseban binarni kod, koji će se pri

sljedećem slanju upotrijebiti umjesto cijelog polja user-agenta.

Slika 4.2. Korištenje HPACK-a kod slanja polja polja zaglavlja [12]

Na Slici 4.2., možemo vidjeti 3 tablice, od kojih se lijevo nalazi tablica sa originalnim poljima

zaglavlja, u sredini tablica korištena za HPACK kompresiranje te desno polja zaglavlja, koja su

prethodno izmjenjena sa binarnim kodovima. Slika prikazuje kako se, uz korištenje HPACK

Page 22: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

16

tablice, na primjeru poslanog zaglavlja, metoda GET pretvorila u binarni kod 2. Isto tako,

prikazano je i korištenje dinamičkog dijela tablice za, primjerice, user-agent polje.

4.2.3. Server push

Server push predstavlja tehnologiju pomoću koje poslužitelj šalje podatke klijentu i prije

nego što ih je klijent zatražio i poslao zahtjeve. Server push-om najčešće se šalju podaci za kojih

se pretpostavlja da će zatrebati klijentu pri njegovom daljnjem radu. Njime se nastoji smanjiti

broj putovanja zahtjeva i odgovora, čime se, ako se pravilno koristi, mogu poboljšati

performanse za čak 60%. [13]

Slika 4.3. Prikaz primjera server push tehnologije za datoteke style.css i script.js, za koje klijent

nije imao potrebe slati dodatne zahtjeve s obzirom da su one već primljene od strane poslužitelja

[14]

Međutim, server push nemora nužno samo poboljšati performanse te ako se koristi nepravilno,

može doći i do još većeg vremena izvršenja operacija i većeg čekanja. To se događa iz razloga

što se prema klijentu šalju podaci koji mu nisu potrebni, čime se nepotrebno zauzima propustnost

veze.

Page 23: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

17

4.2.4. Binarni protokol

HTTP/2 je binarni protokol, dok je HTTP/1.1 tekstualni. Binarni protokoli koriste binarne okvire

za poruke što dovodi do boljih i učinkovitijih slanja. Oni su puno kompaktiniji na samoj

fizičkom sloju slanja podataka, ali i puno manje skoni pogreškama od tekstualnih, što je od

izrazite važnosti.

Binarno kodiranje koristi se i kod izrade okvira zaglavlja i podataka, prije nego li oni budu

poslani na vezu, što dovodi do još efektivnijeg slanja podataka.

4.3. Nedostatci HTTP/2 protokola

HTTP/2 protokol se sve više upotrebljava na web stranicama sa raznim sadržajima, zbog

čega je rano otkrivanje mogućih slabosti i mana zabrinulo i poneke stručnjake. Jedan od njih je i

Poul-Henning Kamp, koji je u svojim tvrdnjama otišao toliko daleko da tvrdi da je HTTP/2 samo

uljepšano ime za HTTP/1.2. Po njemu, protokol ne riješava ključne i aktualne probleme vezane

uz privatnost i sigurnost, već se iskljućivo fokusira na povećanje propustnosti. Pri tome, Kemp

predlaže da bi bilo korisnije ukloniti mehanizam kolačića te ga zamijeniti određenom vrstom

sesija. Zasad su otkrivena 4 nedostatka odnosno mogućnosti za sigurnosne napade, koje će se

detaljnije predstaviti u nastavku.

4.3.1. Sporo čitanje

Sporo čitanje je napad na poslužitelja sličan Slowloris DDoS napadu, a poziva se na

malicioznog klijenta koji čita odgovore pristigle od poslužitelja veoma sporo, čime nepotrebno

zauzima vezu. Sporo čitanje kao napad, je proučavano i za vrijeme protokola HTTP/1.1,

međutim niti u novom protokolu nisu poduzete nikakve mjere kako bi se ono spriječilo.

Page 24: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

18

Slika 4.4. Primjer sporog čitanja kod klijenta. [15]

Na slici 4.4., gdje se nalazi primjer sporog čitanja, prvo je prikazano uspostavljanje TCP prozora

zagušenja (INITIAL_WINDOW_SIZE to 1) te zatim slanje zahtjeva (Stream X GET

request to /large/resource). Odgovor od strane poslužitelja dolazi u obliku Stream

X response, koja je označena crvenom strjelicom, nakon čega klijent šalje još mnoštvo

zahtjeva na stranu poslužitelja.

4.3.2. HPACK bomba

Radi se o napadu na kompresijski sloj, slično napadu sa zip bombom, tj.

"dekompresijskom" bombom. Napadač izrađuje male i naizgled obične poruke, koje se mogu

pretvoriti u gigabajte podataka na poslužitelju. Na taj način troši se poslužiteljska memorija i

tako efektivno usporava ili čak i ruši ciljane poslužitelje.

Page 25: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

19

Slika 4.5. Primjer HPACK bombe unutar User-Agenta polja zaglavlja. [16]

4.3.3. Krug zavisnosti

HTTP/2, kao jedno od unaprjeđenja, uveo je i stvaranje prioritizacije i zavisnosti između

paketa/podataka koji se šalju preko veze. Međutim, uz informatičku sposobnost napadača,

moguće je implementirati krug zavisnosti kao petlju te tako izazvati poslužiteljski DoS (Denial

of Service).

Slika 4.6. Prikaz kruga zavisnosti nakon dodavanja šeste zavisnosti te formiranja petlje

između brojeva tokova podataka 7, 5 i 3 [17]

Page 26: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

20

4.3.4. Zloupotreba multipleksiranja

Napadač nastoji iskoristiti slabosti novog protokola te implementirati i promjeniti

funkcionalnost multipleksiranja preko jedne veze te tako dovesti poslužitelja u stanje

nemogućnosti odgovora za pojedine klijente ili pak potpunog rušenja.

4.4. Prilagodba

Jedna od glavnih prednosti HTTP/2 protokola jest što web stranice i aplikacije ne trebaju

posebnu prilagodbu za novi protokol. On se može aktivirati odmah, te je kompatibilan sa

prijašnjim HTTP/1.1 protokolom. S obzirom na to, mnoge organizacije i kompanije nastoje

odmah ostvariti profit iz performansi i sigurnosnih mogućnosti HTTP/2 protokola te kako

iskoristiti njegov puni potencijal.

Bitno je da bi aplikacije trebale biti dizajnirane sa implementiranim TCP slojem, koji će

omogućivati višestruke (6) TCP veze za HTTP/1.1, ali i jednu dugotrajniju preko koje će se

odvijati multipleksiranje i logički tok podataka preko HTTP/2 protokola.

Također, mnoge optimizacije i poboljšanja koja se koriste za HTTP/1.1, poput objedinjavanja ili

prikupljanja podataka sa više domena, postale su nepotrebne sa dolaskom novog protokola. Ne

samo to, nego u pojedinim situacijama, one mogu biti i kontradiktorne radu HTTP/2 te time

usporavati njegov rad, stoga je njihovo isključivanje preporučljivo.

4.5. Dodatne mogućnosti

Iako HTTP/2 dovodi puno novih poboljšanja te tehnologija, ipak postoji još mogućnosti

koje programeri mogu sami implementirati i, na taj način, povećati brzinu izvođenja operacija na

svojim stranicama.

Jedna od takvih mogućnosti je i dodatna kompresija sa gzipom. Gzip kompresija oslanja se na

DEFLATE algoritam, koji predstavlja kombinaciju LZ77 i Huffmanovog kodiranja (koristi se u

HPACK-u). Omogućavanje gzipa na poslužitelju neposredno prije slanja podataka na vezu,

dovodi do značajnijih poboljšanja u brzini te isključuje nepotrebno slanje vec kompresiranih gzip

datoteka.

Page 27: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

21

Do poboljšanja dolazi zbog činjenice da se gotovo 50% cijelokupnog dijela HTML dokumenta,

36% CSS datoteka te 26% Javascripta i dalje šalju nekompresirani preko veze, što usporava

protok podataka.[13]

Ipak, treba biti oprezan sa uključivanjem gzip kompresije, s obzirom da su neke datoteke, poput

jpeg ili videa, već visoko kompresirane te je nepotrebno još jedno dodatno kompresiranje.

Osim gzip kompresije, programeri mogu prilagoditi pohranjivanje u predmemoriju novom

protokolu te postaviti osjetljivija kontrolna cache zaglavlja, ali i optimizirati potragu za DNS

poslužiteljima (računala sa pohranjenom bazom imena koja uparuju sa pripadajućim IP

adresama) te CDN-om (globalnom mrežom proxy poslužitelja koja nastoji klijentima osigurati

visoke performanse).

Sve te promjene mogu dodatno ubrzati potrebno vrijeme učitavanja stranice bez radikalnih

prilagodbi te mijenjanja (pogotovo u slučaju gzip kompresije). Njihovo implementiranje ovisi

isključivo o samom programeru/korisniku te služe samo kao dodatak HTTP/2.

Page 28: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

22

5. OPIS PRAKTIČNOG DIJELA ZAVRŠNOG RADA

5.1. Priprema za rad

Rad na praktičnom dijelu završnoga rada započeo je sa osmišljavanjem te okvirnim

dizajniranjem što bi aplikacija odnosno web stranica trebala sadržavati. Kao glavni cilj,

postavljena je prezentacija osnovnih unaprjeđenja koje HTTP/2 donosi te prikaz eventualnih

razlika u odnosu na HTTP/1.1. HTTP/2, kao protokol moguće je implementirati u mnoštvu

jezika poput Jave, C, C++, Perla. [18]

Za prikaz razlika između dva protokola potrebna su i dva različita pristupa poslužitelju, jedan

koji će pružati usluge preko HTTP/2 veze i jedan koji će pružati usluge preko HTTP/1.1 veze.

Zbog toga je bilo potrebno prethodno preuzeti i instalirati Apache HTTP Server Project ("httpd")

uz pomoć kojeg se može napraviti sigurne i efikasne poslužitelje tj. servere. Apache httpd

verzija 2.4.23 slobodna je za preuzimanje te ima opširnu popratnu dokumentaciju.

Povezivanje klijenta i poslužitelja preko HTTP/2 veze zahtjeva i dodatno instaliranje pojedinih

knjižnica i programa. Jedna od tih knjižnica je i nghttp2, koja sadrži implementaciju HTTP/2

protokola te kompresiju podataka zaglavlja uz HPACK kompresiju. Njegova instalacija ključna

je za uspostavu HTTP/2 veze, a ona nije moguća bez još dodatnih pojedinih knjižnica i alata kao

što su libev, zlib, cython, php5 itd. Cijelu listu alata o kojima zavisi nghttp2 knjižnica može se

vidjeti na stranici projekta.[19]

Osim libnghttp2 knjižnice, jedna od bitnijih knjižnica koje je potrebno instalirati je openssl

knjižnica. Openssl knjižnica potrebna nam je kod uspostave HTTPS veze, a kao što je već ranije

spomenuto, bez mogućnosti HTTPS veze nije moguće implementirati ni HTTP/2 vezu.

I jednu i drugu knjižnicu bilo je potrebno aktivirati kao dodatak unutar glavne konfiguracijske

datoteke za Apache stoga je ona prilagođena sa linijama koda (direktiva LoadModule) vidljivima

na slici 5.1.

Page 29: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

23

Slika 5.1. Dodatak konfiguracijskoj datoteci httpd.conf

5.2. Konfiguracija poslužitelja

Za implementaciju web stranica sa različitim protokolima koristio sam se Apache httpd

verzijom 2.4.23. Prvi zadatak bio je konfigurirati pristup poslužitelju preko 2 različite adrese sa

različitim protokolima, a iskoristio sam mogućnost stvaranja različitih domaćina preko direktive

VirtualHost.

VirtualHost je konfiguracijska direktiva koja omogućava pružanje usluga više web stranica na

istom računalu/poslužitelju. Pri tome, svaka web stranica ima vlastitu IP adresu, koja može biti

dodatno povezana sa odgovarajućim nazivom. Dvije lokalne adrese koje su korištene pri izradi

praktičnog dijela aplikacije su 127.0.0.1 (za HTTP/2) te 127.1.1.1 (za HTTP/1.1).

Za dvije već spomenute adrese, izradio sam i dvije posebne konfiguracijske datoteke unutar

direktorija etc/apache2/sites-available. Za IP adresu 127.1.1.1 korištena je

http1host.conf datoteka, sa dokumentima unutar direktorija /var/www/html te jedino

omogućenim HTTP/1.1 protokolom preko porta 80.

# Secure (SSL/TLS) connections

Include conf/extra/httpd-ssl.conf

#

# Note: The following must must be present to support

# starting without SSL on platforms with no /dev/random equivalent

# but a statically compiled-in mod_ssl.

#

<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>

LoadModule http2_module modules/mod_http2.so

LoadModule ssl_module modules/mod_ssl.so

Page 30: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

24

Slika 5.2. Sadržaj konfiguracijske datoteke http1host.conf

Konfiguracijska datoteka za HTTP/2 vezu sa poslužiteljem naziva se localhost.conf i nalazi se na

slici 5.3. Na njoj se nalaze 2 virtualna poslužitelja, jedan za port 80 preko kojeg se uspostavlja

http veza, te jedan za port 443 preko kojeg se uspostavlja https veza. S obzirom kako se preko

nje spajamo isključivo kao preko HTTPS sigurne veze, Virtualhost za port 80 u potpunosti

je zakomentiran jer nema potrebe da se on koristi.

Dokumenti korišteni pri spajanju HTTP/2 vezom sa poslužiteljem nalaze se u /var/www/ssl,

dok je početni dokument koji se otvara pri uspostavljanju veze sa poslužiteljem index.html.

Datoteka localhost.conf započinje sa linijom <IfModule mod_ssl.c> što označava

korištenje ssl modula i prijenos podataka preko HTTPS veze (port 443). HTTPS veza je potrebna

iz razloga što web preglednici mogu uspostaviti HTTP/2 vezu jedino preko nje, i to u obliku

nadogradnje na već postojeći protokol (opisano u poglavlju 5.2.1. Povezivanje i logički tok

podataka).

Jedan od većih problema kod HTTPS veze je stvaranje vjerodajnica. S obzirom kako se

uspostavlja jedino lokalna veza sa poslužiteljem, vjerodajnice mogu biti samostalno napisane

(eng. self-signed). Za izradu vjerodajnice može se koristiti openssl naredba, koja je nalazi unutar

prethodno instalirane openssl knjižnice.

<VirtualHost 127.1.1.1.:80>

ServerName http1server

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

Protocols http/1.1

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

#LogLevel info ssl:warn

#Include conf-available/serve-cgi-bin.conf

</VirtualHost>

Page 31: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

25

Bitno je pravilno pozvati vjerodajnice unutar konfiguracijske datoteke localhost.conf kao na slici

5.3. (datoteke vjerodajnice su example.crt i example.key) jer bi u suporotnom moglo bi

doći do problema prilikom uspostavljanja veze.

Slika 5.3. Sadržaj konfiguracijske datoteke localhost.conf

5.3. Uspostava HTTP/2 veze na web pregledniku

Nakon konfiguriranih datoteka za pristup poslužitelju, potrebno je otvoriti web preglednik te

pristupiti lokalnoj adresi localhost preko HTTPS veze. Pristupanje localhost adresi treba se

otvoriti index.html dokument unutar koje se nalazi izbornik sa primjerima.

<IfModule mod_ssl.c>

<VirtualHost *:443>

ServerAdmin [email protected]

DocumentRoot /var/www/ssl

ServerName localhost

DirectoryIndex index.html

ErrorLog /var/log/apache2/localhost-error.log

CustomLog /var/log/apache2/localhost-access.log combined

SSLEngine On

SSLCertificateFile /etc/apache2/crt/example.crt

SSLCertificateKeyFile /etc/apache2/key/example.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">

SSLOptions +StdEnvVars

</FilesMatch>

<Directory /usr/lib/cgi-bin>

SSLOptions +StdEnvVars

</Directory>

</VirtualHost>

</IfModule>

Page 32: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

26

Međutim problem do kojeg se tada dolazi, nalazi se u samim postavkama korištenog web

preglednika, a radi se o blokiranom pristupu. Web preglednici ne prepoznaju samostalno

napisane vjerodajnice te ih iz tog razloga smatraju nesigurnim čime se blokira pristup takvim

stranicama.

Postavke je potrebno promjeniti da one omogućuju rad neprovjerenim, samostalno napisanim

vjerodajnicama ili jednostavno stvaranjem izminke za adrese preko kojih pristupamo poslužitelju

preko HTTP/2 veze. Nakon toga, pristup localhost adresi biti će omogućen te će se otvoriti

početna stranica izrađene web aplikacije.

Iako je pristup stranici dozvoljen te je uspostavljena HTTPS veza sa poslužiteljem, i dalje nije

aktivirana HTTP/2 veza što je vidljivo i u zaglavljima početne stranice. Novi protokol moguće je

aktivirati dodavanjem Protocols direktive i prilagodbom apache2.conf datoteke koja se

nalazi unutar /etc/apache2 direktorija. Direktiva koja se dodaje glasi Protocols h2

h2c http/1.1, unutar koje se kao argumenti prozivaju h2, h2c i http/1.1 protokoli.

Prije ponovnog pokretanja stranice na web pregledniku potrebno je ponovno pokrenuti Apache

poslužitelj, kako bi se ažurirale izrađene promjene.

Ukoliko su pravilno izvršene sve prethodno navedene instalacije te prilagodbe poslužitelja,

ponovnim pristupanjem localhost adresi opet će se otvoriti index.html dokument sa izbornikom,

ali ovog puta preko HTTP/2 veze (Version: HTTP/2.0) što je i vidljivo na slici 5.4., uz

preostala polja zaglavlja.

Slika 5.4. Prikaz zaglavlja localhost adrese sa dostupnim razvojnim alatima unutar web

preglednika.

Page 33: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

27

5.4. Mogućnosti web aplikacije

Pristupanjem vezi sa poslužiteljem preko localhost adrese, otvara se index.html dokument sa

prikazanim izbornikom te opisom implementirane web aplikacije. Unutar izbornika ponuđeno je

nekoliko različitih tipova primjera na kojima je glavni fokus na prikazivanju razlika između

HTTP/1.1 i HTTP/2 protokola.

Slika 5.5. Prikaz početnog izbornika sa ponuđenim poveznicama na web stranice određenog

primjera

Primjer s istovremenim učitavanjem slike prikazuje stranicu otvorenu sa HTTP/1.1 vezom prema

zajedničkom poslužitelju. Unutar stranice očitavaju se 2 različita iframe-a te ponuđene opcije

odnosno gumbovi (engl. button). Iframe označava okvir sa otvorenim HTML dokumentom

unutar nekog drugog HTML dokumenta. Na primjeru istovremenog učitavanja slike postoje 2

iframe-a, od kojih je jedan za HTTP/2 vezu te drugi za HTTP/1.1 vezu. Oba iframe-a pristupaju

različitim adresama koje otvaraju jednake HTML dokumente (pictureload.html) te mjere vrijeme

potrebno za njihovo otvaranje. Osim iframe-ova ponuđene su i opcije "Ponovno učitaj", koja ima

funkciju ponovno učitati cijelu web stranicu te opcija "Natrag" za povratak na početni izbornik. I

jedna i druga opcija prisutne su, gotovo, na svakoj stranici, zbog lakšeg kretanja te vršenja

operacija.

Page 34: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

28

Slika 5.6. Prikaz stranice s istovremenim učitavanjem 2 iframe-a (jedan za HTTP/2 vezu, drugi

za HTTP/1.1 vezu). Iz priloženog se može vidjeti kako je brzina učitavanja slike od gotovo

13MB veća kod HTTP/2 veze (626ms) nego kod HTTP/1.1 veze (1169ms).

Drugi primjer s učitavanjem slike otvara identični dokument (pictureload.html) kao u

prvome primjeru, ali u odvojenim stranicama za svaki protokol. Unutar njega se ne koriste

iframe-ovi jer nema nikakve potrebe za njihovim korištenjem.

Možda najbolji primjer sa prikaz poboljšanja koje HTTP/2 donosi jest primjer sa učitavanjem

180 slika od 619B na jednoj stranici. Uspoređujući i jedan i drugi protokol vidljive su razlike u

performansama te samom načinu učitavanja.

Slika 5.7. Prikaz učitavanja stranice sa 180 slika sa HTTP/1.1 protokolom (lijevo) te sa novim

HTTP/2 protokolom (desno).

Page 35: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

29

Iz priložene slike 5.7. vidljiva je razlika na načinu kako se slike učitavaju. HTTP/1.1, zbog

problema nazvanog head-of-line blokiranje (opisano unutar poglavlja 3.3.2.) učitava slike gotovo

nasumično, bez ikakvog reda što, u konačnici, dovodi do sporije brzine učitavanja i nepotrebnog

zauzimanja veze. HTTP/2 protokol učitava slike po redu kako su navedene u dokumentu, a to se

najbolje vidi na prijenosu paketa iz slike 5.8.). Do ometanog slanja paketa podataka (slanje

paketa je označeno plavom bojom) kod HTTP/1.1 veze dolazi upravo zbog head-of-line

blokiranja, što uzrokuje puno čekanja (označena sivom bojom). Također, ponovno je vidljiva i

razlika u performansama, s obzirom da je HTTP/1.1 vezi za učitavanje stranice sa slikama bilo

potrebno 1.68s, dok je za istu tu stranicu HTTP/2 utrošio 0.756s na učitavanje stranice.

Slika 5.8. Prikaz prijenosa paketa kod HTTP/1.1 veze (gore) te HTTP/2 veze (dolje)

Page 36: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

30

Primjer sa učitavanjem 10 dijelova slike jednak je kao i primjer sa 180 dijelova slike, no razlika

se nalazi u broju samih slika, kao i u njihovoj veličini. I kod tog primjera, brzina učitavanja

stranice bila je znatno veća kod HTTP/2 protokola (0.709s), nego kod HTTP/1.1 protokola

(1.970s).

Server push je tehnologija uvijek se spominje kao jedno od bitnijih unaprjeđenja koja HTTP/2

donosi (opisana unutar poglavlja 4.2.3.). Međutim, njegov utjecaj moguće je detaljnije prikazati

jedino uz upotrebu razvojnih alata za prikaz zaglavlja zahtjeva i odgovora. U primjeru izrađene

web aplikacije, server push implementiran je uz pomoć PHP jezika, na način da su zaglavlju

pridodana Link polja koja pokazuju na slike koje se nalaze unutar

/var/www/ssl/pictures/ direktorija.

Kako bismo se uvjerili da su Link polja zaglavlja stvarno i pridodana, omogućena je dodatna

opcija pregleda headera odnosno zaglavnja za stranicu na kojoj se otvara

serverpush_page.php dokument.

Slika 5.9. Prikaz izgleda stranice koja otvara serverpush_page.php dokument na kojemu se nalazi

i par slika planet.jpg i doge.jpg

Page 37: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

31

Slika 5.10. Prikaz HTTP/2 zaglavlja zahtjeva i odgovora uz pomoć razvojnih alata web

preglednika (Google Chrome) - sa korištenom server push metodom

Na slici 5.10. pokazuje se pristup localhost adresi, koja uspostavlja HTTP/2 vezu sa serverom. S

obzirom na korištenje server push metode kojom su dohvaćene slike, nema nikakve potrebe za

slanjem dodatnih zahtjeva za doge.jpg i planet.jpg datotekama. Iz tog razloga prikazuju

upozorenja (Provisional headers are shown) sa tkz. privremenim zaglavljima kod zahtjeva

Page 38: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

32

Slika 5.11. Prikaz HTTP/1.1 zaglavlja zahtjeva i odgovora uz pomoć razvojnih alata web

preglednika (Google Chrome).

Na slici 5.11. pristupa se IP lokalnoj adresi 127.1.1.1, koja uspostavlja HTTP/1.1 vezu sa

serverom te se detaljnije prikazuju zaglavlja prilikom dohvaćanja planet.jpg datoteke. Na kraju

možemo vidjeti kako su, za razliku od slike 5.10. i HTTP/2 protokola, ovdje polja zaglavlja u

potpunosti ispunjena te da slike nisu dohvaćene uz pomoć server push tehnologije već je za

svaku sliku poslan pojedinačni zahtjev.

Page 39: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

33

6. ZAKLJUČAK

Tema ovog završnog rada bila je analiza protokola HTTP/2 s naglaskom na razlike u odnosu na

prethodnu verziju, kao i njegov značaj za moderne aplikacije i web stranice. Sva poboljšanja

koja donosi novi protokol detaljno su objašnjena i razrađena, a pojedina su prikazana i kroz

slikovne primjere. Uz pisani dokument, izrađena je i radna aplikacija koja demostrira neka od

poboljšanja HTTP/2 protokola te tako ostavlja vizualni dojam istih. Rad na aplikaciji, kao i njeno

funkcioniranje, također je obuhvaćeno i opisano unutar ovog dokumenta.

HTTP/2, u svakom slučaju, predstavlja budućnost samog Interneta i komunikacije. On donosi

mnoga unaprjeđenja poput kompresije zaglavlja, multipleksinga preko TCP veze te server push-

a. Ipak, kao i većina protokola koji postoje, i HTTP/2 ima svojih nedostataka. Daljnja

istraživanja i analize sigurno bi detaljnije razradile i moguće implementacije te rješenja koja bi ih

ispravila.

Međutim, osobno smatram da ti nedostaci, iako pojedini utječu i na samu sigurnost, neće bitno

utjecati na HTTP/2 protokol i njegov daljni rast. Svi popularni preglednici već u velikoj mjeri

koriste pogodnosti novog protokola, pa tako ni ne čudi što HTTP/2 svakim danom koristi sve

veći broj web stranica.

Naposlijetku, teško je zaključiti koliko će dugo ovaj protokol biti aktualan te da li će u

budućnosti morati proći kroz određene prilagodbe i ažuriranja. Internet se strahovito brzo

mijenja te napreduje, stoga je vrlo složeno raditi takvu vrstu procjena. Sigurno je, da će novi

protokol donijeti gotovo trenutno poboljšanje performansi te, možda i u potpunosti, zamjeniti

prijašnji HTTP/1.1 protokol u narednim godinama, a što pokazuju i dosadašnje statistike.

Page 40: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

34

LITERATURA

[1] Grigorik, I. : "High Performance Browser Networking ", O'Reilly Media, rujan 2013

[2] Fielding, R.; Reschke, J. : "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and

Routing", RFC 7230, Internet Engineering Task Force (IETF), lipanj 2014.

[3] slika, s Interneta,

http://www.tankonyvtar.hu/en/tartalom/tamop425/0027_ADW1/ch01s02.html , 2010.

[4] Podila, P. : "HTTP: The Protocol Every Web Developer Must Know", s Interneta,

http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-1--net-

31177, 8. travanj 2013.

[5] slika, s Interneta,

https://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html , 20.

listopad 2009.

[6] slika, s Interneta,

https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/HTTP_pipelining2.svg/2000px-

HTTP_pipelining2.svg.png , 19. kolovoz 2016.

[7] slika, s Interneta, https://zoompf.com/wp-content/uploads/2012/05/transfer-types-

Chunked.png ,15. svibanj 2012.

[8] slika, s Interneta, https://libosong.appspot.com/spdy/images/HTTP_pipelining_hol.svg , 4.

prosinac 2012.

[9] slika, s Interneta https://d3ansictanv2wj.cloudfront.net/hpbn_1203-

bd2d684acb9279fd147a5882f5580d03.png , 25. rujan 2015.

[10] Thomson, M.; Peon, R.; Belshe, M. : "Hypertext Transfer Protocol Version 2 (HTTP/2)" ,

RFC 7574, 30. svibanj 2015.

[11] Jackson, B. : "KeyCDN Enables HTTP/2 HPACK Compression – Huffman Encoding" , s

Interneta, https://www.keycdn.com/blog/http2-hpack-compression/, 25. travanj 2016.

[12] slika, s Interneta, http://i.imgur.com/3IPWXvR.png, 13. kolovoz 2016.

[13] video sadržaj sa Chrome Dev Summit konferencije, s Interneta,

https://www.youtube.com/watch?v=r5oT_2ndjms , 2015.

[14] slika, s Interneta, http://jecas.cz/files/chrome-dev-summit-2015/push.png, 19. listopad 2015.

Page 41: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

35

[15] slika, s Interneta, https://1.bp.blogspot.com/-

xPtRvSYoQRA/V6JHp4FfFZI/AAAAAAAApCc/5WtHZDfB4b0E7WxnVp0gBUBhzfJfCAHx

gCLcB/s1600/http2-nginx-security.png , 3. kolovoz 2016.

[16] slika, s Interneta, https://2.bp.blogspot.com/-

uJmDBCrXR5k/V6JHXc91RjI/AAAAAAAApCU/PjiGdFuRnE8-s0uRyFkLPOjIdqw-

BcfEwCLcB/s1600/http2-nginx.png, 3. kolovoz 2016.

[17] slika, s Interneta,

http://www.sangfor.com/Uploads/Editor/image/20160830/20160830115626_40709.png, 6.

kolovoz 2016.

[18] repozitorij sa listom HTTP/2 implementacija, s Interneta, https://github.com/http2/http2-

spec/wiki/Implementations

[19] repozitorij sa projektnim datotekama, s Interneta,

https://github.com/cop2422/zavrsnirad_http2

Page 42: SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET · 2016-09-28 · Osnovni cilj ovog završnog rada je prikazati glavna svojstva HyperText Transfer Protokola verzije 2 (HTTP/2 ili H2), kao

36

SAŽETAK

U ovom završnom radu nastoji se opisati i prezentirati novi HTTP/2 protokol sa naglaskom

na razlike u odnosu na prethodnu verziju HTTP/1.1. Opisana su sva unaprijeđenja koja

HTTP/2 donosi, ali i prilagodba na njega, njegovi nedostaci i dodatne mogućnosti. Osim

HTTP/2 protokola, u radu se opisuje i HTTP protokol kroz povijest i sve verzije koje postoje

do danas. Uz napisanu dokumentaciju, u sklopu završnog rada izrađena je i web aplikacija

odnosno sjedište, koja ima glavnu svrhu prikazati neke od unaprijeđenja HTTP/2. Izrada web

aplikacije i njezino instaliranje opisano je unutar dokumentacije. Web aplikacija je

napravljena za poučne svrhe i namjenjena je svima.

Ključne riječi: HTTP/2 protokol, web aplikacija

Abstract

This paper describes and presents the new HTTP/2 protocol with focus on his differences

from HTTP/1.1 protocol. It describes the advantages that HTTP/2 has, his adjustment to

Internet, additional possibilities and his disadvantages. Except HTTP/2, this paper illustrates

HTTP evolution through history with representation of all versions until today. Final project

also contains a functional web application (webpage). Web application demonstrates some of

the advantages that HTTP/2 has. The whole creating process and the development of

application is described inside final project documentation. The application is made for the

educational purposes and everyone is free to use it.

Key words: HTTP/2 protocol, web aplication