Strumień Brotli (.br)
IETF StandardBrotli 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 | Przesuwny 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 | Kompresja strumienia bajtów ogólnego przeznaczenia |
| Maks. wymiary | Dowolna długość strumienia bajtów (obsługuje strumieniowanie bez ograniczeń) |
| Przezroczystość | Bezstratne zachowanie danych z dokładnością bit po bicie |
| 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) | Pliki są o 15% - 25% mniejsze niż po kompresji Gzip | Standard bazowy (Gzip) | Pliki są o 10% - 20% mniejsze niż po kompresji 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.app.
Analiza bezpieczeństwa i wektory ataku na parser
Statyczny słownik Brotli i modelowanie kontekstu wymagają rygorystycznej kontroli limitów pamięci przy przetwarzaniu nieprawidłowych odwołań wstecznych.
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
- W przypadku zasobów internetowych HTML, CSS i JavaScript współczynnik kompresji jest o 15% do 25% lepszy niż w Gzip.
- 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?
Pliki HTML, CSS i JavaScript skompresowane Brotli są o 20% mniejsze niż po kompresji Gzip, a ich dekompresja trwa podobnie długo. Dzięki temu w sieciach komórkowych potrzeba mniej rund przesyłu danych.
Dlaczego Brotli wymaga protokołu HTTPS?
Przeglądarki internetowe obsługują Brotli tylko przez bezpieczne połączenia HTTPS, ponieważ starsze, przezroczyste serwery proxy w Internecie mogłyby błędnie zinterpretować lub uszkodzić 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.