Необработанный DEFLATE (.deflate)
IETF СтандартDEFLATE - это самый распространенный алгоритм сжатия данных без потерь в истории вычислительной техники, который на протяжении более трех десятилетий лежит в основе архивов ZIP, потоков GZIP, изображений PNG и веб-сжатия HTTP.
Конвертировать из GZIP в DEFLATE
Бесплатный конвертер из GZIP в DEFLATE прямо в браузере. Конвертируйте файлы мгновенно на вашем устройстве.
Анализ и метаданные
Операционные системы и анализаторы файлов идентифицируют файлы DEFLATE по начальной двоичной последовательности байтов:
Сигнатура заголовка на уровне байтов (Magic Bytes)
Операционные системы и анализаторы файлов идентифицируют файлы DEFLATE по начальной двоичной последовательности байтов:
HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):
78 9C / 78 01 / 78 DAПРЕДСТАВЛЕНИЕ ASCII: 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, базы данных, игры |
Типичные режимы повреждения и руководство по восстановлению в HEX
Ошибка распаковки 'Z_DATA_ERROR: incorrect data check'.
Первопричина: Несоответствие 4-байтовой контрольной суммы Adler-32 в конце потока, обернутого в zlib.
Восстановление: Пропустите проверку Adler-32 с помощью необработанного алгоритма inflate или восстановите файл с помощью функции восстановления Deflate в File2File.
Анализ безопасности и векторы атак на парсер
Анализаторы 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 упаковывает сжатые полезные данные в стандартный контейнер с заголовками метаданных, чтобы операционные системы и веб-инструменты могли правильно их прочитать.