Forest header image

Symfony Finland
Random things on PHP, Symfony and web development

Mikä on HTTP/2 ja kuinka se otetaan käyttöön?

Verkkosivustojen ja -palveluiden parissa työskentelevillä ei takuulla ole puutetta uudesta opeteltavasta. HTTP/2 on yksi näistä asioista. Se tulee olemaan merkittävässä roolissa kaikkien verkon käyttäjien ja sitä kehittävien ihmisten arjessa. Ristiriitaisesti se ei kuitenkaan tule muuttamaan mitään käyttäjille (tai edes kehittäjille).

Ohjelmistot käyttävät viestintään yhteisesti sovittuja tapoja, eli protokollia. Verkkopalveluiden ja selainten yhteydessä ylivoimaisesti yleisin näistä on HTTP. Tätä protokollaa on käytetty 90-luvulta lähtien ja sen yleisesti käytössä oleva versio (HTTP/1.1) tuli käyttöön vuonna 1999.

Kuten arvata saattaa tekniikka on vuosituhannen vaihteen jälkeen kehittynyt huimasti. Kaiken alla toimii kuitenkin yhä tämä, nyt yli viisitoista vuotta vanha tapa viestiä. Sitä on hieman viritelty, väärinkäytetty ja kierretty erilaisin kikoin.

HTTP/2 on käytännönläheinen ratkaisu

Pohjimmiltaan HTTP (HyperText Transfer Protocol) on yhä tapa lähettää tekstiä palvelimelta selaimelle. Kuvien, videon ja muun lähettäminen on rakennettu tämän päälle. Teknisesti järkevin tapa tehostaa tätä viestintää olisi varmaankin kehittää kokonaan uusi tapa viestiä.

HTTP on käytössä miljardeilla ihmisillä, joten kokonaan uuden tavan rakentaminen ei ole kovinkaan käytännöllistä. Vuonna 2015 julkaistiinkin uusi versio (HTTP/2), joka on parannettu versio - ei täysin uusi asia.

Pellin alla on paljon uutta (ja monimutkaista), mutta käyttäjille ja kehittäjille nämä eivät muuta paljoakaan. Käytännön parannuksia ovat esimerkiksi:

  • Tehokkaampi viestien siirto: Sisältö siirretään binäärimuodossa ja ns. header tiedot pakataan
  • Useiden viestien tehokkaampi siirto: Useat viestit siirretään "samassa putkessa" erillisten yhteyksien avaamisen sijaan
  • Palvelin voi lähettää sisältöä selaimelle tämän sitä pyytämättä: Perinteisesti selaimen pitää pyytää jokaista asiaa (tyylitiedostot, kuvat, jne.) erikseen, mutta HTTP/2:n Server Push mahdollistaa esimerkiksi tyylitiedostojen lähettämisen heti ensimmäisen kyselyn yhteydessä

Nämä parannukset eivät mahdollista mitään mullistavia uusia toimintoja, mutta tehostavat alemman tason perustehtäviä. Lopputuloksena esimerkiksi verkkosivujen lataaminen ruuhkaisessa mobiiliverkossa on kokonaisuutena tehokkaampaa.

Salaus on normaalisti ollut käytössä verkkopankeissa ja muissa palveluissa. Salatussa palvelussa liikkuessasi ainoastaan sinä ja palvelin pystyvät lukemaan välitettyjä viestejä. HTTP/2:ssa on paljon muutoksia ja nämä muutokset voisivat salaamattomana johtaa ongelmiin, kun esimerkiksi palomuuri estäisi liikenteen epäilyttävänä. Salausta käyttämällä saadaan vältettyä tämä vaara.

HTTP/2 ei ole suoraan riippuvainen käytetystä julkaisujärjestelmästä, käyttöjärjestelmästä tai ohjelmointikielistä. Se toimii näiden alapuolella ja sen edut tulevat parhaiten esiin isolla skaalalla tai kun yksittäisen käyttäjän tietoliikennekaista on hidas (katso vertailu).

HTTP/2:n käyttöönotto

Uusi versio korvaa siis läpinäkyvästi vanhan version. Esimerkiksi tämä sivusto käyttää HTTP/2:sta, mutta itse et sitä välttämättä huomaa mitenkään. Selvin indikaatio on että sivusto on salattu. Salaus ei ole pakollinen osa HTTP/2:sta, mutta se on käytännön vaatimus sillä nykyselaimet eivät tue salaamatonta HTTP/2 liikennettä.

HTTP/2:n käyttöönotto edellyttää siis kolmea asiaa:

  1. Selain tukee HTTP/2:sta
  2. Verkkopalvelin tukee HTTP/2:sta
  3. Palvelimen ja selaimen välillä on SSL-suojattu yhteys

Suuri osa verkkopalveluista tulee siirtymään HTTP/2:een luontaisesti ohjelmistopäivitysten mukana. Useimmat selaimet tukevat jo HTTP/2:sta ja päivittyvät automaattisesti tuoreisiin versioihin. Esimerkiksi Microsoft Edge, Google Chrome ja Mozilla Firefox päivittyvät siis jatkuvasti huomaamattomasti.

Suosittujen web-palvelimien Apache ja Nginx tulevat versiot tulevat käyttämään HTTP/2:sta oletuksena. Tällä hetkellä suurin osa esimerkiksi Linux-jakelujen palvelimista tulee erikseen päivittää ja konfiguroida tukemaan HTTP/2:sta. SSL-salauksen purkuun esimerkiksi vanhemman web-kiihdyttimen edessä voi käyttää myös H2O-palvelinta.

Salaamisen lisääminen ei itsessään ole hankalaa tai kallista, mutta se ei ole ollut normaalikäytäntö sisältövetoisilla sivustoilla. Tästä on kuitenkin nykyään hyötyä myös hakukoneoptimoinnissa. Pian saatavilla olevat ilmaiset SSL-sertifikaatit laskevat kynnystä entisestään.

HTTP/2 on siis evoluutio, ei revoluutio. Kaikkia koskettava muutos, jota vain harvan tarvitsee miettiä.


Written by Jani Tarvainen on Saturday October 24, 2015
Permalink -

« Ilmaiset SSL sertifikaatit ja HTTP/2 - Nopea kehityssykli on modernin sisällönhallintajärjestelmän elinehto »