Strumień Brotli (.brotli)
IETF StandardowyBrotli to otwartoźródłowy, bezstratny algorytm kompresji danych opracowany przez firmę Google, ze szczególnym uwzględnieniem optymalizacji typografii internetowej (WOFF2) oraz kodowania zawartości HTTP (Content-Encoding: br) w celu przyspieszenia dostarczania stron internetowych.
Konwertuj BROTLI na GZIP
Darmowy konwerter z BROTLI na GZIP w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki Brotli, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki Brotli, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
CE B2 CF 81REPREZENTACJA ASCII: βÏ\x81
Normalizacja: IETF RFC 7932
Specyfikacja techniczna
| Architektura kontenera | Struktura surowego strumienia bitów z opcjonalną deklaracją rozmiaru okna i metablokami |
| Kompresja | Przesuwne słownik LZ77 (do 16 MB), modelowanie kontekstu drugiego rzędu oraz statyczny słownik o wielkości 120 KB |
| Kolejność bajtów (Endianness) | Pakowanie bitów w kolejności Little-Endian |
| Przestrzenie kolorów | Nie dotyczy (Strumień kompresji danych) |
| Kanały i struktura | Ogólnoznaczna kompresja strumienia bajtów |
| Maks. wymiary | Dowolna długość strumienia bajtów (obsługuje strumieniowanie bez ograniczeń) |
| Przezroczystość | Bezstratna, dokładna zachowanie danych w obie strony |
| Streaming i progresywne ładowanie | Dzielenie na metabloki umożliwia ciągłe strumieniowanie transferu w trybie chunked HTTP |
Techniczna macierz porównawcza: Brotli a konkurencja
| Atrybut techniczny | Brotli (Bieżący) | GZ | ZSTD | DEFLATE |
|---|---|---|---|---|
| Wbudowany słownik statyczny | Zawiera słownik sieciowy o wielkości 120 KB | Brak (tylko dynamiczny) | Słowniki trenowane przez użytkownika | Brak (tylko dynamiczny) |
| Kompresja internetowa (w porównaniu do Gzip) | O 15% - 25% mniejszy niż Gzip | Standard bazowy (Gzip) | O 10% - 20% mniejszy niż Gzip | Bazowy Deflate |
| Kodowanie zawartości HTTP | 'Content-Encoding: br' | 'Content-Encoding: gzip' | 'Content-Encoding: zstd' | 'Content-Encoding: deflate' |
| Główny cel projektowy | Transmisja tekstów oraz czcionek internetowych | Ogólna kompresja plików w systemie Unix | Bazy danych czasu rzeczywistego i pozyskiwanie danych | Podstawowy algorytm kompresji |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Przeglądarka nie ładuje zasobu z błędem 'ERR_CONTENT_DECODING_FAILED'.
Główna przyczyna: Serwer lub serwer pośredniczący (proxy) przyciął strumień Brotli przed przesłaniem ostatniego metabloku.
Odzyskiwanie: Wyczyść pamięć podręczną przeglądarki, sprawdź ustawienia kompresji serwera lub zdekompresuj lokalnie za pomocą File2File.
Analiza bezpieczeństwa i wektory ataku na parser
Statyczny słownik oraz modelowanie kontekstu Brotli wymagają rygorystycznych kontroli ograniczeń pamięci przed nieprawidłowo sformułowanymi odnośnikami wstecznymi.
Znane wektory ataku
- Odczyt wskaźnika poza granicami pamięci podczas odwoływania się do przesunięć statycznego słownika wykraczających poza rozmiar tabeli.
- Bomba dekompresyjna (odpowiednik bomby ZIP) wyczerpująca pamięć klienta z małych ładunków danych.
- Przepełnienie bufora podczas zmiany rozmiaru bufora kołowego z przesuwnym oknem.
Najlepsze praktyki obronne: Wymuszaj maksymalne rozmiary bufora wyjściowego podczas dekompresji niezaufanych strumieni Brotli.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- O 15% do 25% lepszy stopień kompresji niż Gzip dla zasobów internetowych HTML, CSS i JavaScript.
- Zawiera predefiniowany statyczny słownik o wielkości 120 KB zawierający powszechne słowa internetowe, znaczniki HTML oraz frazy.
- Niezwykle wysoka prędkość dekompresji, zapewniająca niemal natychmiastowe renderowanie strony po stronie klienta.
Ograniczenia techniczne i wady
- Kompresja na poziomie 11 jest wymagająca obliczeniowo (najlepiej sprawdza się przy wstępnej kompresji zasobów statycznych).
- Wymaga protokołu HTTPS we wszystkich przeglądarkach internetowych, aby zapobiec uszkodzeniu przez przezroczyste proxy.
- Surowe pliki .br nie posiadają osadzonych nagłówków nazw plików ani uprawnień bez zewnętrznego kontenera.
Ciekawe informacje techniczne
- Nazwa Brotli pochodzi od słowa „Brötli", co w szwajcarskim dialekcie języka niemieckiego oznacza „mały chlebek".
- Statyczny słownik 120 KB wewnątrz Brotli zawiera tysiące powszechnych fragmentów w języku angielskim, hiszpańskim, niemieckim, chińskim oraz znaczniki HTML.
- Ponad 95% współczesnego ruchu internetowego za pośrednictwem Cloudflare, Fastly i Google jest dostarczane z użyciem kompresji Brotli.
Często zadawane pytania techniczne
Dlaczego Brotli jest szybszy niż Gzip dla stron internetowych?
Brotli kompresuje pliki HTML, CSS i JS o 20% mocniej niż Gzip, dekompresując je przy tym z podobnymi prędkościami, co zmniejsza liczbę wymaganych cykli przesyłu w sieciach komórkowych.
Dlaczego Brotli wymaga protokołu HTTPS?
Przeglądarki internetowe obsługują Brotli wyłącznie przez bezpieczne połączenia HTTPS, ponieważ starsze, przezroczyste serwery proxy w Internecie błędnie zinterpretowałyby lub uszkodziły nowe kodowanie 'br'.
Jak mogę zdekompresować plik .br?
Możesz natychmiast zdekompresować pliki .br lub .brotli do postaci czystego tekstu lub oryginalnych plików, korzystając z serwisu File2File.app bezpośrednio w przeglądarce internetowej.