📃 http://www.slideshare.net/spaze/http2-46907326

Detail přednášky

Pětiminutová přednáška o nové verzi protokolu HTTP.

Detailní popis fungování protokolu HTTP/2 naleznete v článku na Root.cz a ještě podrobněji pak na necelých 40 stranách v knize http2 explained od Daniela Stenberga, autora programu curl.

Datum a akce

11. 4. 2015, Devel.cz Konference 2015


  1. HTTP/2 (ne HTTP/2.0)

    HTTP znamená Hyperttext Transfer Protocol a slouží k přenosu webových stránek, souborů a obrázků koťátek. Tyto slajdy obsahují poznámky, které v původní verzi přednášky nejsou.

  2. 1991 – HTTP/0.9

    První verze HTTP byla označována jako verze 0.9 a byla publikována v roce 1991. Pokud jste se narodili před tímto rokem, tak jste starší, než protokol HTTP.

  3. 1996 – HTTP/1.0, //1997 – HTTP/1.1

    V roce 1996 vyšla verze HTTP 1.0 a v roce 1997 verze 1.1. Ta byla v roce 1999 aktualizována a pak se dlouho nic nedělo. Poslední aktualizace se HTTP/1.1 dočkalo v červnu 2014.

  4. Location: /path

    V té poslední aktualizaci bylo pro webové vývojáře největší změnou to, že hlavička Location může být relativní. Předtím musela být absolutní, ale prohlížečům to bylo stejně jedno.

  5. 2012 – SPDY

    V roce 2012 se objevil protokol SPDY, za kterým stojí primárně Google. Už podle názvu se tím Google snažil zrychlit načítání webových stránek. A webové stránky obsahují reklamy, že.

  6. Chrome SPDY/3.1, Firefox SPDY/3 & 3.1, IE11 SPDY/3

    SPDY měl několik verzí, současné browsery již starší verze nepodporují. Chrome umí už jen verzi 3.1, Firefox umí 3.0 i 3.1. IE 11 umí SPDY/3, ale jen na Win8 a občas to blbne.

  7. HTTP/2 = SPDY/4

    Chrome začátkem roku 2016 zcela odstraní podporu SPDY právě ve prospěch HTTP/2. Chrome už HTTP/2 umí, v nastavení je ale pojmenovaná jako SPDY/4, což je prý to samé.

  8. Apache & nginx

    Podpora na hlavních serverech je zatím trochu mizerná. nginx prý implementuje HTTP/2 do konce roku 2015 (aktualizace: v září 2015 vyšel nginx s podporou HTTP/2, zatím bez podpory Server Push, viz dále), Apache HTTP/2 standardně neumí, ale existuje pro něj neoficiální rozšíření (aktualizace: v říjnu 2015 vyšel Apache 2.4.17 s podporou HTTP/2).

  9. HTTP/2 = 5 %

    Na konci ledna 2015 měl Google na svých serverech 5 % všech přístupů pomocí HTTP/2, ale teď to bude mnohem více. HTTP/2 umí Firefox i Chrome a oba ho pro přístup na Google používají.

  10. h2-17

    Nutno dodat, že HTTP/2 byl sice již dokončen, ale ještě nebyl „schválen.“ Zatím existuje ve verzi draft 17, která je označovaná jako h2-17, Chrome a Firefox podporují verzi draft 14 a 15. (Aktualizace: protokol byl v květnu 2015 „schválen“, viz RFC 7540 a RFC 7541.)

  11. Binární protokol

    Protokol HTTP/2 se od starších verzí liší například tím, že je binární. Rychleji se tedy parsuje i přenáší. Do textové reprezentace pro zobrazení v debuggerech se překládá.

  12. Obrovské hlavičky

    V HTTP/1.1 se doporučovalo statický obsah dávat na samostatné domény, aby se zbytečně v požadavcích na obrázky nepřenášely cookies, které někdy mohly mít v součtu i třeba pár desítek kilo.

  13. Komprese HPACK

    HTTP/2 komprimuje i hlavičky a tedy i cookies. Používá na to vlastní algoritmus HPACK. Starší SPDY používalo GZIP, ale kvůli útoku CRIME se musel vymyslet nový algoritmus.

  14. Pipelining

    Už HTTP/1.1 umělo v jednom spojení poslat více požadavků zároveň, ale odpověď musela přijít ve stejném pořadí, jako odešly požadavky. Podpora v browserech je ale dost špatná.

  15. Multiplexing

    HTTP/2 umí v jednom spojení na server poslat více požadavků, přičemž nezáleží na pořadí odpovědí. Jednotlivé části požadavků nebo odpovědí se mohou dokonce míchat mezi sebou.

  16. Server Push

    Když browser stáhne stránku, tak ji musí začít parsovat, aby mohl poslat další požadavky na server pro obrázky apod. HTTP/2 server mu tyhle věci může natlačit předem do cache.

  17. Šifrování

    Jednu chvíli to vypadalo, že HTTP/2 bude šifrované spojení vyžadovat, že všechno poběží na TLS a nebude tedy jednoduché provádět odposlechy nebo modifikovat stahovaná data.

  18. h2c – cleartext

    Ale není tomu tak, HTTP/2 má i nešifrovanou variantu, označovanou jako h2c – cleartext. Google a Mozilla ale tuto variantu do svých prohlížečů neplánují implementovat.

  19. QUIC – Quick UDP Internet Connections

    Google má v zásobě ještě jeden protokol, říká mu QUIC. Je to v podstatě obdoba SPDY, ale funguje na protokolu UDP. Podporuje ho Chrome a používá ho při přístupu na servery Google.

  20. Sprite

    A co to všechno pro webové vývojáře znamená? No, budete moci konečně přestat spojovat obrázky dohromady. Ale asi až za pár dlouhých let.

English