Сирий DEFLATE (.deflate)
IETF СтандартDEFLATE - це найпоширеніший алгоритм стиснення даних без втрат в історії обчислювальної техніки, що понад три десятиліття забезпечує роботу архівів ZIP, потоків GZIP, зображень PNG та вебстиснення HTTP.
Конвертувати з GZIP у DEFLATE
Безкоштовний конвертер з GZIP у DEFLATE у браузері. Миттєво конвертуйте файли на своєму пристрої.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли DEFLATE, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли DEFLATE, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
78 9C / 78 01 / 78 DAASCII-УЯВЛЕННЯ: xœ / x. / xÚ
Стандартизація: IETF RFC 1951 / RFC 1950 (zlib)
Технічні характеристики
| Архітектура контейнера | Сирий бітовий потік RFC 1951 або потік з обгорткою zlib RFC 1950 із 2-байтним заголовком та контрольною сумою Adler-32 |
| Стиснення | Ковзний словник LZ77 (вікно до 32 КБ) у поєднанні з динамічним/статичним ентропійним кодуванням Хаффмана |
| Порядок байтів (Endianness) | Порядок пакування бітів зі зворотним порядком байтів (Little-Endian) |
| Колірні простори | Не застосовується (потік стиснення даних) |
| Канали та структура | Сирий потік бінарних або текстових даних |
| Максимальні розміри | Необмежена довжина потоку |
| Прозорість | 100% точне відтворення даних без втрат |
| Потокове та прогресивне завантаження | Блоковий бітовий потік підтримує довільне безперервне потокове передавання байтів |
Технічна матриця порівняння: DEFLATE проти конкурентів
| Технічний атрибут | DEFLATE (Поточний) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| Стандартизація | IETF RFC 1951 (Сирий) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| Ковзне вікно | Максимум 32 кілобайти | Максимум 32 кілобайти | До 16 мегабайт | До 2 гігабайт |
| Режим контрольної суми | Adler-32 (в обгортці zlib) | CRC-32 (в обгортці gzip) | Відсутній вбудований у потік | xxHash64 (швидкий 64-бітний хеш) |
| Щоденне використання | Зображення PNG, потоки PDF, ZIP | Unix .tar.gz, HTTP gzip | Вебшрифти (WOFF2), HTTP br | Ядро Linux, бази даних, ігри |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Розпакування завершується помилкою 'Z_DATA_ERROR: incorrect data check'.
Першопричина: Невідповідність 4-байтової контрольної суми Adler-32 в кінці потоку, оберненого в zlib.
Відновлення: Обійдіть перевірку Adler-32 за допомогою сирого inflate або відновіть за допомогою File2File Deflate Recovery.
Аналіз безпеки та векторів атак на парсери
Аналізатори DEFLATE повинні суворо перевіряти побудову кодів дерев Хаффмана, щоб запобігти запису вказівників за межі буфера.
Відомі вектори атак
- Неповні або перевищені таблиці довжини бітів динамічного дерева Хаффмана, що призводять до недійсного зчитування пам'яті.
- Бомба розпакування (zip-бомба), що розширює крихітні корисні дані до сотень гігабайтів оперативної пам'яті.
- Перевищення буфера під час перевірки кодів відстані ковзного вікна.
Захисні найкращі практики: Застосовуйте обмеження на максимальний виділений обсяг пам'яті та коефіцієнт розширення під час розпакування.
Історичне походження та віхи
Головні переваги та плюси
- Беззаперечний глобальний стандарт: реалізований апаратно, в операційних системах та будь-яких середовищах виконання програм.
- Дизайн без патентів і роялті гарантує відкритий доступ у всій комп'ютерній індустрії.
- Швидке розпакування з мінімальним обсягом пам'яті (потребує лише 32 КБ пам'яті ковзного вікна).
Технічні обмеження та мінуси
- Ковзне вікно обмежене 32 КБ, що знижує ефективність стиснення на великих файлах із віддаленими повторюваними даними.
- Нижчі коефіцієнти стиснення сучасних вебданих порівняно з новішими алгоритмами, такими як Brotli та Zstandard.
- Сирі потоки DEFLATE не містять метаданих самоопису чи контейнерної обгортки без обгорток zlib або gzip.
Цікаві технічні факти
- Філ Кац винайшов DEFLATE після судового позову від Unisys щодо запатентованого алгоритму LZW, який використовувався в ранніх утилітах PKARC.
- Стандартні байти заголовка zlib '78 9C' вказують на стандартне стиснення, '78 01' - на низьке, а '78 DA' - на максимальне стиснення.
- Кожне зображення PNG на Землі використовує DEFLATE для стиснення своїх піксельних блоків IDAT.
Поширені технічні запитання
Яка різниця між DEFLATE, zlib та gzip?
DEFLATE - це сирий алгоритм стиснення (RFC 1951). Zlib огортає DEFLATE за допомогою 2-байтового заголовка та контрольної суми Adler-32 (RFC 1950). Gzip огортає DEFLATE метаданими файлу та контрольною сумою CRC-32 (RFC 1952).
Чому PNG використовує DEFLATE?
Формат PNG було створено в 1995 році як заміну GIF без використання запатентованих алгоритмів LZW, обравши для стиснення відкритий і вільний від роялті DEFLATE.
Як розпакувати сирий файл .deflate?
Ви можете розпакувати сирі потоки байтів DEFLATE або zlib в початкові нестиснені файли за допомогою File2File.app безпосередньо у своєму веббраузері.
Пов'язані пари конвертації DEFLATE
Перетворення потоку GZIP у сирий формат DEFLATE знімає зовнішню оболонку файлу та метадані заголовка, залишаючи лише стиснені дані для спеціалізованих мережевих протоколів та низькорівневих архівів.
Конвертація сирого потоку DEFLATE у потік GZIP загортає стиснене навантаження всередину стандартного контейнера із заголовками метаданих, щоб операційні системи та веб-інструменти могли його належним чином прочитати.