File Format Docs
NO

ZIP

Oppdatert

Hva er en ZIP-fil?

En fil med filtypen .zip er et arkiv som kan inneholde én eller flere filer eller kataloger. Arkivet kan ha komprimering brukt på de inkluderte filene for å redusere ZIP-filstørrelsen. ZIP-filformatet ble offentliggjort tilbake i februar 1989 av Phil Katz for å oppnå arkivering av filer og mapper. Formatet ble gjort til en del av PKZIP-verktøyet, laget av PKWARE, Inc. Rett etter tilgjengeligheten av [tilgjengelige spesifikasjoner](https://pkware.cachefly.net/ webdocs/casestudies/APPNOTE.TXT), gjorde mange selskaper ZIP-filformat til en del av programvareverktøyene, inkludert Microsoft (siden Windows 7), Apple (Mac OS X) og mange andre.

Kort historie om ZIP-filformat

Historien til ZIP-filformatet dateres tilbake til tilfellet av en rettssak utstedt av System Enhancement Associates (SEA) mot PKWARE for bruk av ARC-verktøyet uten tillatelser for dets varemerke og opphavsretten til produktets utseende og brukergrensesnitt. Før dette hadde Phil Katz skrevet om SEAs kildekode og gitt ut PKXARC, en ARC-ekstraktor, og PKARC, en filkompressor, som freeware for MS-DOS-baserte systemer. PKWARE tapte for søksmålet, og kunne ikke lenger bruke noe relatert til ARC. Det var her etableringen av en ny filkomprimering ble til, kalt ZIP som ble gjort til en del av PKZIP-verktøyet hos PKWARE, Inc.

Katz ga ut ZIP-filformatspesifikasjonene til det offentlige domenet, mens han beholdt eiendomsrettighetene over komprimerings- og utvinningsverktøyet, det vil si PKZIP.ZIP-komprimeringssystemet var (og er) i stand til å arkivere filer i en mappe ved hjelp av en 32-bits syklisk redundanssjekk (CRC) algoritme for å komprimere fil størrelser. I motsetning til ARC, inkluderte .ZIP-mapper en katalogfil som spilte rollen som en kryptografs kodebok, som inneholdt informasjonen som er nødvendig for å gjengi de komprimerte filene.

Støttede komprimeringsmetoder i ZIP

I henhold til spesifikasjonene for .ZIP-filformat, støttes følgende komprimeringsmetoder.

  • Store - innebærer ingen komprimering
  • Krympe
  • Reduksjon (Dette innebærer kompresjonsfaktorer fra nivå 1 til nivå 4)
  • Implodere
  • Tøm luften
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd versjon I, Rev 1

DEFLATE er den ofte brukte komprimeringsmetoden som er en tapsfri datokomprimeringsalgoritme som bruker en kombinasjon av LZ77 og Huffman-koding og er beskrevet i RFC 1951.

Spesifikasjoner for ZIP-filformat

ZIP-filer har mulighet til å lagre flere filer ved hjelp av forskjellige komprimeringsteknikker, samtidig som de støtter lagring av en fil uten komprimering. Hver fil lagres/komprimeres individuelt, noe som hjelper til med å pakke dem ut, eller legge til nye, uten å bruke komprimering eller dekomprimering på hele arkivet.

Total ZIP-filformat

Hver Zip-fil er strukturert på følgende måte:

ZIP File format
Local File Header 1
File Data 1
Data Descriptor 1
Local File Header 2
File Data 2
Data Descriptor 2
….
….
Local File Header N
File Data N
Data Descriptor N
Archive Decryption Header
Archive Extra Data Record
Central Directory

ZIP-filformatet bruker 32-biters CRC-algoritme for arkivering. For å gjengi de komprimerte filene, har et ZIP-arkiv en katalog i enden som holder oppføringen av de inneholdte filene og deres plassering i arkivfilen. Den spiller derfor rollen som koding for å kapsle inn informasjon som er nødvendig for å gjengi de komprimerte filene. ZIP-lesere bruker katalogen til å laste inn listen over filer uten å lese hele ZIP-arkivet. Formatet beholder to kopier av katalogstrukturen for å gi større beskyttelse mot tap av data.

Hver fil i et ZIP-arkiv er representert som en individuell oppføring der hver oppføring består av en lokal filoverskrift etterfulgt av de komprimerte fildataene. Katalogen på slutten av arkivet inneholder referansene til alle disse filoppføringene. ZIP-fillesere bør unngå å lese de lokale filoverskriftene, og alle slags filoppføringer bør leses fra katalogen. Denne katalogen er den eneste kilden for gyldige filoppføringer i arkivet, da filer også kan legges til mot slutten av arkivet. Det er grunnen til at hvis en leser leser lokale overskrifter i et ZIP-arkiv fra begynnelsen, kan den lese ugyldige (slettede) oppføringer i tillegg til at de ikke er en del av katalogen som slettes fra arkivet.

Rekkefølgen på filoppføringene i den sentrale katalogen trenger ikke være sammenfallende med rekkefølgen på filoppføringene i arkivet.

ZIP-filoppføringer

Oppføringer i ZIP-filen er ordnet etter hverandre, der hver oppføring består av:

  • Lokal filoverskrift
  • Valgfrie ekstra datafelt
  • Brukerdata (valgfritt komprimert/valgfritt kryptert)

Den lokale filoverskriften for hver oppføring representerer informasjon om filen som kommentar, filstørrelse og filnavn. De ekstra datafeltene (valgfritt) kan romme informasjon for utvidelsesmuligheter for ZIP-formatet.

Lokal filoverskrift

Den lokale filoverskriften har en spesifikk feltstruktur som består av multibyte-verdier. Alle verdiene er lagret i little-endian byte-rekkefølge hvor feltlengden teller lengden i byte. Alle strukturene i en ZIP-fil bruker 4-byte signaturer for hver filoppføring.Slutten av den sentrale katalogsignaturen er 0x06054b50 og kan skilles fra ved hjelp av sin egen unike signatur. Følgende er rekkefølgen på informasjon som er lagret i lokal filoverskrift.

OffsetBytesDescription
04Local file header signature # 0x04034b50 (read as a little-endian number)
42Version needed to extract (minimum)
62General purpose bit flag
82Compression method
102File last modification time
122File last modification date
144CRC-32
184Compressed size
224Uncompressed size
262File name length (n)
282Extra field length (m)
30nFile Name
30+nmExtra Field

Central Directory File Header

OffsetBytesDescription
04Central directory file header signature # 0x02014b50
42Version made by
62Version needed to extract (minimum)
82General purpose bit flag
102Compression method
122File last modification time
142File last modification date
164CRC-32
204Compressed size
244Uncompressed size
282File name length (n)
302Extra field length (m)
322File comment length (k)
342Disk number where file starts
362Internal file attributes
384External file attributes
424Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file.
46nFile name
46+nmExtra field
46+n+mkFile comment

Slutt på sentralkatalogpost

OffsetBytesDescription
04End of central directory signature # 0x06054b50
42Number of this disk
62Disk where central directory starts
82Number of central directory records on this disk
102Total number of central directory records
124Size of central directory (bytes)
164Offset of start of central directory, relative to start of archive
202Comment length (n)
22nComment

Referanser

Se også