Конвертер Deflate в GZIP
Конвертация потока Raw DEFLATE в поток GZIP упаковывает сжатые полезные данные в стандартный контейнер с заголовками метаданных, чтобы операционные системы и веб-инструменты могли правильно их прочитать.
Сравнение форматов и технические характеристики
| Характеристика | DEFLATE | GZIP |
|---|---|---|
| MIME-тип | application/ | application/ |
| Тип | Сырой поток DEFLATE | контейнер потока DEFLATE |
| Сжатие | LZ77 + кодирование Хаффмана | DEFLATE (RFC 1951) |
| Стандартная спецификация | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| Сигнатура файла (Magic Bytes) | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
Обзор формата и областей применения
Потоки данных Raw DEFLATE содержат сжатые байты без каких-либо заголовков файлов или концевых контрольных сумм. Веб-браузеры и сетевые инструменты часто испытывают трудности с обработкой этих необрамленных потоков, так как в них отсутствуют такие метаданные, как оригинальные имена файлов, метки времени модификации или идентификаторы операционных систем. Упаковка этих необработанных данных в контейнер GZIP решает эти проблемы совместимости. Разработчики сталкиваются с потоками raw DEFLATE в сетевых протоколах, таких как сжатие HTTP, фрагменты изображений PNG и архивы ZIP. Когда эти потоки необходимо сохранить в виде автономных файлов для инструментов командной строки или стандартных веб-загрузок, инженеры конвертируют их в формат GZIP. Это гарантирует, что утилиты распаковки быстро распознают тип файла и извлекут содержимое без вызова ошибок.
Технические спецификации и разбор кодеков
Сырой DEFLATE представляет собой битовый поток RFC 1951, использующий поиск совпадений LZ77 и кодирование Хаффмана без обрамляющих заголовков или фиксированной сигнатуры. MIME-тип application/zlib обозначает поток DEFLATE в оболочке zlib согласно RFC 1950, а не сырой DEFLATE. GZIP (application/gzip) упаковывает поток DEFLATE в контейнер с заголовком, начинающимся с байтов 1F 8B, и завершающей частью с контрольной суммой CRC32 и размером несжатых данных по модулю 2^32.
Совместимость с ОС и браузерами
Потоки GZIP широко совместимы с современными операционными системами, включая Linux, macOS и Windows. Инструменты командной строки, такие как gzip, gunzip и 7-Zip, читают встроенными средствами файлы GZIP. Веб-браузеры автоматически обрабатывают распаковку GZIP при получении HTTP-ответов от серверов, хотя для raw DEFLATE часто требуется пользовательская логика парсера внутри окружений JavaScript или модулей WebAssembly.
Полезная информация
Всегда проверяйте, правильно ли Ваш инструмент распаковки читает трейлер GZIP, так как поврежденные концевые контрольные суммы CRC32 приведут к прерыванию работы инструментов извлечения, даже если базовые полезные данные DEFLATE остались неповрежденными.
Часто задаваемые вопросы
Как конвертировать поток Raw DEFLATE в поток GZIP без потери качества?
Оба формата используют сжатие без потерь на основе абсолютно того же алгоритма DEFLATE. Конвертация между ними просто добавляет заголовки контейнера и контрольные суммы вокруг существующих сжатых байтов, а это значит, что в процессе упаковки не происходит никакой потери данных.
В чем разница между потоком Raw DEFLATE и потоком GZIP?
Raw DEFLATE содержит только сжатые данные без идентифицирующих заголовков и трейлеров. Поток GZIP представляет собой стандартизированный файловый контейнер, который добавляет к исходным данным DEFLATE 10-байтовый заголовок и 8-байтовый трейлер с контрольной суммой для хранения метаданных и обнаружения ошибок.