Begriff
Zip (Compression)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Wenn du in den Urlaub fährst, setzt du dich auf deinen Koffer, damit mehr reinpasst.
Zip macht das Gleiche mit Daten.
Es sucht nach Wiederholungen.
Satz: "Banane Banane Banane". (21 Zeichen).
Zip macht daraus: "Banane x3". (9 Zeichen).
Das ist verlustfreie Kompression. Wenn du es auspackst (Unzip), ist das Original byte-genau wieder da.
Zusätzlich ist Zip ein Container (Archiv). Es klebt 100 Dateien zu einer einzigen .zip Datei zusammen.
Merksatz: Ein weit verbreitetes Dateiformat zur verlustfreien Datenkompression und Archivierung, das mehrere Dateien in einer einzigen komprimierten Datei zusammenfasst.
In Windows: Rechtsklick -> Senden an -> Zip-komprimierter Ordner. In Linux:
- Packen:
zip archiv.zip datei1.txt datei2.txt - Entpacken:
unzip archiv.zip
Wichtig: Word-Dateien (.docx) und Java-Dateien (.jar) sind eigentlich nur umbenannte Zip-Dateien. Du kannst sie in .zip umbenennen und reinschauen!
1. Deflate Algorithmus
Zip nutzt meistens Deflate (Kombination aus LZ77 und Huffman Coding).
- LZ77: Ersetzt wiederholte Wörter durch "Rückwärts-Referenzen" (Zeiger auf das erste Vorkommen).
- Huffman: Ersetzt häufige Buchstaben ('e') durch kurze Bits (01) und seltene ('x') durch lange Bits (10011).
2. Zip Bomb (42.zip)
Ein Angriff. Eine 42 Kilobyte große Zip-Datei. Wenn man sie entpackt, enthält sie 16 weitere Zips. Die enthalten wieder 16 Zips. 5 Ebenen tief. Ganz unten sind Terabytes an Nullen. Ergebnis: Dein Virenscanner oder Server entpackt es, der RAM läuft voll (Petabytes!), System Crash. Primitiver DoS-Angriff.
3. Zip Slip (Directory Traversal)
Ein Sicherheitsfehler in vielen Entpack-Programmen.
Eine Zip-Datei kann Dateinamen enthalten wie ../../../../etc/passwd.
Wenn der Entpacker dumm ist, schreibt er die Datei nicht in den Ordner, sondern bricht aus und überschreibt kritische Systemdateien.
1. Das "Central Directory" (Warum Zip schnell ist)
Eine Zip-Datei baut man von hinten nach vorn auf.
Am Ende der Datei liegt das Central Directory. Das ist ein Inhaltsverzeichnis: "Datei A liegt bei Byte 100, Datei B bei Byte 5000."
Wenn du eine einzelne Datei aus einem 10 GB großen Zip entpacken willst, muss der Computer nicht die ganze Datei lesen (wie bei .tar.gz). Er springt direkt ans Ende, liest das Inhaltsverzeichnis und springt dann exakt an die Stelle, wo die gewünschte Datei liegt. Das nennt man Random Access.
2. DEFLATE64 und Zip64
Das originale Zip-Format aus den 80ern hatte Grenzen:
- Maximal 4 GB pro Datei.
- Maximal 65.535 Dateien pro Archiv. Moderne Systeme nutzen Zip64. Es hebt diese Grenzen auf (Theoretisch bis zu 16 Exabytes). Problem: Wenn du ein Zip64-Archiv an jemanden mit einem uralten Windows-PC oder einem sehr billigen Microcontroller schickst, kann dieser die Datei eventuell nicht öffnen, da er nur das alte 32-Bit Zip-Format versteht.
3. Dictionary-Size & Kompressionstiefe
Warum kann man beim Zippen "Normal", "Fast" oder "Ultra" wählen? Es ändert die Größe des Dictionaries. Der Algorithmus sucht nach Mustern. Ein größeres Dictionary braucht mehr Arbeitsspeicher, kann aber Muster über eine längere Distanz finden. Beispiel: Ein Wort wiederholt sich auf Seite 1 und Seite 500.
- "Fast" sieht nur 32 KB zurück -> findet das Muster nicht.
- "Ultra" sieht 64 MB zurück -> findet das Muster und spart massiv Platz. Das Packen dauert bei "Ultra" jedoch 10x länger, während das Entpacken fast immer gleich schnell bleibt.
Quick-Check
Zip vs. Tar?
Tar klebt Dateien nur zusammen (Tape Archive), aber komprimiert nicht. Gzip (.tar.gz) komprimiert dann den ganzen Tarball. Zip komprimiert jede Datei einzeln. Gzip komprimiert oft besser (weil es Redundanz zwischen Dateien findet), Zip kann dafür einzelne Dateien schneller entpacken (Random Access).Passwortschutz?
Standard Zip-Verschlüsselung (ZipCrypto) ist extrem unsicher (in Minuten knackbar). Nutze AES-256 (Option in modernen Zippern wie 7-Zip), das ist sicher.Warum werden JPEGs nicht kleiner beim Zippen?
Weil JPEG schon komprimiert ist. Zip kann Chaos (komprimierte Daten) nicht weiter ordnen. Es wird oft sogar größer (wegen Header-Overhead).