1. HTTP/2
Michal Špaček
www.michalspacek.cz
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: http://host/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. 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. 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.