SlideShare une entreprise Scribd logo
1  sur  20
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.
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.
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.
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.
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.
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.
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é.
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).
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í.
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.)
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á.
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.
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.
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á.
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.
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.
Š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.
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.
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.
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.

Contenu connexe

Plus de Michal Špaček

Quality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseQuality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseMichal Špaček
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuMichal Špaček
 
Disclosing password hashing policies
Disclosing password hashing policiesDisclosing password hashing policies
Disclosing password hashing policiesMichal Špaček
 
XSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQMichal Špaček
 
Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)Michal Špaček
 
Poučte se z cizích chyb
Poučte se z cizích chybPoučte se z cizích chyb
Poučte se z cizích chybMichal Špaček
 
Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)
Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)
Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)Michal Špaček
 
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníPassword manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníMichal Špaček
 
Operations security (OPSEC) in IT
Operations security (OPSEC) in ITOperations security (OPSEC) in IT
Operations security (OPSEC) in ITMichal Špaček
 
HTTPS (a šifrování) všude
HTTPS (a šifrování) všudeHTTPS (a šifrování) všude
HTTPS (a šifrování) všudeMichal Špaček
 
HTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionHTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionMichal Špaček
 
Bezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchBezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchMichal Špaček
 
Základy webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingZáklady webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingMichal Špaček
 
I forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyI forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyMichal Špaček
 
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)Michal Špaček
 
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Michal Špaček
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojářeMichal Špaček
 

Plus de Michal Špaček (20)

Quality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseQuality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of Defense
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webu
 
Medvědí služba
Medvědí službaMedvědí služba
Medvědí služba
 
Disclosing password hashing policies
Disclosing password hashing policiesDisclosing password hashing policies
Disclosing password hashing policies
 
XSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQ
 
Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)Bezpečnost e-shopů (HTTPS, XSS, CSP)
Bezpečnost e-shopů (HTTPS, XSS, CSP)
 
Poučte se z cizích chyb
Poučte se z cizích chybPoučte se z cizích chyb
Poučte se z cizích chyb
 
Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)
Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)
Minulé století volalo (Cross-Site Scripting + BeEF + CSP demo)
 
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníPassword manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
 
Operations security (OPSEC) in IT
Operations security (OPSEC) in ITOperations security (OPSEC) in IT
Operations security (OPSEC) in IT
 
HTTPS (a šifrování) všude
HTTPS (a šifrování) všudeHTTPS (a šifrování) všude
HTTPS (a šifrování) všude
 
HTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionHTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English version
 
Bezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchBezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeních
 
Základy webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingZáklady webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketing
 
I forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyI forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and why
 
Hlava není na hesla
Hlava není na heslaHlava není na hesla
Hlava není na hesla
 
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)
 
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
 
Přechod na HTTPS
Přechod na HTTPSPřechod na HTTPS
Přechod na HTTPS
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojáře
 

HTTP/2

  • 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.