aspose.info
PL

ZAMEK BŁYSKAWICZNY

Zaktualizowano

Co to jest plik ZIP?

Plik z rozszerzeniem .zip to archiwum, które może zawierać jeden lub więcej plików lub katalogów. W archiwum można zastosować kompresję dołączonych plików w celu zmniejszenia rozmiaru pliku ZIP. Format pliku ZIP został upubliczniony w lutym 1989 roku przez Phila Katza w celu archiwizacji plików i folderów. Format stał się częścią narzędzia PKZIP, stworzonego przez PKWARE, Inc. Zaraz po udostępnieniu dostępnych specyfikacji, wiele firm uczyniło format pliku ZIP częścią swojego oprogramowania narzędziowego, w tym Microsoft (od Windows 7), Apple (Mac OS X) i wiele innych.

Krótka historia formatu pliku ZIP

Historia formatu plików ZIP sięga pozwu wytoczonego przez firmę System Enhancement Associates (SEA) przeciwko PKWARE za korzystanie z narzędzia ARC bez pozwolenia na jego znak towarowy oraz prawa autorskie do wyglądu produktu i interfejsu użytkownika. Wcześniej Phil Katz przepisał kod źródłowy SEA i wypuścił PKXARC, ekstraktor ARC i PKARC, kompresor plików, jako darmowe oprogramowanie dla systemów opartych na MS-DOS. Przegrywając w procesie, PKWARE nie mógł już używać niczego związanego z ARC. W tym miejscu powstało nowe narzędzie do kompresji plików, nazwane ZIP, które stało się częścią narzędzia PKZIP firmy PKWARE, Inc.

Katz udostępnił specyfikacje formatu plików ZIP do domeny publicznej, zachowując jednocześnie prawa własności do swojego narzędzia do kompresji i ekstrakcji, tj. PKZIP. System kompresji ZIP był (i jest) w stanie archiwizować pliki w folderze za pomocą 32-bitowego algorytmu cyklicznej kontroli redundancji (CRC) do kompresji pliku rozmiary. W przeciwieństwie do ARC, foldery .ZIP zawierały plik katalogu, który pełnił rolę książki kodów kryptografa, przechowując informacje niezbędne do renderowania skompresowanych plików.

Obsługiwane metody kompresji w ZIP

Zgodnie ze specyfikacją formatu pliku .ZIP obsługiwane są następujące metody kompresji.

  • Store — oznacza brak kompresji
  • Kurczyć
  • Redukcja (oznacza to współczynniki kompresji od poziomu 1 do poziomu 4)
  • Imploduj
  • Siadać
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd wersja I, Rev 1

DEFLATE to powszechnie stosowana metoda kompresji, która jest algorytmem bezstratnej kompresji danych, który wykorzystuje kombinację kodowania LZ77 i Huffmana i jest szczegółowo opisana w RFC 1951.

Specyfikacje formatu plików ZIP

Pliki ZIP mają możliwość przechowywania wielu plików przy użyciu różnych technik kompresji, a jednocześnie obsługują przechowywanie pliku bez żadnej kompresji. Każdy plik jest przechowywany/kompresowany indywidualnie, co pomaga je rozpakować lub dodać nowe bez stosowania kompresji lub dekompresji do całego archiwum.

Ogólny format pliku ZIP

Każdy plik ZIP ma następującą strukturę:

ZIP Format pliku
Nagłówek pliku lokalnego 1
Dane pliku 1
Deskryptor danych 1
Nagłówek pliku lokalnego 2
Dane pliku 2
Deskryptor danych 2
….
….
Lokalny nagłówek pliku N
Dane pliku N
Deskryptor danych N
Nagłówek odszyfrowywania archiwum
Archiwizuj dodatkowy rekord danych
Centralny katalog

Format pliku ZIP wykorzystuje 32-bitowy algorytm CRC do celów archiwizacji. Aby renderować skompresowane pliki, archiwum ZIP zawiera na końcu katalog, w którym przechowywane są wpisy zawartych plików i ich lokalizacja w pliku archiwum. Pełni zatem rolę kodowania do enkapsulacji informacji niezbędnych do renderowania skompresowanych plików. Czytniki ZIP używają katalogu do załadowania listy plików bez czytania całego archiwum ZIP. Format zachowuje podwójne kopie struktury katalogów, aby zapewnić lepszą ochronę przed utratą danych.

Każdy plik w archiwum ZIP jest reprezentowany jako osobny wpis, gdzie każdy wpis składa się z nagłówka pliku lokalnego, po którym następują dane skompresowanego pliku. Katalog na końcu archiwum zawiera odniesienia do wszystkich tych wpisów plików. Czytniki plików ZIP powinny unikać czytania lokalnych nagłówków plików, a wszelkiego rodzaju listy plików powinny być odczytywane z katalogu. Ten katalog jest jedynym źródłem prawidłowych wpisów plików w archiwum, ponieważ pliki mogą być również dołączane na końcu archiwum. Dlatego jeśli czytnik odczytuje lokalne nagłówki archiwum ZIP od początku, może odczytać również wpisy nieprawidłowe (usunięte) oraz te, które nie są częścią usuwanego z archiwum katalogu.

Kolejność wpisów plików w katalogu centralnym nie musi pokrywać się z porządkiem wpisów plików w archiwum.

Wpisy plików ZIP

Wpisy w pliku ZIP są ułożone jeden po drugim, gdzie każdy wpis składa się z:

  • Lokalny nagłówek pliku
  • Opcjonalne dodatkowe pola danych
  • Dane użytkownika (opcjonalnie skompresowane/opcjonalnie zaszyfrowane)

Lokalny nagłówek pliku każdego wpisu zawiera informacje o pliku, takie jak komentarz, rozmiar pliku i nazwa pliku. Dodatkowe pola danych (opcjonalnie) mogą pomieścić informacje o opcjach rozszerzania formatu ZIP.

Lokalny nagłówek pliku

Lokalny nagłówek pliku ma specyficzną strukturę pól składającą się z wartości wielobajtowych. Wszystkie wartości są przechowywane w kolejności bajtów typu little-endian, gdzie długość pola liczy długość w bajtach. Wszystkie struktury w pliku ZIP używają 4-bajtowych podpisów dla każdego wpisu pliku. Koniec sygnatury katalogu centralnego to 0x06054b50 i można go odróżnić za pomocą własnego unikalnego podpisu. Poniżej przedstawiono kolejność informacji przechowywanych w nagłówku pliku lokalnego.

PrzesunięcieBajtyOpis
04Podpis nagłówka pliku lokalnego # 0x04034b50 (odczytywany jako liczba little-endian)
42Wersja potrzebna do wyodrębnienia (minimum)
62Flaga bitowa ogólnego przeznaczenia
82Metoda kompresji
102Czas ostatniej modyfikacji pliku
122Data ostatniej modyfikacji pliku
144CRC-32
184Rozmiar skompresowany
224Rozmiar nieskompresowany
262Długość nazwy pliku (n)
282Dodatkowa długość pola (m)
30nNazwa pliku
30+nmDodatkowe pole

Nagłówek pliku katalogu centralnego

PrzesunięcieBajtyOpis
04Podpis nagłówka pliku katalogu centralnego # 0x02014b50
42Wersja wykonana przez
62Wersja potrzebna do wyodrębnienia (minimum)
82Flaga bitowa ogólnego przeznaczenia
102Metoda kompresji
122Czas ostatniej modyfikacji pliku
142Data ostatniej modyfikacji pliku
164CRC-32
204Rozmiar skompresowany
244Rozmiar nieskompresowany
282Długość nazwy pliku (n)
302Dodatkowa długość pola (m)
322Długość komentarza do pliku (k)
342Numer dysku, na którym rozpoczyna się plik
362Wewnętrzne atrybuty plików
384Atrybuty plików zewnętrznych
424Względne przesunięcie lokalnego nagłówka pliku. Jest to liczba bajtów między początkiem pierwszego dysku, na którym znajduje się plik, a początkiem lokalnego nagłówka pliku. Dzięki temu oprogramowanie odczytujące katalog centralny może zlokalizować pozycję pliku w pliku ZIP.
46nNazwa pliku
46+nmDodatkowe pole
46+n+mkDodaj komentarz

Koniec rekordu w centralnej książce telefonicznej

PrzesunięcieBajtyOpis
04Koniec sygnatury katalogu centralnego # 0x06054b50
42Numer tego dysku
62Dysk, na którym zaczyna się katalog centralny
82Liczba rekordów katalogu centralnego na tym dysku
102Całkowita liczba rekordów katalogu centralnego
124Rozmiar katalogu centralnego (bajty)
164Przesunięcie początku katalogu centralnego względem początku archiwum
202Długość komentarza (n)
22nKomentarz

Bibliografia

Zobacz też