Открыть сервис

Формат ZIP

ZIP — это формат архивации файлов и сжатия данных без потерь, поддерживающий упаковку одного или нескольких файлов и папок в один архивный файл с расширением .zip. Формат использует алгоритмы сжатия (преимущественно Deflate) и позволяет объединять файлы, уменьшать их общий объём, а также шифровать содержимое. ZIP является одним из наиболее распространённых и универсальных форматов архивации, поддерживаемым большинством операционных систем и программ-архиваторов.

История

Разработка и появление

Формат ZIP был создан американским программистом Филом Кацем (Phil Katz) в 1989 году для своей программы PKZIP. Кац стремился создать более эффективный и быстрый алгоритм сжатия, чем существовавший на тот момент формат ARC, который использовал сжатие по методу Лемпеля — Зива — Велча (LZW). В ответ на судебные иски со стороны компании System Enhancement Associates (SEA), владевшей правами на ARC, Кац разработал собственный формат, который не нарушал чужих патентов. Первая версия PKZIP 1.0 вышла в 1989 году и быстро завоевала популярность благодаря высокой степени сжатия и скорости работы.

Открытие спецификации и распространение

В 1990 году Фил Кац опубликовал спецификацию формата ZIP в открытом доступе, что позволило другим разработчикам создавать совместимые архиваторы. Это решение способствовало массовому распространению формата. В 1993 году компания Info-ZIP выпустила свободные реализации утилит Zip и UnZip, которые стали основой для поддержки ZIP в операционных системах Unix и Linux. В 1996 году компания Microsoft включила поддержку ZIP в операционную систему Windows 98 через компонент «Сжатые папки» (Compressed Folders), что сделало формат стандартом де-факто для обмена файлами в среде Windows.

Современное состояние

В 2000-х годах формат ZIP был расширен: добавлена поддержка шифрования AES (Advanced Encryption Standard), Unicode-имён файлов и многотомных архивов. В 2011 году спецификация была стандартизирована как ISO/IEC 21320-1:2015 «Information technology — Document Container File — Part 1: Core». Несмотря на появление более эффективных форматов (7z, RAR, tar.gz), ZIP остаётся наиболее совместимым и широко поддерживаемым форматом архивации.

Структура формата

Общая архитектура

ZIP-архив представляет собой последовательность записей, каждая из которых описывает один файл или папку. Структура состоит из трёх основных частей:

  1. Локальные заголовки файлов (Local File Headers) — содержат метаданные каждого файла: имя, размер до и после сжатия, метод сжатия, CRC32-контрольная сумма, а также необязательные поля (дата, атрибуты, комментарии).
  2. Сжатые данные (Compressed Data) — непосредственно содержимое файла, сжатое выбранным алгоритмом.
  3. Центральный каталог (Central Directory) — сводная таблица, расположенная в конце архива, которая содержит информацию обо всех файлах, включая смещения к их локальным заголовкам. Это позволяет быстро читать оглавление архива без полного сканирования.
  4. Конец центрального каталога (End of Central Directory Record, EOCD) — маркер конца архива, содержащий общее количество файлов, размер центрального каталога и смещение к его началу.

Методы сжатия

Формат ZIP поддерживает несколько методов сжатия, из которых наиболее распространены:

  • Store (без сжатия) — файл копируется в архив без изменений, используется для быстрой упаковки.
  • Deflate — основной алгоритм, основанный на комбинации LZ77 (скользящее окно) и кодирования Хаффмана. Обеспечивает хорошее сжатие для большинства типов данных.
  • Deflate64 — расширение Deflate с увеличенным размером скользящего окна (64 КБ вместо 32 КБ), даёт незначительное улучшение сжатия.
  • BZIP2 — алгоритм на основе преобразования Барроуза — Уилера (BWT) и кодирования Хаффмана, обеспечивает более высокую степень сжатия, чем Deflate, но медленнее.
  • LZMA (Lempel-Ziv-Markov chain algorithm) — алгоритм, используемый в формате 7z, обеспечивает высокую степень сжатия, но требует больше вычислительных ресурсов.
  • PPMd (Prediction by Partial Matching) — контекстно-зависимый алгоритм, эффективный для текстовых данных.

Шифрование и защита

ZIP поддерживает два основных метода шифрования:

  • Традиционное шифрование (ZipCrypto) — устаревший метод, основанный на потоковом шифре с использованием пароля. Уязвим для атак с использованием известного открытого текста (known-plaintext attack).
  • Шифрование AES — современный стандарт, поддерживающий ключи длиной 128, 192 и 256 бит. Для хранения ключа используется алгоритм PBKDF2 (Password-Based Key Derivation Function 2) с настраиваемым числом итераций.

Применение

Операционные системы

Встроенная поддержка ZIP присутствует в большинстве современных операционных систем:

  • Windows — начиная с Windows 98, функция «Сжатые папки» позволяет создавать и распаковывать ZIP-архивы без установки сторонних программ.
  • macOS — встроенный архиватор (Archive Utility) поддерживает ZIP по умолчанию.
  • Linux — большинство дистрибутивов включают утилиты zip и unzip, а также графические оболочки (File Roller, Ark).
  • Android и iOS — многие файловые менеджеры и приложения (например, Files by Google, Documents by Readdle) поддерживают ZIP.

Программное обеспечение

Существует множество сторонних архиваторов, расширяющих возможности работы с ZIP:

  • 7-Zip — свободный архиватор с открытым исходным кодом, поддерживающий ZIP, а также собственные форматы 7z и другие.
  • WinRAR — коммерческий архиватор, поддерживающий ZIP наряду с собственным форматом RAR.
  • WinZip — один из первых коммерческих архиваторов, популяризировавший формат ZIP.
  • PeaZip — свободный кроссплатформенный архиватор с поддержкой множества форматов.

Веб и передача данных

ZIP широко используется для:

  • Распространения программного обеспечения — установочные пакеты, библиотеки, документация часто упаковываются в ZIP.
  • Электронной почты — вложения в виде ZIP-архивов позволяют обходить ограничения на размер и типы файлов.
  • Веб-сайтов — загрузка нескольких файлов одним архивом, резервное копирование.
  • Облачных хранилищ — Google Drive, Dropbox, Яндекс.Диск поддерживают предпросмотр содержимого ZIP-архивов без распаковки.

Достоинства и недостатки

Достоинства

  • Универсальность — поддержка практически во всех операционных системах и программах.
  • Простота — легко создаётся и распаковывается без специальных знаний.
  • Скорость — алгоритм Deflate обеспечивает быстрое сжатие и распаковку.
  • Совместимость — старый формат, совместимый с архиваторами, созданными десятилетия назад.
  • Поддержка многотомных архивов — разбивка большого архива на несколько файлов (например, .z01, .z02, .zip).

Недостатки

  • Степень сжатия — уступает более современным форматам (7z, RAR, tar.gz с bzip2 или lzma).
  • Отсутствие встроенного восстановления — при повреждении архива восстановить данные сложнее, чем в RAR (у которого есть функция восстановления).
  • Ограничения на размер — классический ZIP поддерживает файлы размером до 4 ГБ (2^32 байт) и архивы до 4 ГБ (без расширения ZIP64). Современные реализации поддерживают ZIP64, снимающий эти ограничения.
  • Уязвимость традиционного шифрования — ZipCrypto может быть взломан при определённых условиях.

Интересные факты

  • Название «ZIP» было выбрано Филом Кацем как отсылка к скорости: «zip» означает «быстро двигаться» или «застёгивать молнию».
  • В 1990 году Фил Кац был признан виновным в нарушении авторских прав на формат ARC, что и подтолкнуло его к созданию ZIP.
  • Алгоритм Deflate, используемый в ZIP, также лежит в основе формата PNG (Portable Network Graphics) и GZip (сжатие в Unix).
  • В 2004 году была обнаружена уязвимость в традиционном шифровании ZIP (ZipCrypto), позволяющая восстановить пароль при наличии зашифрованного и незашифрованного файла в одном архиве.
  • Формат ZIP используется в качестве контейнера для файлов в форматах Java JAR, Android APK, OpenDocument (ODT, ODS), а также в некоторых игровых движках (например, Unity).

Источники

  • Спецификация формата ZIP (APPNOTE.TXT) — PKWARE Inc., версия 6.3.10.
  • ISO/IEC 21320-1:2015 «Information technology — Document Container File — Part 1: Core».
  • Кац, Фил. «PKZIP User's Manual», 1989.
  • Документация проекта Info-ZIP (info-zip.org).
  • Статья «ZIP (file format)» в английской Википедии (версия от 2024 года).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →