Ficheros y formatos
Cómo se organiza el acceso a los registros de un fichero y qué identifica a los formatos más preguntados: instaladores, documentos, correo, imagen, audio y vídeo.
Formas de acceso a un fichero
La organización de un fichero decide cómo se llega a un registro concreto, y con ello lo que cuesta leerlo, escribirlo o borrarlo. Hay tres formas básicas y una híbrida.
En el acceso secuencial los registros se leen en el orden en que están escritos, desde el principio. Es la organización de la cinta magnética, y de ahí vienen sus dos rasgos: los registros nuevos se añaden al final, y el borrado es lógico, no físico. Borrar de verdad exigiría reescribir el fichero entero, así que lo que se hace es marcar el registro como eliminado y dejar de tenerlo en cuenta.
En el acceso directo se llega al registro sin recorrer los anteriores: una clave del propio registro, o una función aplicada sobre esa clave, indica la posición que ocupa dentro del fichero. Es la misma idea de la tabla hash llevada al almacenamiento.
En el acceso indexado hay dos ficheros: uno con los datos y otro, el índice, que asocia cada clave con la posición donde está su registro. Se busca en el índice, que es pequeño y está ordenado, y de ahí se salta directamente al dato.
| Organización | Cómo se llega al registro | Rasgo típico |
|---|---|---|
| Secuencial | Recorriendo desde el principio | Los nuevos se añaden al final y el borrado es lógico |
| Directa | Calculando la posición a partir de la clave | Acceso inmediato, sin recorrer |
| Indexada | Consultando un índice que apunta al dato | Índice ordenado y aparte de los datos |
| Híbrida o ISAM | Índice para localizar y lectura secuencial dentro del bloque | Combina las dos anteriores: el motor MyISAM de MySQL toma de ahí su nombre |
Para el examen
Secuencial: se lee desde el principio, se añade al final y el borrado es lógico
Directa: la posición se calcula a partir de la clave
Indexada: un índice aparte apunta al dato
ISAM: combina índice y lectura secuencial
Instaladores y paquetes por sistema operativo
Cada sistema operativo tiene su propio formato de distribución de software, y es una de las preguntas de identificación más habituales.
| Extensión | Sistema | Qué es |
|---|---|---|
| exe | Windows | Ejecutable |
| msi | Windows | Paquete de instalación de Windows Installer |
| pkg y dmg | macOS | Paquete de instalación e imagen de disco |
| deb | Linux Debian y derivados, como Ubuntu | Paquete de software |
| rpm | Linux Red Hat y derivados, como Fedora o CentOS | Paquete de software |
| tar.gz | Linux y Unix | Archivo agrupado con tar y comprimido con gzip |
| apk | Android | Aplicación instalable |
| aab | Android | Android App Bundle: formato de publicación del que la tienda genera el paquete adaptado a cada dispositivo |
| ipa | iOS | Aplicación instalable |
Para el examen
deb y rpm: Debian y Ubuntu; Red Hat y Fedora
msi: Windows
pkg y dmg: macOS
apk e ipa: Android e iOS
Documentos, ofimática, correo y certificados
En ofimática de Microsoft hay una frontera clara en la versión 2007. Hasta ella, los formatos binarios doc, xls y ppt eran propietarios y se apoyaban en el almacenamiento compuesto OLE. Desde ella, los formatos docx, xlsx y pptx son en realidad un archivo comprimido en zip que contiene documentos XML: es el estándar Office Open XML (OOXML), normalizado como ECMA-376 e ISO/IEC 29500. En esas extensiones la letra final indica la variante: x para el formato XML normal, m para el que admite macros y t para las plantillas (dotx, xltx, potx).
La alternativa abierta es OpenDocument, de OpenOffice y LibreOffice: odt para texto, ods para hoja de cálculo, odp para presentación, odg para dibujo y odb para base de datos.
| Formato | Para qué sirve |
|---|---|
| PDF (ISO 32000-1:2008) | Documento de presentación fija, independiente del dispositivo |
| PDF/A | Variante para archivado y conservación a largo plazo |
| PDF/UA | Variante orientada a la accesibilidad universal |
| PDF/X | Variante para artes gráficas e impresión profesional |
| PostScript (PS) y PCL | Lenguajes de descripción de página para impresión |
| epub | Libro electrónico de maquetación adaptable |
| csv | Texto plano con campos separados por comas o por punto y coma |
| vcf | Tarjeta de contacto (vCard) |
En correo electrónico conviene separar lo que guarda un solo mensaje de lo que guarda un buzón entero. El fichero eml contiene un único mensaje con el formato normalizado de Internet (RFC 5322, que sustituyó al RFC 2822), y msg es su equivalente propietario de Outlook. En cambio mbox (RFC 4155) es un contenedor con muchos mensajes seguidos, y pst y ost son los buzones de Outlook, el primero de almacenamiento local y el segundo la copia sin conexión sincronizada con el servidor. Los ficheros nsf son las bases de Lotus Notes, en su versión de cliente (Notes) y de servidor (Domino).
En certificados, el par p12 o pfx contiene el certificado junto con su clave privada, mientras que cer contiene el certificado X.509 sin ella. Por eso un p12 se protege con contraseña y no se envía a nadie, y un cer sí se puede repartir.
Para el examen
docx, xlsx y pptx: un zip de XML: OOXML, ECMA-376 e ISO/IEC 29500
La «m» final (docm, xlsm): admite macros
OpenDocument: odt, ods y odp
eml y msg frente a mbox y pst: los primeros guardan UN mensaje; los segundos, un buzón
p12/pfx frente a cer: p12 y pfx llevan la clave privada; cer, solo el certificado
Formatos de imagen y tipos MIME
La primera división es entre imagen de mapa de bits, que guarda píxeles y pierde calidad al ampliarse, e imagen vectorial, que guarda las figuras como fórmulas y se escala sin degradarse. La segunda es entre compresión con pérdida, que descarta información para ocupar menos, y sin pérdida, que permite reconstruir el original exacto.
| Formato | Compresión | Rasgos |
|---|---|---|
| JPEG o JPG | Con pérdida | Del grupo Joint Photographic Experts Group. Pensado para fotografía. JPEG 2000 es su sucesor y admite también modo sin pérdida |
| PNG | Sin pérdida | Transparencia por canal alfa y color real de 24 bits. No admite animación |
| GIF | Sin pérdida (LZW) | Paleta limitada a 256 colores, transparencia simple y animación |
| TIFF | Con o sin compresión | Formato etiquetado (tagged) y multipágina. Habitual en digitalización y artes gráficas |
| BMP | Sin pérdida (RLE opcional) | Mapa de bits de Microsoft, sencillo y voluminoso |
| SVG | No aplica: es vectorial | Scalable Vector Graphics, definido en XML. Se incrusta de forma nativa en HTML5 y se edita con herramientas como Inkscape |
| WebP | Admite los dos modos, con pérdida y sin ella | De Google. Soporta transparencia y también animación |
Los tipos MIME son la etiqueta con la que se declara la naturaleza de un contenido para que el navegador sepa qué hacer con él. Se escriben como tipo y subtipo separados por una barra: image/gif, image/svg+xml, text/html, text/xml, application/javascript, application/pdf o video/mpeg.
Para el examen
JPEG: con pérdida, para fotografía
PNG: sin pérdida, con canal alfa y sin animación
GIF: 256 colores y animación
SVG: vectorial, escrito en XML
Tipo MIME: tipo/subtipo: image/svg+xml, application/pdf, text/html
Audio, vídeo, contenedores y códecs
Aquí hay que separar dos cosas que se confunden siempre. El códec es el algoritmo que codifica y descodifica la señal, y decide la calidad y el tamaño. El contenedor es el envoltorio con cajones para meter dentro las pistas de vídeo, las de audio, los subtítulos y los metadatos, y decide qué se puede combinar. Un mismo contenedor admite distintos códecs, y por eso saber que un fichero es .mp4 no dice todavía con qué está codificado.
| Formato de audio | Tipo | Rasgos |
|---|---|---|
| MP3 | Con pérdida | MPEG-1 y MPEG-2 Audio Layer III, normalizado por ISO. Sus etiquetas ID3 guardan autor, título, álbum o género |
| AAC | Con pérdida | Sucesor del MP3, dentro de MPEG-4 Audio. Extensiones m4a, m4b y aac |
| FLAC | Sin pérdida | Free Lossless Audio Codec, de la fundación Xiph.Org |
| ALAC | Sin pérdida | El equivalente de Apple al FLAC |
| AC3 | Con pérdida | Dolby Digital, multicanal, de los laboratorios Dolby |
| Opus | Con pérdida | De Xiph.Org, muy usado en voz sobre IP y en tiempo real |
| Vorbis | Con pérdida | De Xiph.Org, con extensión ogg |
| Contenedor de vídeo | Origen | Rasgos |
|---|---|---|
| MKV (Matroska) | Abierto | Muy flexible: admite casi cualquier códec, varias pistas y subtítulos |
| AVI | Microsoft | Audio Video Interleave, antiguo y muy extendido |
| ASF | Microsoft | Contenedor de WMA (audio) y WMV (vídeo) |
| MP4 | Estándar | MPEG-4 Part 14, el más universal en distribución y web |
| MOV | Apple | Contenedor de QuickTime |
| OGG | Xiph.Org | Contenedor abierto, habitual con Vorbis y Theora |
| 3GP | Estándar móvil | Versión reducida para telefonía |
| MPG | Estándar | MPEG-1 en vídeo CD, MPEG-2 en DVD y MPEG-4 en alta definición |
| WebM | Basado en Matroska, con vídeo VP8, VP9 o AV1 y audio Vorbis u Opus |
Entre los códecs de vídeo, la línea principal la marcan los estándares del grupo MPEG y la UIT: AVC (H.264), su sucesor HEVC (H.265) y el más reciente VVC (H.266), cada uno con mejor compresión que el anterior a igual calidad. Junto a ellos conviven DivX y Xvid, muy extendidos en su día, el WMV de Microsoft, y la familia abierta y libre de regalías VP8, VP9 y AV1.
Contenedor y códec responden a preguntas distintas: MP4, MKV o AVI son cajas, y H.264, HEVC o AV1 son lo que va dentro.
Para el examen
Contenedores: MP4, MKV, AVI, MOV, OGG y WebM
Códecs de vídeo: H.264 (AVC), H.265 (HEVC), H.266 (VVC), VP9 y AV1
Audio sin pérdida: FLAC y ALAC
Audio con pérdida: MP3, AAC, Vorbis, Opus y AC3
Cómo se identifica de verdad un fichero
La extensión es solo una convención del nombre y se puede cambiar sin que el contenido cambie, así que no sirve para identificar un fichero con seguridad. Lo que sí lo identifica es el magic number o firma (signature): los primeros bytes del fichero, que llevan un patrón fijo característico de cada formato.
Por eso un archivo renombrado como imagen sigue siendo detectable como ejecutable, algo relevante en seguridad, y por eso los servidores comprueban la firma y no la extensión al aceptar una subida. Apache Tika es una biblioteca de Java muy usada para esta tarea: detecta el tipo de un fichero por su firma y extrae además sus metadatos y su texto.
La extensión la decide quien nombra el fichero; el magic number lo decide quien lo escribió. Solo el segundo es prueba de qué contiene.
Para el examen
Qué identifica el formato real: el magic number: los primeros bytes del fichero
Lo que NO lo identifica: la extensión
Apache Tika: detecta el tipo por la firma y extrae metadatos