Czym jest HTTP/3?
HTTP/3 to trzecia główna wersja protokołu HTTP, która zamiast TCP wykorzystuje QUIC jako protokół transportowy. Eliminuje blokowanie czoła kolejki, skraca czas ustanawiania połączenia i poprawia wydajność w zawodnych sieciach.HTTP/3 a HTTP/2
| Cecha | HTTP/2 | HTTP/3 |
|---|---|---|
| Transport | TCP | QUIC (przez UDP) |
| TLS | Oddzielna warstwa | Wbudowany w QUIC |
| Uzgadnianie połączenia | TCP + TLS (2-3 RTT) | 0-1 RTT |
| Blokowanie czoła kolejki | Na poziomie TCP | Wyeliminowane |
| Migracja połączenia | Nieobsługiwana | Obsługiwana |
| Wpływ utraty pakietu | Blokuje wszystkie strumienie | Tylko dany strumień |
Jak działa HTTP/3
HTTP/2 over TCP:
Client Server
│─────────── SYN ────────────►│
│◄────────── SYN-ACK ─────────│
│─────────── ACK ────────────►│ TCP Handshake
│─────────── ClientHello ────►│
│◄────────── ServerHello ─────│ TLS Handshake
│─────────── Finished ───────►│
│◄────────── Finished ────────│
│─────────── HTTP Request ───►│ (3 RTT minimum)
HTTP/3 over QUIC:
Client Server
│─────── Initial + ClientHello ─►│
│◄────── Initial + ServerHello ──│
│─────── HTTP Request ──────────►│ (1 RTT)
With 0-RTT Resumption:
│─────── 0-RTT + HTTP Request ──►│ (0 RTT!)
Funkcje protokołu QUIC
| Cecha | Korzyść |
|---|---|
| Oparty na UDP | Unika blokowania czoła kolejki TCP |
| Zintegrowany TLS 1.3 | Zawsze szyfrowany, szybsze uzgadnianie |
| Identyfikatory połączeń | Zachowuje połączenie po zmianie adresu IP |
| Multipleksowanie strumieni | Niezależne dostarczanie strumieni |
| Korekcja błędów w przód | Ogranicza potrzebę retransmisji |
Migracja połączenia
Mobile Network Switch (HTTP/2):
WiFi ──► Connection drops ──► New TCP connection ──► Start over
Mobile Network Switch (HTTP/3):
WiFi ──► Switch to cellular ──► Same QUIC connection continues
(Connection ID persists across IP changes)
Stan wdrożenia
| Platforma | Obsługa HTTP/3 |
|---|---|
| Chrome | 87+ (2020) |
| Firefox | 88+ (2021) |
| Safari | 14+ (2020) |
| Edge | 87+ (2020) |
| Cloudflare | Pełna obsługa |
| AWS CloudFront | Pełna obsługa |
| nginx | 1.25.0+ (eksperymentalna) |
Poprawa wydajności
- Sieci o dużym opóźnieniu: Wczytywanie stron do 50% szybsze
- Połączenia z utratą pakietów: Utrata pojedynczego pakietu nie zatrzymuje wszystkich strumieni
- Sieci komórkowe: Połączenie przetrwa przełączenie między Wi-Fi i siecią komórkową
- Połączenia początkowe: Ustanowienie 1-RTT zamiast 3-RTT
Dobre praktyki
1. Wdrażaj razem z HTTP/2: Przeglądarki płynnie przechodzą na HTTP/2
2. Używaj nagłówka Alt-Svc: Ogłaszaj dostępność HTTP/3
3. Prawidłowo konfiguruj UDP: Upewnij się, że zapory dopuszczają ruch QUIC
4. Monitoruj wydajność: Porównuj metryki różnych wersji protokołu
5. Testuj scenariusze mobilne: HTTP/3 szczególnie dobrze sprawdza się w sieciach komórkowych
Przykład konfiguracji serwera
# Alt-Svc header to advertise HTTP/3
Alt-Svc: h3=":443"; ma=86400
HTTP/3 wyznacza przyszłość transportu WWW, zapewniając szybsze i bardziej niezawodne połączenia, szczególnie użytkownikom mobilnym oraz korzystającym z sieci o dużym opóźnieniu.