ITMA Hungary

Informatikai képzések vezetőknek

Egyről a kettőre: HTTP/2 a kapukban

2017. november 21. 19:29 - GernerPéter

Sok másik hálózati protokoll van, de csak a HTTP forgatta fel a világot az elmúlt 25 évben...

Mi az a HTTP/2 és miért fontos?

Mindenki ismeri és használja a böngészőben a http:// vagy https:// kezdetű URL címeket, mellyel eljutunk a kívánt weboldalra. A http egy kommunikációs szabvány angol nevének (Hypertext Transfer Protocol) a rövidítése, amely a CERN-beli első leírása és megvalósítása után villámgyorsan terjedt el, lehetővé téve a böngészés ma is ismert gyakorlatát.

Bármilyen hihetetlen, a gyorsan fejlődő informatika egyik legfontosabb szabványa az elmúlt 18 évben stabil maradt és 1999 óta nem változott. A HTTP/2 ezt a mára már nagykorúvá vált szabványt fejleszti tovább és modernizálja a böngészés alapjait.

pr-1712-2.png

A HTTP-vel rövidített szabvány a böngésző és a webszerver egymás közti kommunikációját írja le, amely végén a HTML-ben leírt szöveg a szerverről eljut a böngészőig, és ott weboldalként megjelenik. Ennek leírásával és első megvalósításával tette lehetővé Timothy John Berners-Lee a böngészést és hozta létre a mai értelemben vett Internet alapjait a CERN-ben 1989-ben.

Az első HTTP parancs a „HTTP GET” volt, amely egy szintén szabványos módon, az egységes címzéssel azonosított webszervertől lekért egy HTML-ben leírt oldalt. Az egységes címzés közismert rövidítése az URL, azaz a Uniform Resource Locators.

A HTTP és a böngészés története

A HTTP protokoll a CERN-beli első leírása és megvalósítása után villámgyorsan terjedt el, lehetővé téve a böngészés ma is ismert formáit.

  • A HTTP első hivatalos verziójának leírása 1995 végén jelent meg RFC1945 jelöléssel.
  • Az első tapasztalatok után hamarosan következett az első módosítása is 1997-ben (RFC2068).
  • Végül a módosításnak is volt egy javított változata 1999-ben (RFC2616), ami aztán hosszú évekig változatlan maradt.

A kezdeti hektikus évek után 10 év alatt kialakult, a böngészést lehetővé tevő HTTP/1.1 szabványt használja a világ azóta is. Bármilyen hihetetlen, a gyorsan fejlődő informatikai iparág egyik legfontosabb szabványa 18 évig stabil maradt és nem változtattak rajta 1999 óta, azaz  18 éve.

Pedig a HTTP kialakulásakor a 25 MHz CPU, 4-8 MB memória és a 1Mbit-et sokszor el sem érő sávszélesség volt a jellemző konfiguráció. Más hálózati protokollok ez idő alatt már tovább fejlődtek, a telnet helyett SSH van, az e-mailhez elterjedt az IMAP a POP3 helyett, az SFTP az FTP helyett, csak a HTTP nem változott.

A HTTP/1.1 mára 18 éves lett és már nagykorúvá vált.

Persze nem volt eseménytelen ez az időszak sem a HTTP körül. Több kísérlet közül kiemelendő a SPDY hálózati protokoll, mely a Google vezetésével alakult ki, és az oldalak betöltődési sebességén és a böngészés biztonságán akart fejleszteni. Végül a SPDY-ből más iparági szereplők ellenállása miatt nem lett szabvány, de a HTTP/2 kialakítása végül a SPDY fejlesztések alapján történt.

A HTTP/2 protokoll

18 év óta a HTTP/2 a böngészés alapjait jelentő szabvány első jelentős továbbfejlesztése. Ez idő alatt a weboldalak jelentősen megváltoztak: számos kép, script és design elem épül be a böngészőben megjelenő oldalra, amely komplexitás már meghaladja a HTTP/1.1 szabvány képességeit. A HTTP/2 fejlesztései szükségtelenné tesznek számos HTTP/1.1-ben használt bonyolult megoldást, javítják az oldal-betöltődés sebességét, de kezelik a csak HTTP/1.1-t támogató weboldalakat is.

Az HTTP/2 szabvány a korábbi szabványverzió továbbfejlesztése, de nem teljes újra írása. A HTTP/1.1-ben ismert metódusok (GET, PUT, DELETE, ...), állapotkódok (a 404-es hiba és társai) és szemantika maradt a régi. Így a programokból történő HTTP hozzáférés, az API-k továbbra is használhatók a régi szabvány szerint is, a HTTP/2 új kiegészítései nélkül.

Ugyanakkor a HTTP üzenetek megformázása és továbbítása a böngészők és a webszerver között megváltozott, hatékonyabbá vált. A HTTP/2 fejlesztési iránya a jobb teljesítmény elérése volt:

  • Javuljon a böngészés alatti látencia, azaz a „lassú az oldal” érzés csökkentése.
  • A böngészés kevesebb hálózati és szerver oldali erőforrást igényeljen.

A HTTP/2 specifikációja 2015. május 15-én vált elfogadott iparági standarddá, akkor kezdődött meg a 18 éves HTTP/1.1 leváltása egy modernebb szabvánnyal.

Mostanra már a 10 millió legforgalmasabb weboldal 18%-a támogatja a HTTP/2-t.

A számos fejlesztést támogató új HTTP/2 szabvány igazából két specifikáció írja le. Az RFC7540 a HTTP/2 protokoll fő specifikációja. Ehhez a specifikációhoz szorosan kapcsolódik az RFC7541, amely a HTTP/2-ben alkalmazott fejléc tömörítési algoritmus, a HPACK részletezése.

Miért jó a HTTP/2: újdonságok és problémák

Az új szabvány előnyei:

  • A HTTP/2 már bináris, és nem szöveges formátum
  • A HTTP/2 multiplexelt, azaz egy hálózati kapcsolaton (TCP) keresztül több párhuzamos adatkérést tud küldeni, lehetővé téve az aszinkron letöltést. Jelentős újdonság, hogy a HTTP/2-t használva egy böngészőből csak egy kapcsolat szükséges a webszerver felé, ellentétben a HTTP/1.1-gyel, ahol egy oldal megnyitásakor felépülhet 10-100 kapcsolat is a webszerver felé.
  • A tömörített HTTP fejléc (HPACK) jelentősen csökkenti az adatokra rárakodó, a kommunikációhoz szükséges adatmennyiséget. A korábbi HTTP verzió nem tömörítette a fejléceket, melyek az oldal-letöltésenként a webszerver felé felépülő 10-100 kapcsolatban feleslegesen foglalták redundáns információkkal a sávszélességet, terhelték a böngészőket és a hálózati eszközöket.
  • Lehetővé teszi, hogy a webszerverek proaktívan frissítsék (server push) a böngészők átmeneti tárolóját (cache), és nem várnak az erre vonatkozó kérésre.
  • Kiegészíti a biztonságos böngészés TSL szabványát egy kiegészítéssel (ALPN), amely a kapcsolatfelvétel kezdetén határozza meg a biztonságos böngészéshez használt protokollt a webserver és a böngésző között.

multiplexing-http2.png

Ugyan jelenleg nincs a HTTP/2-nél jobb és fejlettebb alternatíva, néhány kritika is megfogalmazódott az előnyei mellett.

  • A HTTP/2 nem teszi kötelezővé az adatok titkosítását, így a webhelyek üzemeltetői a HTTP/1.1-hez hasonlóan továbbra is dönthetnek a gyenge, vagy egyáltalán nem titkosított adatforgalom mellett. Ennek a problémának a súlyát csökkenti, hogy minden jelentős böngésző csak titkosított kapcsolaton (TLS) keresztül támogatja a HTTP/2-t, azaz de facto, szabványon kívüli megoldással mégis elérték az adatok titkosítását.
  • Másik hátránya, hogy megmaradtak a HTTP/1.1-ben alkalmazott sütikkel (cookie) összefüggő biztonsági problémák. A sütikkel azonosíthatók a böngészést végzők (például így később újbóli bejelentkezés nélkül vissza tudjon térni a weboldalra), de az internetes reklámok elhelyezésekor is fontos információ-források, vagy hackerek kezében hozzáférést biztosítanak a felhasználó által használt weboldalakhoz. A HTTP/2 nem vezetett be a sütikre vonatkozó védelmet.

Felkészülés, átállás, változások

A HTTP/2-re már 2015 óta folyik az átállás, 2017. októberére a 10 millió legforgalmasabb weboldal 18%-a támogatja a HTTP/2-t.

Böngészők

A legegyszerűbb átállás a böngészést végzőkre vár, sőt sokan már át is álltak. A HTTP/2-re váltás nem igényel mást, mint egy modern böngészőt. 2015 végétől már elérhetők ezek a verziók, a Firefox a 48-as verziótól, a Chrome az 52-es verziótól, a Safari a 9.1-től, a Microsoft Internet Explorer a 11-től, az Edge a 14-től támogatja a HTTP/2-t.

Szolgáltatók

A böngészést DNS-sel, köztes (proxy) szerverekkel, biztonsági és spamszűréssel támogató szolgáltatók, mint a Cloudflare, Amazon, Akamai már rég átalltak.

Weboldalak, alkalmazások

Saját weboldal esetén az átállás bonyolultabb, több mindenre kell figyelni, illetve frissíteni újabb verziókra.

  • Titkosítás: Mivel a böngészők csak biztonságos kapcsolaton keresztül építik fel a HTTP/2 kapcsolatot, az átállás előfeltétele, hogy a weboldalunk támogassa a HTTPS-t is.
  • Webserverek: az Apache a 2.4.17-es verziótól teljes körűen támogatja a HTTP/2-t, a Nginx a 1.9.5-től, a Mircosoft a Windows Server 2016-tól.
  • Programnyelvek: minden olyan program nyelv érintett az átállásban, ahol HTTP protokollt implementáltak. A Node.js-ben például viszonylag későn, 2017 nyár végén jelent meg a csak kísérleti (experimental) támogatás a 8.4-es verzióban. Érdemes a használt nyelvek és egyéb eszközök mindenkori HTTP/2 megvalósítását a migráció megtervezéséhez az Interneten ellenőrizni: https://github.com/http2/http2-spec/wiki/Implementations és https://github.com/http2/http2-spec/wiki/Tools

További infók

http://blog.webshark.hu/2016/02/18/mi-az-a-http2/

https://http2.github.io/

https://en.wikipedia.org/wiki/HTTP/2

https://fly.io/articles/http2-for-devs/

https://blog.cloudflare.com/hpack-the-silent-killer-feature-of-http-2/

https://www.upwork.com/hiring/development/the-http2-protocol-its-pros-cons-and-how-to-start-using-it/

 

Szólj hozzá!
Címkék: weboldal http/2

A bejegyzés trackback címe:

https://itma.blog.hu/api/trackback/id/tr2013344761

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.