Internet

Protokół HTTP/3 zrezygnuje z TCP, zastąpi go zmodyfikowany UDP. Internet przyśpieszy!

Kamil Pieczonka
Protokół HTTP/3 zrezygnuje z TCP, zastąpi go zmodyfikowany UDP. Internet przyśpieszy!
37

Być może trudno w to uwierzyć, ale protokół HTTP nie ma jeszcze nawet 30 lat. Tim Berners-Lee, który uważany jest za ojca stron WWW, stworzył go w 1989 roku i nazwał początkowo WorldWideWeb. Dopiero w 1991 standard komunikacji przeglądarki internetowej z serwerem - Hypertext Transfer Protocol - opisano w dokumencie HTTP 0.9. Od tamtej pory wcale tak dużo się nie zmieniło.

Krótka historia HTTP

W 1996 roku pojawił się dokument opisujący protokół HTTP 1.0, a już rok później jego nieco poprawiona wersja HTTP 1.1. Główna różnica polegała na tym, że w wersji 1.1 możliwe było wykorzystanie jednego połączenia do pobierania różnych danych, w wersji 1.0 każdy nowy element wymagał osobnego połączenia, co znacznie spowalniało ładowanie stron. HTTP 1.1 nadal jest głównym standardem komunikacji przeglądarek z serwerami WWW, pomimo tego, że w 2015 roku zadebiutował standard 2.0.

HTTP/2 (lub 2.0) bazuje na projekcie SPDY (czyt. speedy) stworzonym przez Google. Inżynierowie internetowego giganta pracowali nad metodą przyśpieszenia komunikacji między przeglądarką, a serwerem. Efektem tych prac był właśnie SPDY, który ostatecznie z niewielkimi zmianami przekształcił się w HTTP/2. Protokół ten jest nie w 100% kompatybilny z HTTP 1.1, ale korzysta z wielu jego elementów (metody, błędy, nagłówki itp.). Różni się natomiast tym jak dane są pakowane w ramki i wysyłane do serwera. Wszystko po to aby jak najbardziej zminimalizować opóźnienia.

Na dzień dzisiejszy 31% z 10 mln najpopularniejszych stron internetowych na świecie korzysta z HTTP/2, w tym między innymi Google, YouTube, Wikipedia czy Twitter. Protokół ten jest też oczywiście obsługiwany przez najpopularniejsze przeglądarki internetowe. Niestety zarówno HTTP 1.1 jak i HTTP/2 korzystają z protokołu TCP jako warstwy transmisyjnej. A to wymusza zachowanie pewnym standardów wymiany danych, które w przypadku HTTP są mało efektywne.

Jak działa HTTP?

Generalizując, warstwa transmisyjna w ruchu sieciowym korzysta z jednego z dwóch protokołów - TCP (Transmission Control Protocol) lub UDP (User Datagram Protocol). Główna różnica między TCP, a UDP, to fakt, że w tym pierwszym odbiorca pakietu danych, potwierdza nam ich otrzymanie w nienaruszonym stanie. W UDP pakiety sobie wysyłamy i nie interesuje nas już czy dotarły do celu czy nie. Oznacza, to że TCP wymaga wymiany większej ilości informacji i bywa mało efektywny. UDP jest pod tym względem lepszy, dlatego często używa się go np. do transmisji wideo czy audio.

Protokół HTTP należy do najwyższej warstwy komunikacyjnej (warstwy aplikacji) i jako taki nie odpowiada, za bezpośrednią komunikację z serwerem WWW. Jego polecenia są "tłumaczone" na protokół TCP, który pozwala wymieniać dane między urządzeniami sieciowymi. HTTP wymienia niewielkie pakiety danych z serwerem, ale musi za każdym razem czekać na odpowiedź, z potwierdzeniem otrzymania poprzedniej paczki danych z powodu użycia TCP. To generuje opóźnienia, które można by było zredukować, a tym samym przyśpieszyć ładowanie stron internetowych.

HTTP/3 aka QUIC, czyli znowu Google

Nikogo chyba nie dziwi, że ponownie nad nowym standardem pracuje głównie Google. QUIC to skrót od Quick UDP Internet Connections. Jak sama nazwa wskazuje, korzysta on z protokołu UDP, który nie jest tak niezawodny jak TCP, ale za to znacznie szybszy. Przy zastosowaniu odpowiednich procedur, może on spełnić swoje zadanie również w komunikacji w protokole HTTP. Obecnie jak w trakcie przesyłania danych wystąpi błąd, to protokół HTTP zatrzymuje całe ładowanie strony. W QUIC proces ładowania strony będzie trwał dalej, a uszkodzony element jest pobierany w następnej kolejności. Nowy protokół przyśpiesza też nawiązywanie bezpiecznego, szyfrowanego połączenia, szczególnie jeśli z danym serwerem łączyliśmy się już wcześniej. Nowy protokół lepiej sprawdzi się również w przypadku gdy zmieni się nam adres IP w trakcie połączenia (np. przełączamy się na smartfonie z WiFi na GSM). Obecnie każde połączenie jest zrywane i nawiązywane na nowo, w QUIC wystarczy wysłać jeden pakiet z ID naszego poprzedniego połączenia i kontynuujemy przeglądanie strony tak jakby nic się nie zmieniło.

QUIC został pierwszy raz opisany w 2013 roku. Obecnie IETF (Internet Engineering Task Force) pracuje nad standaryzacją tego protokołu, który prawdopodobnie przybierze nazwę HTTP/3. Finalizacja standardu powinna przyśpieszyć jego implementację, w tej chwili zaledwie nieco ponad 1% witryn obsługuje QUIC. Między innymi są to serwisy Google oraz Facebook.

Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu