aspose.info
DE

POSTLEITZAHL

Aktualisiert

Was ist eine ZIP-Datei?

Eine Datei mit der Erweiterung .zip ist ein Archiv, das eine oder mehrere Dateien oder Verzeichnisse enthalten kann. Das Archiv kann auf die enthaltenen Dateien komprimiert werden, um die Größe der ZIP-Datei zu reduzieren. Das ZIP-Dateiformat wurde bereits im Februar 1989 von Phil Katz veröffentlicht, um die Archivierung von Dateien und Ordnern zu erreichen. Das Format wurde Teil des Dienstprogramms PKZIP, das von PKWARE, Inc. erstellt wurde. Unmittelbar nach der Verfügbarkeit von verfügbaren Spezifikationen haben viele Unternehmen das ZIP-Dateiformat zu einem Teil ihrer Softwareprogramme gemacht, darunter Microsoft (seit Windows 7), Apple (Mac OS X) und viele andere.

Kurze Geschichte des ZIP-Dateiformats

Die Geschichte des ZIP-Dateiformats geht zurück auf die Klage von System Enhancement Associates (SEA) gegen PKWARE wegen der Verwendung seines ARC-Dienstprogramms ohne Genehmigungen für seine Marke und die Urheberrechte des Erscheinungsbilds und der Benutzeroberfläche des Produkts. Zuvor hatte Phil Katz den Quellcode von SEA neu geschrieben und PKXARC, einen ARC-Extraktor, und PKARC, einen Dateikomprimierer, als Freeware für MS-DOS-basierte Systeme veröffentlicht. Als PKWARE den Rechtsstreit verlor, konnte es nichts mehr verwenden, was mit ARC zu tun hatte. Hier entstand die Erstellung einer neuen Dateikomprimierung namens ZIP, die Teil des PKZIP-Dienstprogramms bei PKWARE, Inc. wurde.

Katz veröffentlichte die Spezifikationen des ZIP-Dateiformats für die Öffentlichkeit, behielt jedoch die Eigentumsrechte an seinem Komprimierungs- und Extraktionsprogramm, dh PKZIP. Das ZIP-Komprimierungssystem war (und ist) in der Lage, Dateien in einem Ordner mithilfe eines 32-Bit-Algorithmus zur zyklischen Redundanzprüfung (CRC) zu archivieren, um die Datei zu komprimieren Größen. Im Gegensatz zu ARC enthielten .ZIP-Ordner eine Verzeichnisdatei, die die Rolle eines Codebuchs eines Kryptografen spielte und die Informationen enthielt, die zum Rendern der komprimierten Dateien erforderlich waren.

Unterstützte Komprimierungsmethoden in ZIP

Gemäß den Spezifikationen des .ZIP-Dateiformats werden die folgenden Komprimierungsmethoden unterstützt.

  • Store - impliziert keine Komprimierung
  • Schrumpfen
  • Reduktion (Dies impliziert Kompressionsfaktoren von Stufe 1 bis Stufe 4)
  • Implodieren
  • Entleeren
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd-Version I, Rev 1

DEFLATE ist die häufig verwendete Komprimierungsmethode, bei der es sich um einen verlustfreien Datenkomprimierungsalgorithmus handelt, der eine Kombination aus LZ77- und Huffman-Codierung verwendet und in RFC 1951 detailliert beschrieben wird.

ZIP-Dateiformatspezifikationen

ZIP-Dateien können mehrere Dateien mit unterschiedlichen Komprimierungstechniken speichern und gleichzeitig das Speichern einer Datei ohne Komprimierung unterstützen. Jede Datei wird einzeln gespeichert/komprimiert, was hilft, sie zu extrahieren oder neue hinzuzufügen, ohne das gesamte Archiv zu komprimieren oder zu dekomprimieren.

Allgemeines ZIP-Dateiformat

Jede Zip-Datei ist folgendermaßen aufgebaut:

ZIP-Dateiformat
Lokaler Dateikopf 1
Dateidaten 1
Datendeskriptor 1
Lokaler Dateikopf 2
Dateidaten 2
Datendeskriptor 2
….
….
Lokaler Dateikopf N
Dateidaten N
Datendeskriptor N
Entschlüsselungs-Header archivieren
Extradatensatz archivieren
Zentrales Verzeichnis

Das ZIP-Dateiformat verwendet einen 32-Bit-CRC-Algorithmus für Archivierungszwecke. Zum Rendern der komprimierten Dateien enthält ein ZIP-Archiv an seinem Ende ein Verzeichnis, das den Eintrag der enthaltenen Dateien und deren Speicherort in der Archivdatei enthält. Es spielt somit die Rolle der Codierung zum Einkapseln von Informationen, die zum Rendern der komprimierten Dateien erforderlich sind. ZIP-Leser verwenden das Verzeichnis, um die Liste der Dateien zu laden, ohne das gesamte ZIP-Archiv zu lesen. Das Format speichert doppelte Kopien der Verzeichnisstruktur, um einen besseren Schutz vor Datenverlust zu bieten.

Jede Datei in einem ZIP-Archiv wird als einzelner Eintrag dargestellt, wobei jeder Eintrag aus einem lokalen Dateikopf gefolgt von den komprimierten Dateidaten besteht. Das Verzeichnis am Ende des Archivs enthält die Verweise auf alle diese Dateieinträge. ZIP-Dateileser sollten vermeiden, die lokalen Dateikopfzeilen zu lesen, und alle Arten von Dateilisten sollten aus dem Verzeichnis gelesen werden. Dieses Verzeichnis ist die einzige Quelle für gültige Dateieinträge im Archiv, da Dateien auch gegen Ende des Archivs angehängt werden können. Wenn ein Lesegerät lokale Kopfzeilen eines ZIP-Archivs von Anfang an liest, liest es daher möglicherweise auch ungültige (gelöschte) Einträge, die nicht Teil des Verzeichnisses sind, das aus dem Archiv gelöscht wird.

Die Reihenfolge der Dateieinträge im zentralen Verzeichnis muss nicht mit der Reihenfolge der Dateieinträge im Archiv übereinstimmen.

ZIP-Dateieinträge

Die Einträge in der ZIP-Datei sind hintereinander angeordnet, wobei jeder Eintrag besteht aus:

  • Lokaler Dateikopf
  • Optionale zusätzliche Datenfelder
  • Benutzerdaten (optional komprimiert/optional verschlüsselt)

Der Local File Header jedes Eintrags enthält Informationen über die Datei, wie z. B. Kommentar, Dateigröße und Dateiname. Die zusätzlichen Datenfelder (optional) können Informationen für Erweiterungsoptionen des ZIP-Formats aufnehmen.

Lokaler Dateikopf

Der Local File Header hat eine spezifische Feldstruktur, die aus Multi-Byte-Werten besteht. Alle Werte werden in Little-Endian-Byte-Reihenfolge gespeichert, wobei die Feldlänge die Länge in Bytes zählt. Alle Strukturen in einer ZIP-Datei verwenden 4-Byte-Signaturen für jeden Dateieintrag. Das Ende der zentralen Verzeichnissignatur ist 0x06054b50 und kann anhand einer eigenen eindeutigen Signatur unterschieden werden. Es folgt die Reihenfolge der im Local File Header gespeicherten Informationen.

OffsetBytesBeschreibung
04Lokale Datei-Header-Signatur # 0x04034b50 (als Little-Endian-Zahl gelesen)
42Zum Extrahieren benötigte Version (Minimum)
62Allzweck-Bit-Flag
82Komprimierungsverfahren
102Zeitpunkt der letzten Änderung der Datei
122Datum der letzten Änderung der Datei
144CRC-32
184Komprimierte Größe
224Unkomprimierte Größe
262Dateinamenlänge (n)
282Zusätzliche Feldlänge (m)
30nDateiname
30+nmZusätzliches Feld

Header der zentralen Verzeichnisdatei

OffsetBytesBeschreibung
04Header-Signatur der zentralen Verzeichnisdatei # 0x02014b50
42Version erstellt von
62Zum Extrahieren benötigte Version (mindestens)
82Allzweck-Bit-Flag
102Komprimierungsverfahren
122Zeitpunkt der letzten Änderung der Datei
142Datum der letzten Änderung der Datei
164CRC-32
204Komprimierte Größe
244Unkomprimierte Größe
282Dateinamenlänge (n)
302Zusätzliche Feldlänge (m)
322Dateikommentarlänge (k)
342Plattennummer, wo die Datei beginnt
362Interne Dateiattribute
384Externe Dateiattribute
424Relativer Offset des lokalen Dateiheaders. Dies ist die Anzahl von Bytes zwischen dem Beginn der ersten Platte, auf der die Datei vorkommt, und dem Beginn des lokalen Dateiheaders. Dadurch kann Software, die das zentrale Verzeichnis liest, die Position der Datei innerhalb der ZIP-Datei finden.
46nDateiname
46+nmZusätzliches Feld
46+n+mkDateikommentar

Ende des zentralen Verzeichniseintrags

OffsetBytesBeschreibung
04Ende der zentralen Verzeichnissignatur # 0x06054b50
42Nummer dieser Festplatte
62Festplatte, auf der das zentrale Verzeichnis beginnt
82Anzahl der zentralen Verzeichniseinträge auf dieser Platte
102Gesamtzahl der Einträge im zentralen Verzeichnis
124Größe des zentralen Verzeichnisses (Bytes)
164Offset des Beginns des zentralen Verzeichnisses, relativ zum Beginn des Archivs
202Kommentarlänge (n)
22nKommentar

Verweise

Siehe auch