HTTP 2 - Nowy, szybszy, lepszy internet
Zakończyły się prace związane z nowym standardem protokołu HTTP HTTP/2. Wkrótce zastąpi on stosowany od 1999 roku protokół HTTP/1.1. Oto, co w praktyce ta zmiana oznacza dla użytkowników globalnej sieci.
HTTP, czyli Hypertext Transfer Protocol, to protokół sieci WWW, dzięki któremu możliwe jest swobodne korzystanie z zasobów internetu. Przeglądarka internetowa, taka jak np. Internet Explorer czy Chrome, właśnie za pomocą protokołu HTTP przesyła do serwera żądania związane z udostępnieniem strony WWW. Protokół ten odpowiada również za przekazywanie informacji o kliknięciu odnośników oraz m.in. przesył danych z formularzy, które wypełniane są na stronach internetowych.
Co nieco technologii
Pierwsza wersja HTTP z 1990 roku oznaczona symbolem 0.9 była bardzo prostym protokołem służącym jedynie do transmisji niezbyt skomplikowanych informacji przez internet. Późniejsze wersje HTTP/1.0 i 1.1 rozbudowano m.in. o możliwość przesyłu dodatkowych informacji zawierających parametry związane z przesyłanymi danymi.
Obecnie typowe strony internetowe składają się z wielu elementów. Oprócz standardowego kodu HTML (Hypertext Markup Language) opisującego strukturę informacji na stronach internetowych znajdziesz tam również elementy takie jak kaskadowe arkusze stylów CSS (Cascading Style Sheets) opisujące formę wyświetlania stron WWW, skrypty JavaScript, zdjęcia, materiały wideo, animacje Flash itp. Aby przesłać wszystkie te dane przy pomocy protokołu HTTP, musi zostać utworzonych kilka połączeń. Każde z nich zawiera szczegółowe informacje na temat źródła, przeznaczenia, protokołu i zawartości przesyłanych pakietów informacji. Niestety taki sposób przesyłu informacji w znaczny sposób obciąża zarówno serwer dostarczający treści, jak i przeglądarkę odbierającą te dane. Co więcej, im bardziej rozbudowana jest strona WWW, tym większych zasobów od serwera i przeglądarki internetowej wymaga przesłanie, a następnie przetworzenie i wyświetlenie zawartych na niej treści. W rezultacie prowadzi to do powstawania tak mocno irytujących wielu użytkowników opóźnień związanych z wczytaniem i wyświetleniem strony.
Zaczęło się od SPDY
Z problemem opóźnień postanowiła powalczyć firma Google. W 2009 roku ruszyły pracę nad technologią
SPDY (wymawiane jako „speedy”), która umożliwiałaby znacznie szybsze ładowanie się stron WWW. Protokół ten z założenia miał być rozszerzeniem standardu HTTP, dzięki czemu bardzo szybko zaczęły z niego korzystać takie serwisy jak Facebook, Twitter czy Wordpress. Jak twierdzi Google, zastosowanie SPDY skraca czas otwierania witryn o ponad 60 proc., a przy połączeniach szyfrowanych o 55 proc. Obecnie obsługa SPDY jest zaimplementowana w przeglądarkach Google Chrome, Mozilla Firefox, Opera, Amazon Silk, Internet Explorer oraz Safari.
Podstawą działania SPDY jest zmniejszenie liczby połączeń. Protokół ten do przesłania kilku plików z serwera do maszyny klienta wymaga tylko jednego połączenia. Co więcej, wszystkie transmisje są szyfrowane i kompresowane przy użyciu bezstratnej kompresji w formacie GZIP. Ponieważ już na samym początku firma Google oświadczyła, że jej celem jest uczynienie ze SPDY uniwersalnego, internetowego standardu, organizacja standaryzująca IETF (Internet Engineering Task Force) zgodziła się przyjąć SPDY jako podstawę do dalszych prac nad nową wersją standardu protokołu hipertekstowego.
Co to jest protokół?
W najprostszym ujęciu protokół to zbiór zasad, które mówią, w jaki sposób informacja jest przekazywana z jednego komputera do drugiego. Każdy protokół komunikacyjny jest nieco inny, ale zazwyczaj składa się on z nagłówka, stopki oraz zawartych pomiędzy nimi danych. W nagłówku znajdują się adresy źródłowe i docelowe oraz informacje o pakiecie danych, np. ich typie czy rozmiarze. W stopce umieszcza się mechanizmy korekcji i wykrywania błędów, np. sumy kontrolne.
Od SPDY do HTTP/2
Pomiędzy standardami SPDY a HTTP/2 nie ma wielu różnic. Oba korzystają z tzw. multipleksowania, czyli odbierania i wysyłania wielu informacji w tym samym czasie, przy czym SPDY jest w stanie w obsługiwać w ten sposób zasoby pochodzące z jednego hosta (serwera), HTTP/2 umożliwia zaś jednoczesny multipleksing z wielu hostów – co ma zasadnicze znaczenie przy przesyłaniu m.in. reklam z wielu źródeł.
Podobnie jak SPDY, HTTP/2 zwiększa szybkość wczytywania informacji głównie poprzez utworzenie jednego stałego połączenia pomiędzy przeglądarką a serwerem. Ponadto wszystkie dane przesyłane są w formacie binarnym, a nie tak, jak ma to miejsce obecnie, kiedy część przesyłana jest w formacie tekstowym. Binarny przesył danych oznacza, że komputer i serwer nie muszą tracić czasu na konwersje pomiędzy formatami danych.
Innymi istotnymi cechami protokołu HTTP/2 są również wykorzystanie priorytetów (ważniejsze dane przesyłane są jako pierwsze) oraz, podobnie jak w SPDY, obowiązkowa kompresja. Projektanci protokołu skorzystali też z technologii „Push” – serwer przewiduje, o jakie dane może za chwilę poprosić przeglądarka, i wysyła je przed czasem.
Wdrożenie
Wszystko wskazuje na to, że przejście na protokół HTTP/2 odbędzie się w sposób płynny i zupełnie niezauważalny dla użytkownika. Już w tej chwili wiele serwerów WWW i przeglądarek internetowych ma możliwość pracy z wykorzystaniem protokołu HTTP/2. Na przykład firma Microsoft wprowadziła obsługę protokołu HTTP/2 do zbioru usług (m.in. serwerów HTTP i HTTPS) zawartych w Internet Information Services (IIS) dla systemów z rodziny Microsoft Windows 10.
W ramach programu Technical Preview dla systemu Windows 10 obsługa HTTP/2 zaimplementowana została również w przeglądarce Microsoft Internet Explorer. Jak można się domyślić, także Chrome bez problemu obsługuje HTTP/2. W grupie programów obsługujących HTTP/2 nie mogło oczywiście zabraknąć Mozilli Firefox – w jej wypadku jest to możliwe od wersji 36.
Korzyści i zagrożenia
Podstawową korzyścią z wdrożenia protokołu HTTP/2 jest przyspieszenie pracy przeglądarek i serwerów. W zależności od treści WWW i serwisu, z którego się korzysta, strony internetowe będą się wczytywać średnio o 20–30 proc. szybciej. Niekiedy wzrost wydajności może dochodzić do 60 proc. Ale, jak podkreślają analitycy i programiści (m.in. Poul-Henning Kamp, który opublikował surową krytykę HTTP/2), nie jest aż tak różowo. Jak się okazuje, zastosowanie HTTP/2 zwiększa w określonych sytuacjach obciążenie po stronie serwera. Sytuacja taka ma miejsce przy przesyłaniu bardzo dużych zbiorów danych, takich jak np. filmy.
Również przyspieszenie działania internetu nie jest tak do końca oczywiste. W wypadku popularnych serwisów będzie na pewno widoczne, ale ze względu na wprowadzone priorytety niewielkie strony WWW umieszczane zwykle na serwerach wirtualnych mogą działać wolniej.
Kolejnym niebezpieczeństwem, jakie niesie ze sobą wprowadzenie HTTP/2, jest to, że programiści mogą zaprzestać optymalizowania kodu strony WWW. Jednoczesne wysyłanie elementów strony sprawia bowiem, że niezależnie od obciążenia strona w przeglądarce klienta będzie się ładować w miarę normalnie – nie ma znaczenia, czy jest napisana w sposób poprawny.
Pod lupą krytyków znalazło się też obowiązkowe szyfrowanie komunikacji przez HTTP/2 za pomocą SSL/TLS. W wielu wypadkach, np. przy przesyle przez dostawców multimediów materiałów wideo czy muzyki, szyfrowanie nie jest potrzebne, a może tylko spowolnić transfer. Są też sytuacje, w których szyfrowana komunikacja jest niezgodna z prawem, bo np. w niektórych krajach więźniowie nie mają prawa do prywatności. Jak te problemy zostaną rozwiązane? Zobaczymy.
Chrome Canary
Google udostępniło w sieci pierwszą wersję swojej eksperymentalnej przeglądarki, która jako pierwsza zapewnia pełne wsparcie finalnej wersji protokołu HTTP/2 (https://www.google.pl/chrome/browser/canary.html). Dzięki niej można m.in. samemu zweryfikować, w jakim stopniu przyspieszy internet bazujący na nowym protokole. Oczywiście strony WWW, które się ogląda, także muszą obsługiwać nową specyfikację, a niestety nie ma ich zbyt wiele. Różnice w szybkości pomiędzy różnymi wersjami protokołów przetestować możesz na http://http2rulez.com.