Потік Brotli (.br)
IETF СтандартBrotli: це алгоритм стиснення даних без втрат із відкритим вихідним кодом, розроблений Google і спеціально оптимізований для вебшрифтів (WOFF2) та кодування HTTP-вмісту (Content-Encoding: br), щоб пришвидшити доставлення вебсторінок.
Конвертувати з BROTLI у GZIP
Безкоштовний конвертер з BROTLI у GZIP у браузері. Миттєво конвертуйте файли на своєму пристрої.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли Brotli, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли Brotli, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
CE B2 CF 81ПОДАННЯ В ASCII: βÏ\x81
Стандартизація: IETF RFC 7932
Технічні характеристики
| Архітектура контейнера | Формат сирого бітового потоку з необов’язковим зазначенням розміру вікна та метаблоками |
| Стиснення | Ковзний словник LZ77 (до 16 МБ), контекстне моделювання другого порядку та статичний словник на 120 КБ |
| Порядок байтів (Endianness) | Пакування бітів у порядку від молодшого до старшого (Little-Endian) |
| Колірні простори | Н/Д (Потік стиснення даних) |
| Канали та структура | Стиснення байтових потоків загального призначення |
| Максимальні розміри | Довільна довжина байтового потоку (підтримує потокове передавання без обмеження довжини) |
| Прозорість | Точне збереження даних «байт-у-байт» без втрат |
| Потокове та прогресивне завантаження | Розбиття на метаблоки дає змогу безперервно передавати дані частинами через HTTP (chunked transfer) |
Технічна матриця порівняння: Brotli проти конкурентів
| Технічний атрибут | Brotli (Поточний) | GZ | ZSTD | DEFLATE |
|---|---|---|---|---|
| Вбудований статичний словник | Включено веб-словник на 120 КБ | Немає (лише динамічні словники) | Словники, що настроюються користувачем | Немає (лише динамічні словники) |
| Веб-стиснення (порівняно з Gzip) | На 15-25 % менший розмір, ніж після стиснення Gzip | Базовий стандарт (Gzip) | На 10-20 % менший розмір, ніж після стиснення Gzip | Базовий Deflate |
| HTTP Content-Encoding | 'Content-Encoding: br' | 'Content-Encoding: gzip' | 'Content-Encoding: zstd' | 'Content-Encoding: deflate' |
| Основна мета дизайну | Передача вебтексту та вебшрифтів | Загальне стиснення файлів Unix | Бази даних у реальному часі та приймання даних | Базовий алгоритм стиснення |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Браузер не завантажує ресурс з помилкою 'ERR_CONTENT_DECODING_FAILED'.
Першопричина: Проксі-сервер або сервер обірвав потік Brotli до передачі фінального метаблоку.
Відновлення: Очистьте кеш браузера, перевірте налаштування стиснення на сервері або розпакуйте локально через File2File.app.
Аналіз безпеки та векторів атак на парсери
Під час роботи зі статичним словником і контекстним моделюванням Brotli потрібно ретельно перевіряти межі пам'яті, щоб виявляти некоректні зворотні посилання.
Відомі вектори атак
- Читання за межами буфера під час звернення до зміщень статичного словника, що виходять за межі таблиці.
- Бомба розпакування (аналог zip-бомби), що вичерпує пам’ять клієнта через розпакування крихітного стисненого файлу.
- Переповнення буфера під час зміни розміру кільцевого буфера ковзного вікна.
Рекомендації щодо захисту: Застосовуйте обмеження максимального розміру вихідного буфера під час декомпресії ненадійних потоків Brotli.
Історичне походження та віхи
Основні переваги
- Стиснені вебресурси HTML, CSS і JavaScript мають на 15-25% менший розмір, ніж після стиснення Gzip.
- Містить попередньо визначений статичний словник розміром 120 КБ з поширеними веб-словами, тегами HTML та фразами.
- Надзвичайно висока швидкість розпакування забезпечує майже миттєве відображення сторінки на пристрої клієнта.
Технічні обмеження та недоліки
- Стиснення на 11-му рівні є обчислювально затратним (найкраще підходить для попереднього стиснення статичних ресурсів).
- Вимагає HTTPS у всіх веббраузерах для запобігання пошкодженню прозорими проксі-серверами.
- Сирі файли .br не мають вбудованих заголовків імені файлу чи дозволів без зовнішньої контейнеризації.
Цікаві технічні факти
- Brotli названо на честь «Brötli», що швейцарським німецьким діалектом означає «маленький хліб».
- Статичний словник об'ємом 120 КБ всередині Brotli містить тисячі поширених англійських, іспанських, німецьких, китайських та HTML-фрагментів.
- Brotli підтримують провідні вебсервери та браузери, але його частка трафіку залежить від сервісу й типу відповіді.
Поширені технічні запитання
Чому Brotli швидший за Gzip для вебсайтів?
Brotli стискає файли HTML, CSS та JS до розміру на 20% меншого, ніж після стиснення Gzip, і розпаковує їх із подібною швидкістю, що зменшує кількість необхідних обмінів даними в стільникових мережах.
Чому Brotli вимагає HTTPS?
Веббраузери підтримують Brotli лише через захищені з’єднання HTTPS, оскільки застарілі прозорі проксі-сервери в інтернеті могли б неправильно інтерпретувати або пошкодити нове кодування 'br'.
Як можна розпакувати файл .br?
Ви можете миттєво розпакувати файли .br або .brotli у звичайний текст чи оригінальні файли за допомогою File2File.app безпосередньо у своєму веббраузері.