Суров DEFLATE (.deflate)
IETF СтандартDEFLATE е най-разпространеният алгоритъм за компресиране без загуба на данни в историята на изчислителната техника, захранващ ZIP архиви, GZIP потоци, PNG изображения и уеб компресия по HTTP в продължение на повече от три десетилетия.
Конвертиране на GZIP към DEFLATE
Безплатен конвертор от GZIP към DEFLATE в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Инспектиране и метаданни
Операционните системи и файловите анализатори идентифицират DEFLATE файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на хедъра (Magic Bytes)
Операционните системи и файловите анализатори идентифицират DEFLATE файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
78 9C / 78 01 / 78 DAASCII ПРЕДСТАВЯНЕ: xœ / x. / xÚ
Стандартизация: IETF RFC 1951 / RFC 1950 (zlib)
Технически спецификации
| Контейнерна архитектура | Raw RFC 1951 bitstream or RFC 1950 zlib-wrapped stream with 2-byte header and Adler-32 checksum |
| Компресия | LZ77 sliding dictionary (up to 32 KB window) combined with dynamic/static Huffman entropy coding |
| Поредност на байтовете (Endianness) | Little-Endian bit-packing order |
| Цветови пространства | N/A (Data Compression Stream) |
| Канали и структура | Raw binary or text data stream |
| Максимални размери | Unbounded stream length |
| Прозрачност | 100% bit-exact lossless data reproduction |
| Стрийминг и прогресивно зареждане | Block-based bitstream supports arbitrary continuous byte streaming |
Техническа сравнителна матрица: 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 бомба), разширяваща малки полезни данни в стотици гигабайти RAM.
- Прекомерно четене от буфера (buffer over-read) при невалидирани кодове за разстояние на плъзгащия се прозорец.
Защитни добри практики:
Исторически произход и етапи
Основни предимства и плюсове
- Безспорният глобален стандарт: реализиран в хардуера, операционните системи и всяка една програмна среда за изпълнение.
- Дизайн без патенти и лицензионни такси, гарантиращ отворен достъп в цялата компютърна индустрия.
- Бърза декомпресия с минимален отпечатък в паметта (изисква само 32 KB памет за плъзгащ се прозорец).
Технически ограничения и минуси
- Плъзгащият се прозорец е ограничен до 32 KB, което намалява ефективността на компресията при големи файлове с далечни повтарящи се данни.
- По-ниски коефициенти на компресия при съвременни уеб ресурси в сравнение с по-нови алгоритми като 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 поток обвива компресирания полезен товар в стандартен контейнер със заглавни метаданни, така че операционните системи и уеб инструментите да могат да го четат правилно.