aspose.info
SV

BLIXTLÅS

Uppdaterad

Vad är en ZIP-fil?

En fil med filtillägget .zip är ett arkiv som kan innehålla en eller flera filer eller kataloger. Arkivet kan ha komprimering tillämpad på de inkluderade filerna för att minska ZIP-filstorleken. ZIP-filformat offentliggjordes redan i februari 1989 av Phil Katz för att uppnå arkivering av filer och mappar. Formatet gjordes till en del av verktyget PKZIP, skapat av PKWARE, Inc. Direkt efter att tillgängliga specifikationer, gjorde många företag ZIP-filformat till en del av sina programvaruverktyg, inklusive Microsoft (sedan Windows 7), Apple (Mac OS X) och många andra.

Kort historik över ZIP-filformat

Historiken för ZIP-filformat går tillbaka till händelsen av en rättsprocess som System Enhancement Associates (SEA) riktade mot PKWARE för att ha använt dess ARC-verktyg utan tillstånd för dess varumärke och upphovsrätten till produktens utseende och användargränssnitt. Innan detta hade Phil Katz skrivit om SEA:s källkod och släppt PKXARC, en ARC-extraktor, och PKARC, en filkompressor, som gratisprogram för MS-DOS-baserade system. Förlorade i rättegången, PKWARE kunde inte längre använda något som var relaterat till ARC. Det var här skapandet av en ny filkomprimering kom till, kallad ZIP som gjordes till en del av PKZIP-verktyget hos PKWARE, Inc.

Katz släppte ZIP-filformatspecifikationerna till det offentliga, samtidigt som de behöll äganderätten till sitt komprimerings- och extraheringsverktyg, dvs. PKZIP. ZIP-komprimeringssystemet kunde (och kan) arkivera filer i en mapp med hjälp av en 32-bitars cyklisk redundanskontroll (CRC) algoritm för att komprimera fil storlekar. Till skillnad från ARC inkluderade .ZIP-mappar en katalogfil som spelade rollen som en kryptografs kodbok, som innehöll den information som krävs för att rendera de komprimerade filerna.

Komprimeringsmetoder som stöds i ZIP

Enligt specifikationer för .ZIP-filformat stöds följande komprimeringsmetoder.

  • Store - innebär ingen komprimering
  • Krympa
  • Reduktion (Detta innebär kompressionsfaktorer som sträcker sig från nivå 1 till nivå 4)
  • Implodera *Tömma luften
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd version I, Rev 1

DEFLATE är den vanligaste komprimeringsmetoden som är en förlustfri datumkomprimeringsalgoritm som använder en kombination av LZ77 och Huffman-kodning och som beskrivs i RFC 1951.

Specifikationer för ZIP-filformat

ZIP-filer har kapacitet att lagra flera filer med olika komprimeringstekniker samtidigt som de stöder lagring av en fil utan någon komprimering. Varje fil lagras/komprimeras individuellt vilket hjälper till att extrahera dem, eller lägga till nya, utan att komprimera eller dekomprimera hela arkivet.

Övergripande ZIP-filformat

Varje zip-fil är strukturerad på följande sätt:

ZIP-filformat
Lokal filhuvud 1
Fildata 1
Databeskrivning 1
Lokal filhuvud 2
Fildata 2
Databeskrivning 2
….
….
Lokal filhuvud N
Fildata N
Databeskrivning N
Arkivdekrypteringshuvud
Arkiv extra datapost
Central katalog

ZIP-filformatet använder 32-bitars CRC-algoritm för arkiveringsändamål. För att rendera de komprimerade filerna, har ett ZIP-arkiv en katalog i slutet som håller posten för de inneslutna filerna och deras plats i arkivfilen. Den spelar således rollen som kodning för att kapsla in information som är nödvändig för att rendera de komprimerade filerna. ZIP-läsare använder katalogen för att ladda listan med filer utan att läsa hela ZIP-arkivet. Formatet behåller dubbla kopior av katalogstrukturen för att ge bättre skydd mot förlust av data.

Varje fil i ett ZIP-arkiv representeras som en individuell post där varje post består av en lokal filhuvud följt av den komprimerade fildatan. Katalogen i slutet av arkivet innehåller referenserna till alla dessa filposter. ZIP-filläsare bör undvika att läsa de lokala filhuvudena och alla typer av fillistor bör läsas från katalogen. Denna katalog är den enda källan för giltiga filposter i arkivet eftersom filer kan läggas till mot slutet av arkivet också. Det är därför om en läsare läser lokala rubriker i ett ZIP-arkiv från början, kan den läsa ogiltiga (borttagna) poster liksom de som inte är en del av katalogen som tas bort från arkivet.

Ordningen på filposterna i den centrala katalogen behöver inte sammanfalla med ordningen på filposterna i arkivet.

ZIP-filposter

Posterna i ZIP-filen är ordnade efter varandra där varje post består av:

  • Lokal filhuvud
  • Valfria extra datafält
  • Användardata (valfritt komprimerad/valfritt krypterad)

Den lokala filhuvudet för varje post representerar information om filen såsom kommentar, filstorlek och filnamn. De extra datafälten (valfritt) kan rymma information för utökningsalternativ för ZIP-formatet.

Lokal filhuvud

Den lokala filhuvudet har en specifik fältstruktur som består av flerbytevärden. Alla värden lagras i little-endian byteordning där fältlängden räknar längden i byte. Alla strukturer i en ZIP-fil använder 4-byte signaturer för varje filpost. Slutet på den centrala katalogsignaturen är 0x06054b50 och kan särskiljas med sin egen unika signatur. Följande är ordningen för information som lagras i lokal filhuvud.

OffsetByteBeskrivning
04Lokal filhuvudsignatur # 0x04034b50 (läs som ett litet-endiannummer)
42Version som behövs för att extrahera (minst)
62Bitflagga för allmänt ändamål
82Kompressionsmetod
102Fil senaste ändringstid
122Fil senaste ändringsdatum
144CRC-32
184Komprimerad storlek
224Okomprimerad storlek
262Filnamnets längd (n)
282Extra fältlängd (m)
30nFilnamn
30+nmExtra fält

Central Directory File Header

OffsetByteBeskrivning
04Central katalogfilhuvudsignatur # 0x02014b50
42Version gjord av
62Version som behövs för att extrahera (minst)
82Bitflagga för allmänt ändamål
102Kompressionsmetod
122Fil senaste ändringstid
142Fil senaste ändringsdatum
164CRC-32
204Komprimerad storlek
244Okomprimerad storlek
282Filnamnets längd (n)
302Extra fältlängd (m)
322Längd på filkommentar (k)
342Disknummer där filen startar
362Interna filattribut
384Externa filattribut
424Relativ förskjutning av lokal filhuvud. Detta är antalet byte mellan starten av den första disken där filen förekommer och starten av den lokala filhuvudet. Detta tillåter programvara som läser den centrala katalogen för att lokalisera filens position i ZIP-filen.
46nFilnamn
46+nmExtra fält
46+n+mkFilkommentar

Slut på centralkatalogpost

OffsetByteBeskrivning
04Slut på central katalogsignatur # 0x06054b50
42Nummer på denna disk
62Disk där den centrala katalogen startar
82Antal centrala katalogposter på denna disk
102Totalt antal centrala katalogposter
124Storlek på central katalog (byte)
164Förskjutning av start av central katalog, relativt start av arkiv
202Kommentarlängd (n)
22nKommentar

Referenser

Se även