aspose.info
IT

CERNIERA LAMPO

Aggiornato

Che cos’è un file ZIP?

Un file con estensione .zip è un archivio che può contenere uno o più file o directory. L’archivio può avere una compressione applicata ai file inclusi per ridurre le dimensioni del file ZIP. Il formato di file ZIP è stato reso pubblico nel febbraio 1989 da Phil Katz per aver ottenuto l’archiviazione di file e cartelle. Il formato è stato inserito nell’utilità PKZIP, creata da PKWARE, Inc. Subito dopo la disponibilità di specifiche disponibili, molte aziende hanno inserito il formato di file ZIP nelle loro utilità software, tra cui Microsoft (da Windows 7), Apple (Mac OS X) e molti altri.

Breve storia del formato di file ZIP

La storia del formato del file ZIP risale all’evento legale intentato da System Enhancement Associates (SEA) contro PKWARE per aver utilizzato la sua utility ARC senza autorizzazioni per il suo marchio e i diritti d’autore dell’aspetto del prodotto e dell’interfaccia utente. In precedenza, Phil Katz, aveva riscritto il codice sorgente di SEA e rilasciato PKXARC, un estrattore ARC, e PKARC, un compressore di file, come freeware per sistemi basati su MS-DOS. Perdendo nella causa, PKWARE non poteva più usare tutto ciò che riguardava ARC. È qui che è nata la creazione di una nuova compressione di file, denominata ZIP, che è stata resa parte dell’utilità PKZIP presso PKWARE, Inc.

Katz ha rilasciato le specifiche del formato del file ZIP nel pubblico dominio, pur mantenendo i diritti di proprietà sulla sua utility di compressione ed estrazione, ad esempio PKZIP. Il sistema di compressione ZIP era (ed è) in grado di archiviare i file in una cartella per mezzo di un algoritmo di controllo di ridondanza ciclico a 32 bit (CRC) per comprimere i file taglie. A differenza di ARC, le cartelle .ZIP includevano un file di directory che svolgeva il ruolo di libro di codici di un crittografo, contenente le informazioni necessarie per il rendering dei file compressi.

Metodi di compressione supportati in ZIP

In base alle specifiche del formato file .ZIP, sono supportati i seguenti metodi di compressione.

  • Store - non implica alcuna compressione
  • Restringersi
  • Riduzione (Ciò implica fattori di compressione che vanno dal livello 1 al livello 4)
  • Implodere
  • Sgonfia
  • Sgonfia64
  • BZIP2
  • LZMA (EFS)
  • Pacchetto Wav
  • PPMd versione I, Rev 1

DEFLATE è il metodo di compressione comunemente usato che è un algoritmo di compressione della data senza perdita di dati che utilizza una combinazione della codifica LZ77 e Huffman ed è dettagliato in RFC 1951.

Specifiche del formato file ZIP

I file ZIP hanno la capacità di archiviare più file utilizzando diverse tecniche di compressione mentre allo stesso tempo supportano la memorizzazione di un file senza alcuna compressione. Ogni file viene archiviato/compresso individualmente, il che aiuta a estrarli o aggiungerne di nuovi, senza applicare compressione o decompressione all’intero archivio.

Formato file ZIP complessivo

Ogni file Zip è strutturato nel modo seguente:

ZIP Formato file
Intestazione file locale 1
Dati file 1
Descrittore dati 1
Intestazione file locale 2
Dati file 2
Descrittore dati 2
….
….
Intestazione file locale N
Dati file n
Descrittore dati N
Intestazione di decrittografia dell’archivio
Archivia record di dati aggiuntivi
Direttorio centrale

Il formato di file ZIP utilizza l’algoritmo CRC a 32 bit a scopo di archiviazione. Per eseguire il rendering dei file compressi, un archivio ZIP contiene una directory alla sua estremità che conserva la voce dei file contenuti e la loro posizione nel file di archivio. Pertanto, svolge il ruolo di codifica per incapsulare le informazioni necessarie per il rendering dei file compressi. I lettori ZIP utilizzano la directory per caricare l’elenco dei file senza leggere l’intero archivio ZIP. Il formato mantiene doppie copie della struttura della directory per fornire una maggiore protezione contro la perdita di dati.

Ogni file in un archivio ZIP è rappresentato come una singola voce in cui ogni voce è costituita da un’intestazione del file locale seguita dai dati del file compresso. La directory alla fine dell’archivio contiene i riferimenti a tutte queste voci di file. I lettori di file ZIP dovrebbero evitare di leggere le intestazioni dei file locali e tutti i tipi di elenchi di file dovrebbero essere letti dalla directory. Questa directory è l’unica fonte di voci di file valide nell’archivio poiché i file possono essere aggiunti anche verso la fine dell’archivio. Ecco perché se un lettore legge le intestazioni locali di un archivio ZIP dall’inizio, può leggere voci non valide (cancellate) e anche quelle non fanno parte della Directory che viene eliminata dall’archivio.

L’ordine delle voci dei file nella directory centrale non deve necessariamente coincidere con l’ordine delle voci dei file nell’archivio.

Voci di file ZIP

Le voci nel file ZIP sono disposte una dopo l’altra in cui ciascuna voce è composta da:

  • Intestazione del file locale
  • Campi dati aggiuntivi opzionali
  • Dati utente (opzionalmente compressi/opzionalmente crittografati)

L’intestazione del file locale di ogni voce rappresenta le informazioni sul file come il commento, la dimensione del file e il nome del file. I campi dati aggiuntivi (opzionali) possono contenere informazioni per le opzioni di estensibilità del formato ZIP.

Intestazione del file locale

L’intestazione del file locale ha una struttura di campo specifica composta da valori multibyte. Tutti i valori vengono archiviati in ordine di byte little-endian in cui la lunghezza del campo conta la lunghezza in byte. Tutte le strutture in un file ZIP utilizzano firme a 4 byte per ciascuna voce del file. La fine della firma della directory centrale è 0x06054b50 e può essere distinta utilizzando la propria firma univoca. Di seguito è riportato l’ordine delle informazioni memorizzate nell’intestazione del file locale.

OffsetByteDescrizione
04Firma dell’intestazione del file locale # 0x04034b50 (letto come numero little-endian)
42Versione necessaria per estrarre (minimo)
62Segnale bit per uso generico
82Metodo di compressione
102Ora dell’ultima modifica del file
122Data dell’ultima modifica del file
144CRC-32
184Formato compresso
224Dimensioni non compresse
262Lunghezza nome file (n)
282Lunghezza campo extra (m)
30nNome file
30+nmCampo extra

Intestazione del file della directory centrale

OffsetByteDescrizione
04Firma dell’intestazione del file della directory centrale # 0x02014b50
42Versione realizzata da
62Versione necessaria per estrarre (minimo)
82Blocco di bit per uso generico
102Metodo di compressione
122Ora dell’ultima modifica del file
142Data dell’ultima modifica del file
164CRC-32
204Formato compresso
244Dimensioni non compresse
282Lunghezza nome file (n)
302Lunghezza campo extra (m)
322Lunghezza commento file (k)
342Numero del disco in cui inizia il file
362Attributi del file interno
384Attributi del file esterno
424Offset relativo dell’intestazione del file locale. Questo è il numero di byte tra l’inizio del primo disco su cui si trova il file e l’inizio dell’intestazione del file locale. Ciò consente al software che legge la directory centrale di individuare la posizione del file all’interno del file ZIP.
46nNome del file
46+nmCampo extra
46+n+mkCommento file

Fine del record della directory centrale

OffsetByteDescrizione
04Fine firma della directory centrale # 0x06054b50
42Numero di questo disco
62Disco dove inizia la directory centrale
82Numero di record della directory centrale su questo disco
102Numero totale di record della directory centrale
124Dimensione della directory centrale (byte)
164Offset dell’inizio della directory centrale, relativo all’inizio dell’archivio
202Lunghezza commento (n)
22nCommento

Riferimenti

Vedi anche