Wprowadzenie do HTTP / 2

Wprowadzenie

HTTP / 2 to najnowsza wersja HyperText Transfer Protocol lub HTTP [01], który jest używany przez przeglądarki do komunikacji z serwerami internetowymi. Pochodzi ze starszej SPDY [02] protokół, HTTP / 2 to pierwsza nowa wersja HTTP od czasu standaryzacji HTTP / 1.1 w RFC 2068 w 1997 roku.

Został on opracowany przez grupę roboczą HTTP Engineering Engineering Task Force (IETF) httpbis (gdzie „bis” oznacza „dwa razy”) i opublikowane jako RFC 7540 [03] maj 2015.

Przyjęcie HTTP / 2

Od czasu oficjalnej publikacji HTTP / 2 jest coraz częściej stosowany przez działające strony internetowe. Internetowa usługa ankiet W3Techs [04] Zauważa, że ​​od września 2017 r. do września 2018 r. obsługa protokołu HTTP / 2 wzrosła z 16% do 30% wszystkich monitorowanych stron internetowych.

Co więcej, główne przeglądarki (np. Chrome, Firefox, Edge itp.) Zapewniają już pełną obsługę HTTP / 2 [05]. (Niektórzy nawet opracowali eksperymentalne implementacje, zanim HTTP / 2 został zaakceptowany jako standard).

Ta powszechna adopcja oznacza, że ​​HTTP / 2 może stać się de facto protokołem komunikacyjnym sieci.

Motywacja za HTTP / 2

Httpbis„karta [06] wymienia kilka składników HTTP / 1.1, które można by ulepszyć, jako motywację do HTTP / 2. Jednak głównym celem grupy było zmniejszenie opóźnień postrzeganych przez użytkownika końcowego.

Aby to zrobić, httpbis rozważał zminimalizowanie narzutu przepustowości poprzez kompresję nagłówka i agresywne techniki pobierania z wyprzedzeniem (np. push serwera), jednocześnie próbując systematycznie rozwiązywać znane problemy z wydajnością, takie jak przeciążenie połączenia i problem blokowania Head-of-Line (HoL) [07].

Co więcej, HTTP / 2 musiał być kompatybilny wstecz, co oznacza, że ​​musiał używać tych samych czasowników metod, kodów statusu, URI i (większości) pól nagłówka znalezionych w HTTP / 1.1. HTTP / 2 musiał również zostać zaprojektowany do obsługi typowych przypadków użycia HTTP, takich jak stacjonarne i mobilne przeglądarki internetowe, interfejsy programowania, serwery proxy i zapory ogniowe.

Aby zachować tę zgodność, grupa robocza opracowała mechanizm negocjacji protokołów, który pozwoliłby klientom i serwerom wybierać spośród protokołów HTTP / 1.1, HTTP / 2, a nawet protokołów innych niż HTTP.

Więc co nowego w HTTP / 2?

HTTP / 2 nadal używa tych samych schematów URI i numerów portów używanych w HTTP / 1.1 (tj. Dla portu 80 dla http Identyfikatory URI i port 443 dla https URI), ale wiele rzeczy dzieje się inaczej pod maską.

Najbardziej fundamentalną zmianą jest wprowadzenie Ramy jako podstawowa jednostka danych HTTP / 2.

HTTP / 1.1 tradycyjnie używa Pakiety reprezentować dane sieciowe. Klient konstruuje pakiet żądania za pomocą czasownika metody (np GET or POST), dołączając listę nagłówków opisujących połączenie oraz treść zawierającą dane aplikacji.

Po otrzymaniu pakietu żądania serwer HTTP / 1.1 odpowiada pakietem podobnej odpowiedzi zawierającym żądane informacje. W rezultacie każdy cykl żądań i odpowiedzi wymaga nowego połączenia.

I odwrotnie, klienci HTTP / 2 ustanawiają pojedyncze połączenie sieciowe z serwerem, którego używają do całej następnej komunikacji sieciowej. Nagłówki, dane użytkownika, komunikaty o błędach i wszelkie takie informacje są pakowane w odrębne struktury danych binarnych zwanych ramkami, zanim zostaną przesłane przez sieć.

Wydaje się, że to niewielka zmiana, ale niesie ze sobą znaczące implikacje.

Kompresja nagłówka

Ogromną zaletą korzystania z ramek jest to, że nagłówki HTTP / 2 są pakowane do pliku HEADER ramkę, którą można skompresować przy użyciu normalnych metod kompresji. Nagłówki muszą być przesyłane przed jakimikolwiek danymi, aby kompresja nagłówka mogła zmniejszyć narzut przepustowości narzucony przez HTTP / 2.

Kompresja nagłówka wraz z następującymi funkcjami poprawiającymi wydajność HTTP / 2 może być szczególnie przydatna w aplikacjach mobilnych lub w Internecie (IOT), w których wymagane jest minimalne użycie sieci.

Strumienie i multipleksowanie

Niezależna sekwencja znaczących semantycznie ramek nosi nazwę a strumień. Strumieniom przypisywany jest unikalny identyfikator punktu końcowego (tj. Klienta lub serwera), który je utworzył, aby inne punkty końcowe mogły je rozróżnić.

Punkty końcowe mogą przeplatać ramki z kilku strumieni za pośrednictwem tego samego połączenia HTTP / 2, dzięki czemu jedno połączenie sieciowe może obsługiwać wiele jednocześnie otwartych strumieni. Ten proces nazywa się multipleksowanie [08].

Ponowne użycie tego samego połączenia zmniejsza problemy, takie jak zatłoczenie połączenia i wspomniany wcześniej problem HoL, i oferuje lepszą wydajność i płynniejszą obsługę niż poprzednie wersje HTTP.

Zależność i priorytetyzacja strumienia

Zarządzanie wieloma równoległymi strumieniami oznacza, że ​​niektóre strumienie będą przetwarzane przed innymi. HTTP / 2 pozwala deweloperowi (lub administratorowi) dostosować to zachowanie za pomocą funkcji o nazwie zależność od strumienia.

Strumień może zależeć od pełnego transferu innego strumienia, zanim zostanie obsłużony. Na przykład w witrynie, w której główna treść strony internetowej powinna zostać załadowana przed wszelkimi zaleceniami dotyczącymi podobnej treści, HTTP / 2 pozwala na utworzenie strumienia rekomendacji w zależności od głównego strumienia treści.

Obsługuje również HTTP / 2 priorytetyzacja strumienia. Oznacza to, że każdemu strumieniowi można przypisać priorytet, aby zasugerować, jak pilnie punkty końcowe powinny przydzielić zasoby do obsługi ramek strumienia.

Priorytetyzacja i zależność od strumienia pomagają programistom i właścicielom witryn internetowych optymalizować wykorzystanie sieci w ich witrynach, co może znacznie poprawić komfort ich użytkowania.

Serwer Push

Wreszcie, HTTP / 2 może poprawić wydajność witryny internetowej, zapewniając funkcję „wypychania”. Serwer WWW HTTP / 2 może odpowiedzieć danymi na więcej zapytań niż pierwotnie zażądał klient. Pozwala to serwerowi na dostarczenie danych, o których wie, że przeglądarka internetowa będzie musiała wyrenderować stronę, bez czekania, aż przeglądarka sprawdzi pierwszą odpowiedź, a tym samym bez narzutu dodatkowego cyklu żądań.

Wypychanie serwera daje programistom pełną kontrolę nad liczbą żądań wymaganych do wyświetlenia strony internetowej przez przeglądarkę. Przy prawidłowym użyciu ta funkcja może zminimalizować obciążenie sieci.

Oczywiście niewłaściwe użycie funkcji push może również zmarnować większą przepustowość niż jest to faktycznie konieczne. Z tego powodu HTTP / 2 pozwala klientowi zażądać wyłączenia wypychania serwera podczas pierwszej negocjacji połączenia.

Bezpieczeństwo HTTP / 2

Jeśli czytałeś do tego momentu, powinno być jasne, że programiści HTTP / 2 naprawdę włożyli wysiłek w poprawę wydajności. Należy jednak zauważyć, że protokół HTTP / 2 może również poprawić ogólne bezpieczeństwo użytkowników przeglądarek.

Dokładniej, protokół HTTP / 2 jest zdefiniowany zarówno dla identyfikatorów URI HTTP (tj. Bez szyfrowania), jak i identyfikatorów URI HTTPS (ponad TLS kanały kodowane). Chociaż sam standard nie wymaga stosowania szyfrowania, wszystkie główne implementacje przeglądarek (np. Firefox [09], Chrome, Safari, Opera, IE, Edge) zdecydowali, że to zrobią tylko obsługa HTTP / 2 over TLS.

W rzeczywistości przeglądarki rozróżniają między szyfrowaniem HTTP / 2 i HTTP / 2 w postaci zwykłego tekstu TLS jako dwa różne protokoły. Nazywa się szyfrowany HTTP / 2 h2 i czysty tekst h2c. W chwili pisania tego tekstu żadna z głównych przeglądarek nie obsługuje h2c , Co oznacza, że TLS szyfrowanie jest obowiązkowe, aby witryna internetowa mogła korzystać z innych zalet protokołu HTTP / 2. W związku z tym, gdy HTTP / 2 staje się domyślnym protokołem sieciowym, właściciele starszych witryn internetowych, którzy nie dokonali jeszcze aktualizacji do SSL /TLS, będzie miał silną motywację, aby w końcu to zrobić.

Wnioski

Powszechne przyjęcie HTTP / 2 przyniesie nową i ulepszoną sieć. Jest szybszy, wymaga mniejszej przepustowości i pomaga stronom internetowym zachować bezpieczeństwo. Jego powszechne zastosowanie z pewnością sprawi, że ogólne wrażenia użytkowników sieci będą płynniejsze i bezpieczniejsze.

Zdobądź certyfikat już dziś i dołącz do nas w przyszłości.

Referencje

  1. Protokół HTTP
  2. Protokół SPDY
  3. Specyfikacja HTTP / 2
  4. Ankieta przyjęcia W3Techs HTTP / 2
  5. Przyjęcie HTTP / 2 w przeglądarkach
  6. karta httpbis
  7. Blokowanie HOL
  8. Multiplexing
  9. Firefox na HTTP / 2

Subskrybuj biuletyn SSL.com

Nie przegap nowych artykułów i aktualizacji z SSL.com

Bądź na bieżąco i bezpiecznie

SSL.com jest światowym liderem w dziedzinie cyberbezpieczeństwa, PKI i certyfikaty cyfrowe. Zarejestruj się, aby otrzymywać najnowsze wiadomości branżowe, wskazówki i ogłoszenia o produktach od SSL.com.

Będziemy wdzięczni za Twoją opinię

Weź udział w naszej ankiecie i daj nam znać, co myślisz o swoim ostatnim zakupie.