TDAT2004-A Datakommunikasjon med nettverksprogrammering
Oppgave 9 - HTTP/2
Ole Kristian Aune og Christian Echtermeyer
Video (embeddes på siden)
1. Innledning
HTTP/2 tilhører applikasjonslaget, mer nøyaktig som en del av Sesjonslaget og er tett knyttet sammen med SSL/TLS. Det er ikke en erstatning for HTTP/1.x, men kan heller anses som en mer effektiv måte å representere HTTP-protokollen på. Det er IETF (The Internet Engineering Task Force) som har utviklet HTTP/2 og som står for all vedlikehold av HTTP-protokollen.
2. Ønsket funksjonalitet
Hovedtingene man ønsker å oppnå med HTTP/2 er:
binær overføring i stedet for tekstlig.
fullt multiplekset, i stedet for fast rekkefølge og blokkering
kan bruke en kobling for parallell overføring
komprimere header-informasjon for å minke overhead (HPACK)
tillater servere å dytte (“push”) filer man regner med at klienten kommer til å be om, til klientens chache.
Størrelsen på dagens nettsider, og antall ressurser hver side ønsker å laste inn har endret seg mye siden HTTP/1.1 standarden ble utformet. [3] Det har også måten man lager og tenker på nettsider. Dagens nettsider er mer en form for web-applikasjoner enn statiske sider med linker mellom seg. Dermed har også kravet for hvordan man overfører data endret seg. Binær overføring i stedet for tekstlig overføring. Det gjør at man slipper å parse hver eneste bokstav for å lese informasjonen, man har istedet lengdeinformasjon som forteller hvor langt man skal lese fremover for den neste informasjonen. I tillegg bruker HTTP/2 kun én TCP forbindelse. Denne er multiplekset og man kan derfor kjøre paralell overføring over denne uten å støte på “head-of-line”-blokkering som i HTTP/1.1. Med mange forespørsler til serveren, ønsker man å ha mindre overhead, derfor har man i HTTP/2 utformet en egen komprimeringsalgoritme (HPACK) for header-informasjon i forespørslene. HPACK fungerer ved hjelp av en statisk tabell, der alle de vanligste headerene ligger lagret, en dynaisk tabell og huffmann-koding. Den siste av de store optimaliseringene er at serveren nå får lov til å “pushe” flere filer enn det kienten spør om. Dette kan for eksempel være bilder eller stilsett som man kan forvente at klienten kommer til å be om etter den har fått parset HTML-filen. Vi kan derfor sende disse filene til klientens cache, så den kun trenger å hente lokale filer når den er klar for å be om disse.
3. Virkemåte
Beskriv hvordan ting fungerer og gjøres. Oppbygning og struktur. Forklare med illustrasjoner eller skjermklipp, bilder eller analyse av pakkefangst.
4. Referanser
[1]http://httpwg.org/specs/rfc7540.html