Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

Nowy szybszy internet

Rozwój internetu wymaga fundamentalnych zmian w warstwie protokołów. HTTP/2, wraz z protokołem TLS 1.3, na nowo definiuje sposób działania sieci World Wide Web. Ma być szybko, niezawodnie i w pełni bezpiecznie.

Proste narzędzie online HTTP/2 Test pozwala zweryfikować obsługę HTTP/2.0 z rozszerzeniem ALPN na serwerze.

HTTP/2 sprawi, że nasze aplikacje będą szybsze, prostsze i bardziej niezawodne. Będziemy mogli zrezygnować z wielu obejść protokołu HTTP/1.1, które musieliśmy dotychczas stosować w aplikacjach, aby sprostać tym założeniom. Co więcej, HTTP/2 otwiera szereg zupełnie nowych możliwości w kierunku optymalizacji i poprawy wydajności naszych aplikacji” – tak w wolnym tłumaczeniu rozpoczyna się przewodnik „Introduction to HTTP/2”, którego autorami są Ilya Grigorik i Surma. Został on opublikowany w ramach projektu Web Fundamentals i udostępniony w witrynie itwa.pl/ev.

Garść historii

Wynaleziony przez sir Tima Bernersa-Lee protokół HTTP niemal od razu stał się synonimem internetu. Protokół ten do dzisiaj wyznacza techniczne ramy usługi World Wide Web (WWW), a więc tego, w jaki sposób przeglądamy strony internetowe i korzystamy z aplikacji webowych. Problem w tym, że obecnie szeroko rozpowszechniona wersja protokołu HTTP/1.1 pochodzi z 1997 r. (RFC 2068). Późniejsze aktualizacje w 1999 r. (RFC 2616) i 2014 r. (RFC 7230) nie przyniosły żadnych fundamentalnych zmian. Aż do momentu, gdy na jaw wyszły prace Google'a nad protokołem SPDY (czytaj: „speedy”).

Zanim jeszcze członkowie IETF odpowiedzialni za rozwój protokołu HTTP na dobre wzięli się do pracy, potrzebę przyspieszania usługi WWW zauważył Google. Firma ta zapoczątkowała prace nad zamiennikiem HTTP o nazwie SPDY. Udoskonalony protokół znalazł nawet swoje implementacje w serwerze nginx i przeglądarce Mozilli, demonstrując przy tym, jak bardzo można przyspieszyć internet tylko dzięki modernizacji HTTP/1.1. Tym razem szczęśliwie obyło się bez kolejnej świętej wojny na standardy. Osoby pracujące dla Google'a przyłączyły się do społeczności i ekspertów skupionych pod egidą IETF. W rezultacie na bazie SPDY powstała kolejna odsłona protokołu oznaczona jako HTTP/2.

W tym miejscu warto się zastanowić, czy świat rzeczywiście potrzebuje nowej wersji protokołu HTTP. Na przestrzeni lat sieci komputerowe uległy niewiarygodnemu wręcz przeobrażeniu: nie tylko z perspektywy szybkości transmisji i ilości przesyłanych danych, ale też sposobu, w jaki współcześnie konsumujemy treści. Jednym z najnowszych trendów jest Progressive Web App (PWA), czyli webowe aplikacje internetowe, które wyglądają i działają dokładnie tak samo, jak dedykowane aplikacje na komputer lub smartfon. Programiści mogą używać tych samych języków programowania (HTML5, JavaScript) niezależnie od platformy, a raz napisana aplikacja może być uruchamiana na dowolnych urządzeniach użytkownika. Co naturalne, aplikacje PWA muszą być dostępne nawet w przypadku słabej jakości lub braku połączenia. Ważne jest również, aby wchodziły w interakcje z użytkownikiem, zapewniając mu takie same doświadczenia, jak podczas korzystania przez niego z programu zainstalowanego na komputerze. HTTP/2 pozwala łatwiej wdrażać te założenia w życie.

Protokół HTTP/2

Na poziomie koncepcyjnym HTTP/2 wprowadza w stosunku do poprzednich wersji protokołu kilka dobrze wyartykułowanych zmian. Komunikaty między serwerem a klientem nie są przesyłane jako jawny tekst, lecz w formie binarnej. Między stronami komunikacji tworzone jest jedno, zamiast wielu, trwałe połączenie TCP. Co więcej, HTTP/2 pozwala na równoległą transmisję danych, a więc pobieranie wielu zasobów, np. plików HTML i CSS, jednocześnie, bez oczekiwania na zakończenie poprzedniej transmisji. To adaptacja założeń multipleksingu.

Dwie inne ważne nowe funkcje protokołu to kompresja nagłówka, umożliwiająca ograniczenie ilości przesyłanych danych przesyłanych między klientem a serwerem, oraz powiadomienia push, dzięki którym przeglądarka może dostarczać aktualizacje wyświetlanych treści i powiadomienia na urządzenie użytkownika. Spróbujmy zatem prześledzić zmiany wprowadzone w najnowszej odsłonie protokołu.

Format binarny

Protokół HTTP/1.x przesyła komunikaty między klientem a serwerem w formie jawnego tekstu (plain text). Tego rodzaju transmisja danych jest podatna na błędy wynikające z konieczności obsługi pustych wierszy, znaków końca linii albo małych i wielkich znaków. Komunikacja w formie binarnej wykazuje większą odporność na błędy, a przy tym staje się bardziej efektywna z uwagi na to, że stronami wymieniającymi dane są komputery. W rezultacie komunikaty wcale nie muszą być tłumaczone na język zrozumiały dla człowieka. Podejście to ma jednak pewną wadę. Format binarny utrudnia debugowanie połączeń. Należy powiedzieć wprost: próba wykorzystania telnetu do ustanowienia połączenia z serwerem HTTP/2 spełznie na niczym. Dobra wiadomość jest taka, że już dzisiaj na rynku dostępne są narzędzia, które pozwalają na pracę z nową wersją protokołu.

Przykładowo popularny analizator pakietów Wireshark w wersji 1.12.0 lub nowszej potrafi dekodować ramki HTTP/2. W wersji 2.0 dodano wsparcie dla dekompresji nagłówka HPACK, przy czym Wireshark z linii 2.4 wymaga w tym celu użycia dodatkowego pakietu nghttp2. Kolejny problem pojawia się, gdy mówimy o debugowaniu szyfrowanych połączeń. Dekodowanie szyfrowanego ruchu (TLS) wymaga bowiem pozyskania kluczy szyfrowania. W tym celu używa się przeglądarki internetowej, takiej jak Chrome lub Firefox, która po ustanowieniu zmiennej środowiskowej SSLKEYLOGFILE, i oczywiście poprawnego nawiązania połączenia z zabezpieczoną stroną, może zapisywać wymagane klucze na dysku komputera. Taką zaszyfrowaną komunikację w protokole HTTP/2 można później debugować we wspomnianym Wiresharku.

[...]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej