aspose.info
ES

CÓDIGO POSTAL

Actualizado

¿Qué es un archivo ZIP?

Un archivo con extensión .zip es un archivo que puede contener uno o más archivos o directorios. El archivo puede tener compresión aplicada a los archivos incluidos para reducir el tamaño del archivo ZIP. El formato de archivo ZIP se hizo público en febrero de 1989 por Phil Katz para lograr el archivado de archivos y carpetas. El formato se hizo parte de la utilidad PKZIP, creada por PKWARE, Inc. Inmediatamente después de la disponibilidad de especificaciones disponibles, muchas compañías hicieron que el formato de archivo ZIP fuera parte de sus utilidades de software, incluidas Microsoft (desde Windows 7), Apple (Mac OS X) y muchas otras.

Breve historia del formato de archivo ZIP

La historia del formato de archivo ZIP se remonta al caso de una demanda presentada por System Enhancement Associates (SEA) contra PKWARE por usar su utilidad ARC sin permisos para su marca comercial y los derechos de autor de la apariencia del producto y la interfaz de usuario. Antes de esto, Phil Katz había reescrito el código fuente de SEA y lanzó PKXARC, un extractor ARC, y PKARC, un compresor de archivos, como software gratuito para sistemas basados en MS-DOS. Al perder en la demanda, PKWARE ya no pudo usar nada relacionado con ARC. Aquí es donde surgió la creación de una nueva compresión de archivos, denominada ZIP, que se convirtió en parte de la utilidad PKZIP en PKWARE, Inc.

Katz lanzó las especificaciones del formato de archivo ZIP al dominio público, al tiempo que retuvo los derechos de propiedad sobre su utilidad de compresión y extracción, es decir, PKZIP. El sistema de compresión ZIP fue (y es) capaz de archivar archivos en una carpeta por medio de un algoritmo de comprobación de redundancia cíclica de 32 bits (CRC) para comprimir archivos tamaños A diferencia de ARC, las carpetas .ZIP incluían un archivo de directorio que desempeñaba el papel de libro de códigos de un criptógrafo y contenía la información necesaria para procesar los archivos comprimidos.

Métodos de compresión admitidos en ZIP

Según las especificaciones del formato de archivo .ZIP, se admiten los siguientes métodos de compresión.

  • Almacenar - no implica compresión
  • Encogerse
  • Reducción (Esto implica factores de compresión que van desde el nivel 1 hasta el nivel 4)
  • Implosión
  • Desinflar
  • Desinflado64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd versión I, Rev 1

DEFLATE es el método de compresión comúnmente utilizado, que es un algoritmo de compresión de datos sin pérdidas que utiliza una combinación de la codificación LZ77 y Huffman y se detalla en RFC 1951.

Especificaciones del formato de archivo ZIP

Los archivos ZIP tienen la capacidad de almacenar varios archivos utilizando diferentes técnicas de compresión y, al mismo tiempo, admiten el almacenamiento de un archivo sin ningún tipo de compresión. Cada archivo se almacena/comprime individualmente, lo que ayuda a extraerlos o agregar nuevos, sin aplicar compresión o descompresión a todo el archivo.

Formato de archivo ZIP general

Cada archivo Zip está estructurado de la siguiente manera:

Formato de archivo ZIP
Encabezado de archivo local 1
Datos de archivo 1
Descriptor de datos 1
Encabezado de archivo local 2
Datos de archivo 2
Descriptor de datos 2
….
….
Encabezado de archivo local N
Datos de archivo N
Descriptor de datos N
Encabezado de descifrado de archivo
Archivar registro de datos adicionales
Directorio central

El formato de archivo ZIP utiliza un algoritmo CRC de 32 bits para fines de archivo. Para procesar los archivos comprimidos, un archivo ZIP tiene un directorio en su extremo que guarda la entrada de los archivos contenidos y su ubicación en el archivo de almacenamiento. Por lo tanto, desempeña el papel de codificación para encapsular la información necesaria para procesar los archivos comprimidos. Los lectores ZIP usan el directorio para cargar la lista de archivos sin leer todo el archivo ZIP. El formato mantiene copias duales de la estructura del directorio para brindar una mayor protección contra la pérdida de datos.

Cada archivo en un archivo ZIP se representa como una entrada individual donde cada entrada consta de un encabezado de archivo local seguido de los datos del archivo comprimido. El directorio al final del archivo contiene las referencias a todas estas entradas de archivo. Los lectores de archivos ZIP deben evitar leer los encabezados de los archivos locales y todo tipo de listado de archivos debe leerse desde el Directorio. Este directorio es la única fuente de entradas de archivos válidas en el archivo, ya que los archivos también se pueden agregar hacia el final del archivo. Es por eso que si un lector lee los encabezados locales de un archivo ZIP desde el principio, también puede leer entradas no válidas (eliminadas) que no forman parte del Directorio que se está eliminando del archivo.

El orden de las entradas del archivo en el directorio central no tiene por qué coincidir con el orden de las entradas del archivo en el archivo.

Entradas de archivos ZIP

Las entradas en el archivo ZIP se organizan una tras otra, donde cada entrada consta de:

  • Encabezado de archivo local
  • Campos de datos adicionales opcionales
  • Datos de usuario (opcionalmente comprimidos/opcionalmente encriptados)

El encabezado de archivo local de cada entrada representa información sobre el archivo, como comentario, tamaño de archivo y nombre de archivo. Los campos de datos adicionales (opcionales) pueden acomodar información para las opciones de extensibilidad del formato ZIP.

Encabezado de archivo local

El encabezado del archivo local tiene una estructura de campo específica que consta de valores de varios bytes. Todos los valores se almacenan en orden de bytes little-endian donde la longitud del campo cuenta la longitud en bytes. Todas las estructuras de un archivo ZIP utilizan firmas de 4 bytes para cada entrada de archivo. El final de la firma del directorio central es 0x06054b50 y se puede distinguir mediante su propia firma única. A continuación se muestra el orden de la información almacenada en el encabezado del archivo local.

CompensaciónBytesDescripción
04Firma de encabezado de archivo local # 0x04034b50 (leído como un número little-endian)
42Versión necesaria para extraer (mínimo)
62Indicador de bit de propósito general
82Método de compresión
102Hora de última modificación del archivo
122Fecha de última modificación del fichero
144CRC-32
184Tamaño comprimido
224Tamaño sin comprimir
262Longitud del nombre del archivo (n)
282Longitud de campo adicional (m)
30nNombre de archivo
30+nmCampo adicional

Encabezado del archivo del directorio central

CompensaciónBytesDescripción
04Firma del encabezado del archivo del directorio central # 0x02014b50
42Versión realizada por
62Versión necesaria para extraer (mínimo)
82Indicador de bit de propósito general
102Método de compresión
122Hora de última modificación del archivo
142Fecha de última modificación del fichero
164CRC-32
204Tamaño comprimido
244Tamaño sin comprimir
282Longitud del nombre del archivo (n)
302Longitud de campo adicional (m)
322Longitud de comentario de archivo (k)
342Número de disco donde comienza el archivo
362Atributos de archivos internos
384Atributos de archivos externos
424Desplazamiento relativo del encabezado del archivo local. Este es el número de bytes entre el inicio del primer disco en el que se encuentra el archivo y el inicio del encabezado del archivo local. Esto permite que el software lea el directorio central para ubicar la posición del archivo dentro del archivo ZIP.
46nNombre de archivo
46+nmCampo adicional
46+n+mkComentario de archivo

Fin del registro del directorio central

CompensaciónBytesDescripción
04Fin de la firma del directorio central # 0x06054b50
42Número de este disco
62Disco donde comienza el directorio central
82Número de registros del directorio central en este disco
102Número total de registros del directorio central
124Tamaño del directorio central (bytes)
164Desplazamiento del inicio del directorio central, relativo al inicio del archivo
202Longitud del comentario (n)
22nComentario

Referencias

Véase también