Articulo de referencia

Formato de archivo

Archivo wav: 2,1 megabytes. Archivo ogg: 154 kilobytes. Un formato de archivo es la forma en que se codifica la información para su almacenamiento en un archivo informático . Pu...

Archivo wav: 2,1 megabytes.
Archivo ogg: 154 kilobytes.

Un formato de archivo es la forma en que se codifica la información para su almacenamiento en un archivo informático . Puede describir la codificación en varios niveles de abstracción, incluyendo la disposición de bits y bytes de bajo nivel, así como la organización de alto nivel, como el marcado y la estructura tabular . Un formato de archivo puede estar estandarizado (ya sea propietario o de código abierto ) o puede ser una convención ad hoc .

Algunos formatos de archivo están diseñados para tipos de datos muy específicos: los archivos PNG , por ejemplo, almacenan imágenes de mapa de bits mediante compresión de datos sin pérdida . Otros formatos de archivo, sin embargo, están diseñados para almacenar varios tipos de datos diferentes: el formato Ogg puede actuar como contenedor para distintos tipos de multimedia , incluyendo cualquier combinación de audio y vídeo , con o sin texto (como subtítulos ) y metadatos . Un archivo de texto puede contener cualquier secuencia de caracteres, incluyendo posibles caracteres de control , y se codifica en uno de varios esquemas de codificación de caracteres . Algunos formatos de archivo, como HTML , gráficos vectoriales escalables y el código fuente del software, son archivos de texto con sintaxis definidas que permiten su uso para fines específicos.

Especificación

Algunos formatos de archivo cuentan con una especificación publicada que describe el formato y, posiblemente, cómo verificar la integridad de los datos en dicho formato. No existe tal documento para todos los formatos (a veces porque el formato se considera secreto comercial y otras veces porque no se elaboró ​​un documento al respecto). En ocasiones, el formato se define de facto por el comportamiento del programa que accede al archivo.

Si no hay una especificación disponible, un desarrollador podría realizar ingeniería inversa del formato inspeccionando archivos en ese formato o adquirir la especificación pagando una tarifa y firmando un acuerdo de confidencialidad . Debido al tiempo y el costo que implican estos métodos, los formatos de archivo con especificaciones disponibles públicamente suelen ser compatibles con más programas.

Protección de la propiedad intelectual

La ley de patentes (en lugar de los derechos de autor ) puede utilizarse para proteger la propiedad intelectual inherente a un formato de archivo. Si bien la legislación estadounidense no permite directamente la obtención de una patente para un formato de archivo, algunos formatos codifican datos mediante un algoritmo patentado . Por ejemplo, antes de 2004, la compresión con el formato de archivo GIF requería el uso de un algoritmo patentado, y aunque el titular de la patente no la hizo valer inicialmente, posteriormente comenzó a cobrar regalías . Esto ha provocado una disminución significativa en el uso de GIF y es en parte responsable del desarrollo del formato alternativo PNG . Sin embargo, la patente de GIF expiró en Estados Unidos a mediados de 2003 y a nivel mundial a mediados de 2004.

Identificación

Tanto los usuarios como las aplicaciones necesitan identificar el formato de un archivo para poder utilizarlo correctamente. Generalmente, los métodos de identificación varían según el sistema operativo , y cada enfoque tiene sus ventajas y desventajas.

extensión de nombre de archivo

Un método popular utilizado por muchos sistemas operativos, incluidos Windows , macOS , CP/M , MS-DOS , VMS y VM/CMS , consiste en indicar el formato de un archivo con un sufijo del nombre del archivo , conocido como extensión . Por ejemplo, un documento HTML se identifica mediante un nombre de archivo que termina en .html o .htm , y una imagen GIF mediante .gif .

En el ahora obsoleto sistema de archivos FAT , los nombres de archivo estaban limitados a ocho caracteres para el nombre base más una extensión de tres caracteres, conocida como nombre de archivo 8.3 . Debido a la prevalencia de este esquema de nomenclatura, muchos formatos aún utilizan extensiones de tres caracteres, aunque los sistemas modernos admiten extensiones más largas. Dado que no existe una lista estandarizada de extensiones, más de un formato puede usar la misma extensión , especialmente para extensiones de tres letras, ya que existe un número limitado de combinaciones de tres letras. Esta situación puede confundir tanto a los usuarios como a las aplicaciones.

Una consecuencia de indicar el tipo de archivo con la extensión es que los usuarios y las aplicaciones pueden ser engañados para que traten un archivo como si tuviera un formato diferente simplemente cambiándole el nombre. Por ejemplo, un archivo HTML puede tratarse como texto plano añadiendo (o cambiando la extensión existente) filename.txt . Si bien esta estrategia es útil, puede resultar confusa para los usuarios menos técnicos que, accidentalmente, hacen que un archivo sea inutilizable (o lo "pierden"). Para intentar evitar esta situación, Windows y macOS permiten ocultar la extensión.

Sin embargo, ocultar la extensión puede crear la apariencia de varios archivos con el mismo nombre en la misma carpeta, lo cual resulta confuso. Por ejemplo, una imagen puede ser necesaria tanto en formato .eps (para publicación) como en formato .png (para sitios web) y se podrían nombrar con el mismo nombre base (por ejemplo, CompanyLogo.eps y CompanyLogo.png ). Con las extensiones ocultas, parecen tener el mismo nombre: CompanyLogo .

Ocultar las extensiones también puede suponer un riesgo de seguridad. [ 1 ] Por ejemplo, un usuario malintencionado podría crear un programa ejecutable con un nombre inocente como " Holiday photo.jpg.exe ". La extensión " .exe " estaría oculta y un usuario desprevenido vería " Holiday photo.jpg ", que parecería una imagen JPEG , normalmente incapaz de dañar el equipo. Sin embargo, el sistema operativo seguiría viendo la extensión " .exe " y ejecutaría el programa, que entonces podría dañar el ordenador. Lo mismo ocurre con los archivos con una sola extensión: como no se muestra al usuario, no se puede deducir ninguna información sobre el archivo sin investigarlo explícitamente. Para engañar aún más a los usuarios, es posible almacenar un icono dentro del programa, en cuyo caso la asignación de iconos de algunos sistemas operativos para el archivo ejecutable ( .exe ) se sobrescribiría con un icono comúnmente utilizado para representar imágenes JPEG, haciendo que el programa parezca una imagen. Las extensiones también pueden falsificarse: algunos virus de macro de Microsoft Word crean un archivo de Word en formato de plantilla y lo guardan con una extensión .doc . Dado que Word generalmente ignora las extensiones y se fija en el formato del archivo, estos se abrirían como plantillas, se ejecutarían y propagarían el virus. Esto representa un problema práctico para los sistemas Windows, donde la ocultación de extensiones está activada de forma predeterminada.

metadatos internos

El formato de un archivo puede indicarse dentro del propio archivo , ya sea como información destinada a este fin o como datos identificables dentro del formato que pueden utilizarse para la identificación, aunque ese no sea su propósito previsto.

A menudo, la información colocada intencionalmente se ubica al principio de un archivo, ya que es relativamente fácil de leer tanto para los usuarios como para las aplicaciones. Cuando la información al principio del archivo es una estructura que contiene otros metadatos , se suele denominar encabezado de archivo . Cuando el archivo comienza con un dato relativamente pequeño que solo indica el formato, se suele denominar número mágico .

Encabezado del archivo

Los metadatos de la cabecera de un archivo suelen almacenarse al inicio del mismo, pero también pueden aparecer en otras zonas, a menudo incluyendo el final, dependiendo del formato del archivo o del tipo de datos que contenga. Los archivos de texto suelen tener cabeceras de caracteres, mientras que los formatos binarios suelen tener cabeceras binarias, aunque esto no es una regla general. Las cabeceras de archivos de texto suelen ocupar más espacio, pero al ser legibles, se pueden examinar fácilmente con programas sencillos como un editor de texto o un editor hexadecimal.

Además de indicar el formato del archivo, los encabezados pueden contener metadatos sobre el archivo y su contenido. Por ejemplo, la mayoría de los archivos de imagen almacenan información sobre el formato, el tamaño, la resolución y el espacio de color de la imagen , y opcionalmente información sobre el autor , como quién la tomó, cuándo y dónde, qué modelo de cámara y configuración fotográfica se utilizó ( Exif ), etc. Estos metadatos pueden ser utilizados por el software que lee o interpreta el archivo durante el proceso de carga y posteriormente.

Los encabezados de archivo pueden ser utilizados por un sistema operativo para obtener rápidamente información sobre un archivo sin cargarlo completamente en la memoria, pero esto consume más recursos del equipo que leer directamente la información del directorio . Por ejemplo, cuando un administrador de archivos gráfico necesita mostrar el contenido de una carpeta, debe leer los encabezados de muchos archivos antes de poder mostrar los iconos correspondientes, pero estos se encuentran en diferentes ubicaciones del medio de almacenamiento, por lo que el acceso a ellos lleva más tiempo. Una carpeta que contiene muchos archivos con metadatos complejos, como información de miniaturas , puede requerir un tiempo considerable antes de poder visualizarse.

Si una cabecera está codificada en binario de forma que requiere una interpretación compleja para ser reconocida, especialmente para la protección del contenido de los metadatos, existe el riesgo de que el formato del archivo se interprete erróneamente. Incluso podría estar mal escrito en el origen. Esto puede provocar que los metadatos se corrompan, lo que, en casos extremos, podría incluso hacer que el archivo sea ilegible.

Un ejemplo más complejo de encabezados de archivo son los que se utilizan para los formatos de archivo contenedor (o envoltorio).

Número mágico

Una forma de incorporar metadatos de tipo de archivo es almacenar un "número mágico" dentro del propio archivo. Originalmente, este término se usaba para identificadores de 2 bytes al inicio de los archivos, pero dado que cualquier secuencia binaria puede considerarse un número, cualquier característica de un formato de archivo que lo distinga de forma única puede usarse para su identificación. Las imágenes GIF , por ejemplo, siempre comienzan con la representación ASCIIGIF87a de o GIF89a, dependiendo del estándar al que se adhieren. Muchos tipos de archivo, especialmente los archivos de texto plano, son más difíciles de detectar con este método. Los archivos HTML, por ejemplo, pueden comenzar con la cadena (que no distingue entre mayúsculas y minúsculas), o una definición de tipo de documento apropiada que comienza con , o, para XHTML , el identificador XML , que comienza con . Los archivos también pueden comenzar con comentarios HTML, texto aleatorio o varias líneas vacías, pero aún así ser HTML utilizable.<html><!DOCTYPE html<?xml

El método del número mágico ofrece mejores garantías de que el formato se identificará correctamente y, a menudo, permite obtener información más precisa sobre el archivo. Dado que las pruebas de "número mágico" razonablemente fiables pueden ser bastante complejas, y cada archivo debe probarse efectivamente con todas las posibilidades de la base de datos mágica, este método es relativamente ineficiente, especialmente para mostrar listas extensas de archivos (en contraste, los métodos basados ​​en el nombre del archivo y los metadatos solo necesitan verificar un dato y compararlo con un índice ordenado). Además, los datos deben leerse del propio archivo, lo que aumenta la latencia en comparación con los metadatos almacenados en el directorio. Cuando los tipos de archivo no se prestan al reconocimiento de esta manera, el sistema debe recurrir a los metadatos. Sin embargo, es la mejor manera para que un programa verifique si el archivo que se le ha indicado procesar tiene el formato correcto: si bien el nombre o los metadatos del archivo pueden modificarse independientemente de su contenido, fallar una prueba de número mágico bien diseñada es una señal bastante segura de que el archivo está dañado o es del tipo incorrecto. Por otro lado, un número mágico válido no garantiza que el archivo no esté dañado o que sea del tipo correcto.

Las llamadas líneas shebang en los archivos de script son un caso especial de números mágicos. En estos casos, el número mágico consiste en un texto legible dentro del archivo que identifica un intérprete específico y las opciones que se le deben pasar.

Otro sistema operativo que utiliza números mágicos es AmigaOS , donde estos se denominaban "Magic Cookies" y se adoptaron como sistema estándar para reconocer archivos ejecutables en formato Hunk , así como para permitir que programas, herramientas y utilidades individuales gestionaran automáticamente sus archivos de datos guardados, o cualquier otro tipo de archivo, al guardar y cargar datos. Este sistema se mejoró posteriormente con el sistema de reconocimiento de tipos de datos estándar de Amiga . Otro método fue el método FourCC , originado en OSType de Macintosh, y posteriormente adaptado por el formato de archivo de intercambio (IFF) y sus derivados.

metadatos externos

Una última forma de almacenar el formato de un archivo es guardar explícitamente la información sobre el formato en el sistema de archivos, en lugar de dentro del propio archivo.

Este enfoque mantiene los metadatos separados tanto de los datos principales como del nombre, pero también es menos portable que las extensiones de archivo o los "números mágicos", ya que el formato debe convertirse de un sistema de archivos a otro. Si bien esto también ocurre hasta cierto punto con las extensiones de archivo —por ejemplo, para la compatibilidad con el límite de tres caracteres de MS-DOS— , la mayoría de los sistemas de almacenamiento tienen una definición aproximadamente equivalente de los datos y el nombre de un archivo, pero pueden tener una representación variable o nula de los metadatos adicionales.

Cabe destacar que los archivos ZIP y otros archivos comprimidos resuelven el problema de la gestión de metadatos. Un programa de utilidad recopila varios archivos junto con los metadatos de cada uno y las carpetas/directorios de origen, todo ello en un único archivo (por ejemplo, un archivo ZIP con extensión .zip ). Este nuevo archivo también se comprime y, posiblemente, se cifra, pero ahora se puede transmitir como un único archivo entre sistemas operativos mediante FTP o enviar por correo electrónico como archivo adjunto. En el destino, el archivo recibido debe descomprimirse con una utilidad compatible para poder utilizarse. De esta forma, se solucionan los problemas de gestión de metadatos mediante archivos ZIP o archivos comprimidos.

Códigos de tipo de Mac OS

El sistema de archivos jerárquico ( HSF) y el sistema de archivos HFS+ de Mac OS , así como el sistema de archivos de Apple (AFS) , almacenan códigos de creador y tipo como parte de la entrada de directorio para cada archivo. Estos códigos se denominan OSTypes. Podían ser cualquier secuencia de 4 bytes, pero a menudo se elegían de forma que la representación ASCII formara una secuencia de caracteres significativos, como una abreviatura del nombre de la aplicación o las iniciales del desarrollador. Por ejemplo, un archivo "stack" de HyperCard tiene como creador WILD (derivado del nombre anterior de HyperCard, "WildCard") y como tipo STAK . El editor de texto BBEdit tiene como código de creador el nombre de su programador original, Rich Siegel . El código de tipo especifica el formato del archivo, mientras que el código de creador especifica el programa predeterminado con el que se abrirá al hacer doble clic. Por ejemplo, el usuario podría tener varios archivos de texto con el código de tipo TEXT , pero cada uno se abriría en un programa diferente debido a sus distintos códigos de creador. Esta función se diseñó para que, por ejemplo, los archivos de texto plano legibles por humanos pudieran abrirse en un editor de texto de uso general, mientras que los archivos de código HTML o de programación se abrieran en un editor especializado o en un entorno de desarrollo integrado ( IDE) . Sin embargo, esta función solía generar confusión entre los usuarios, ya que a menudo era impredecible qué programa se abriría al hacer doble clic en los archivos.R*ch

RISC OS utiliza un sistema similar, que consiste en un número de 12 bits que se puede consultar en una tabla de descripciones; por ejemplo, el número hexadecimalFF5 se "alias" con PoScript , que representa un archivo PostScript .

Identificadores de tipo uniforme (UTI) de macOS

Un identificador uniforme de tipo (UTI) es un método utilizado en macOS para identificar de forma única clases de entidades con un tipo definido, como los formatos de archivo. Fue desarrollado por Apple como sustituto de OSType (códigos de tipo y creador).

La UTI es una cadena de Core Foundation que utiliza una cadena DNS inversa . Algunos tipos comunes y estándar usan un dominio llamado "public" (por ejemplo, public.png para una imagen Portable Network Graphics ), mientras que otros dominios pueden usarse para tipos de terceros (por ejemplo, com.adobe.pdf para Portable Document Format ). Las UTI se pueden definir dentro de una estructura jerárquica, conocida como jerarquía de conformidad. Así, public.png se ajusta a un supertipo de public.image , que a su vez se ajusta a un supertipo de public.data . Una UTI puede existir en múltiples jerarquías, lo que proporciona una gran flexibilidad.

Además de los formatos de archivo, las UTI también se pueden utilizar para otras entidades que pueden existir en macOS, entre ellas:

  • Datos del portapapeles
  • Carpetas (directorios)
  • Tipos traducibles (según lo gestiona el Gestor de traducciones)
  • Paquetes
  • Marcos de trabajo
  • Datos en tiempo real
  • Alias ​​y enlaces simbólicos

Catálogo VSAM

En IBM OS/VS a través de z/OS , el catálogo VSAM (anterior a los catálogos ICF ) y el registro de volumen VSAM en el conjunto de datos de volumen VSAM (VVDS) (con catálogos ICF) identifican el tipo de conjunto de datos VSAM.

VTOC

En IBM OS/360 hasta z/OS , un bloque de control de conjunto de datos (DSCB) de formato 1 o 7 en la tabla de contenido del volumen (VTOC) identifica la organización del conjunto de datos ( DSORG ) del conjunto de datos que describe.

Atributos extendidos de OS/2

Los sistemas de archivos HPFS , FAT12 y FAT16 (pero no FAT32) permiten almacenar "atributos extendidos" en los archivos. Estos constan de un conjunto arbitrario de tripletas con un nombre, un tipo codificado para el valor y un valor, donde los nombres son únicos y los valores pueden tener hasta 64 KB de longitud. Existen significados estandarizados para ciertos tipos y nombres (en OS/2 ). Un ejemplo es que el atributo extendido ".TYPE" se utiliza para determinar el tipo de archivo. Su valor comprende una lista de uno o más tipos de archivo asociados al archivo, cada uno de los cuales es una cadena, como "Texto plano" o "Documento HTML". Por lo tanto, un archivo puede tener varios tipos.

El sistema de archivos NTFS también permite almacenar atributos extendidos de OS/2, como una de las bifurcaciones de archivos , pero esta característica solo está presente para dar soporte al subsistema OS/2 (no está presente en XP), por lo que el subsistema Win32 trata esta información como un bloque de datos opaco y no la utiliza. En su lugar, recurre a otras bifurcaciones de archivos para almacenar metainformación en formatos específicos de Win32. Los programas Win32 aún pueden leer y escribir atributos extendidos de OS/2, pero las aplicaciones deben analizar completamente los datos.

Atributos extendidos POSIX

En sistemas Unix y similares , los sistemas de archivos ext2 , ext3 , ext4 , ReiserFS versión 3, XFS , JFS , FFS y HFS+ permiten almacenar atributos extendidos en los archivos. Estos incluyen una lista arbitraria de cadenas "nombre=valor", donde los nombres son únicos y se puede acceder al valor a través de su nombre correspondiente.

Identificadores únicos de PRONOM (PUID)

El identificador único persistente (PUID) de PRONOM es un esquema extensible de identificadores persistentes, únicos e inequívocos para formatos de archivo, desarrollado por los Archivos Nacionales del Reino Unido como parte de su servicio de registro técnico PRONOM . Los PUID se pueden expresar como identificadores uniformes de recursos utilizando el espacio de nombres info:pronom/ . Si bien aún no se utiliza ampliamente fuera del gobierno del Reino Unido y algunos programas de preservación digital , el esquema PUID ofrece mayor granularidad que la mayoría de los esquemas alternativos.

Tipos MIME

Los tipos MIME se utilizan ampliamente en muchas aplicaciones relacionadas con Internet , y cada vez más en otros ámbitos, aunque su uso para información de tipo en disco es poco frecuente. Estos consisten en un sistema estandarizado de identificadores (gestionado por IANA ) que consta de un tipo y un subtipo , separados por una barra diagonal ; por ejemplo, text/html o image/gif . Originalmente, se concibieron como una forma de identificar el tipo de archivo adjunto a un correo electrónico , independientemente de los sistemas operativos de origen y destino. Los tipos MIME identifican archivos en BeOS , AmigaOS 4.0 y MorphOS , además de almacenar firmas de aplicación únicas para el inicio de aplicaciones. En AmigaOS y MorphOS, el sistema de tipos MIME funciona en paralelo con el sistema de tipos de datos específico de Amiga.

Sin embargo, existen problemas con los tipos MIME; varias organizaciones y personas han creado sus propios tipos MIME sin registrarlos correctamente en la IANA, lo que dificulta el uso de este estándar en algunos casos.

Identificadores de formato de archivo (FFID)

Los identificadores de formato de archivo son otra forma, no muy utilizada, de identificar formatos de archivo según su origen y su categoría. Fueron creados para el paquete de software Description Explorer. Se componen de varios dígitos de la forma NNNNNNNNN-XX-YYYYYYY. La primera parte indica la organización de origen/mantenedor (este número representa un valor en una base de datos de una empresa/organización de estándares), y los 2 dígitos siguientes categorizan el tipo de archivo en hexadecimal . La parte final se compone de la extensión de nombre de archivo habitual del archivo o el número estándar internacional del archivo, rellenado a la izquierda con ceros. Por ejemplo, la especificación del archivo PNG tiene el FFID de 000000001-31-0015948donde 31indica un archivo de imagen, 0015948es el número estándar e 000000001indica la Organización Internacional de Normalización (ISO).

Identificación de formato basada en el contenido del archivo

Otra forma menos común de identificar el formato de archivo es examinar su contenido en busca de patrones distintivos entre los diferentes tipos de archivo. El contenido de un archivo es una secuencia de bytes, y cada byte tiene 256 permutaciones únicas (0–255). Por lo tanto, contar la frecuencia de aparición de patrones de bytes, lo que a menudo se denomina distribución de frecuencia de bytes, proporciona patrones distintivos para identificar los tipos de archivo. Existen numerosos esquemas de identificación de tipos de archivo basados ​​en el contenido que utilizan una distribución de frecuencia de bytes para construir modelos representativos de tipos de archivo y emplean técnicas estadísticas y de minería de datos para identificarlos. [ 2 ]

Estructura de archivos

Existen varias formas de estructurar los datos en un archivo. Las más comunes se describen a continuación.

Formatos no estructurados (volcados de memoria sin procesar)

Los formatos de archivo anteriores utilizaban formatos de datos sin procesar que consistían en volcar directamente en el archivo las imágenes de memoria de una o más estructuras.

Esto presenta varios inconvenientes. A menos que las imágenes de memoria también tengan espacios reservados para futuras extensiones, ampliar y mejorar este tipo de archivo estructurado resulta muy difícil. Además, crea archivos que podrían ser específicos de una plataforma o lenguaje de programación (por ejemplo, una estructura que contiene una cadena de Pascal no se reconoce como tal en C ). Por otro lado, desarrollar herramientas para leer y escribir este tipo de archivos es muy sencillo.

Las limitaciones de los formatos no estructurados propiciaron el desarrollo de otros tipos de formatos de archivo que pudieran ampliarse fácilmente y, al mismo tiempo, ser compatibles con versiones anteriores.

Formatos basados ​​en fragmentos

En este tipo de estructura de archivos, cada dato está incrustado en un contenedor que lo identifica de alguna manera. El alcance del contenedor puede definirse mediante marcadores de inicio y fin, un campo de longitud explícito o requisitos fijos del formato de archivo.

A lo largo de la década de 1970, muchos programas utilizaron formatos de este tipo. Por ejemplo, procesadores de texto como troff , Script y Scribe , y archivos de exportación de bases de datos como CSV . Electronic Arts y Commodore - Amiga también utilizaron este tipo de formato de archivo en 1985, con su formato IFF (Interchange File Format).

A veces, un contenedor se denomina "fragmento" , aunque "fragmento" también puede implicar que cada pieza es pequeña y/o que los fragmentos no contienen otros fragmentos; muchos formatos no imponen esos requisitos.

La información que identifica un fragmento específico puede denominarse de diversas maneras, a menudo con términos como "nombre de campo", "identificador", "etiqueta" o "sello". Estos identificadores suelen ser legibles y clasifican partes de los datos: por ejemplo, como "apellido", "dirección", "rectángulo", "nombre de fuente", etc. No son lo mismo que los identificadores en el sentido de una clave de base de datos o un número de serie (aunque un identificador sí puede identificar sus datos asociados como si fuera una clave).

Con este tipo de estructura de archivos, las herramientas que desconocen ciertos identificadores de fragmentos simplemente omiten aquellos que no comprenden. Dependiendo del significado real de los datos omitidos, esto puede ser útil o no ( CSS define explícitamente este comportamiento).

Este concepto ha sido utilizado repetidamente por RIFF (equivalente de IFF de Microsoft-IBM), PNG, almacenamiento JPEG, flujos y archivos codificados con DER ( Distinguished Encoding Rules ) (que fueron descritos originalmente en CCITT X.409:1984 y, por lo tanto, son anteriores a IFF), y el formato de intercambio de datos estructurados (SDXF) .

De hecho, cualquier formato de datos debe identificar de alguna manera la importancia de sus partes componentes, y los marcadores de límites integrados son una forma obvia de hacerlo:

  • Los encabezados MIME lo hacen mediante una etiqueta separada por dos puntos al inicio de cada línea lógica. Los encabezados MIME no pueden contener otros encabezados MIME, aunque el contenido de datos de algunos encabezados tiene subpartes que pueden extraerse mediante otras convenciones.
  • Los archivos CSV y similares suelen hacerlo mediante registros de encabezado con nombres de campos y comas para delimitar los campos. Al igual que MIME, CSV no admite estructuras con más de un nivel.
  • XML y formatos similares pueden considerarse, en términos generales, un formato basado en fragmentos, ya que los elementos de datos se identifican mediante un marcado similar a los identificadores de fragmentos. Sin embargo, presenta ventajas formales como esquemas y validación , así como la capacidad de representar estructuras más complejas como árboles , grafos acíclicos dirigidos (DAG ) y diagramas . Si XML se considera un formato basado en fragmentos, entonces SGML y su predecesor , IBM GML, se encuentran entre los primeros ejemplos de este tipo de formatos.
  • JSON es similar a XML, pero sin esquemas, referencias cruzadas ni una definición del significado de los nombres de campo repetidos, y suele ser conveniente para los programadores.
  • YAML es similar a JSON, pero utiliza sangría para separar los bloques de datos y pretende ser más legible para los humanos que JSON o XML.
  • Los Protocol Buffers son a su vez similares a JSON, en particular porque reemplazan los marcadores de límite en los datos con números de campo, que se asignan a/desde nombres mediante algún mecanismo externo.

Formatos basados ​​en directorios

Este es otro formato extensible que se asemeja mucho a un sistema de archivos ( los documentos OLE son sistemas de archivos reales), donde el archivo se compone de "entradas de directorio" que contienen la ubicación de los datos dentro del propio archivo, así como sus firmas (y en ciertos casos su tipo). Buenos ejemplos de este tipo de estructuras de archivos son las imágenes de disco , los ejecutables , los documentos OLE TIFF y las bibliotecas .

Algunos formatos de archivo, como ODT y DOCX, al estar basados ​​en PKZIP , están divididos en fragmentos y contienen un directorio.

La estructura de un formato de archivo basado en directorios se presta a modificaciones con mayor facilidad que los formatos no estructurados o basados ​​en fragmentos. La naturaleza de este tipo de formato permite a los usuarios construir archivos cuidadosamente, lo que provoca que el software lector realice acciones que los autores del formato nunca pretendieron. Un ejemplo de esto es la bomba zip . Los formatos de archivo basados ​​en directorios también utilizan valores que apuntan a otras áreas del archivo, pero si algún valor de datos posterior apunta a datos leídos anteriormente, puede resultar en un bucle infinito para cualquier software lector que asuma que el archivo de entrada es válido y siga el bucle ciegamente.

Véase también

Referencias

  1. PC World (23 de diciembre de 2003). "Consejos de Windows: Por motivos de seguridad, conviene conocer las extensiones de archivo" . Archivado del original el 23 de abril de 2008. Consultado el 20 de junio de 2008 .
  2. "Identificación del formato de archivo" . Archivado del original el 14 de agosto de 2009. Consultado el 21 de julio de 2009 .
  • "Tipos de datos de atributos extendidos" . Consejos y trucos de REXX, versión 2.80 . Archivado del original el 25 de diciembre de 2004. Consultado el 9 de febrero de 2005 .
  • "Atributos extendidos utilizados por WPS" . Consejos y trucos de REXX, versión 2.80 . Archivado del original el 21 de marzo de 2005. Consultado el 9 de febrero de 2005 .
  • "Atributos extendidos: ¿qué son y cómo se pueden usar  ?" . Roger Orr . Archivado del original el 21 de marzo de 2008. Consultado el 9 de febrero de 2005 .
  • Lista alfabética de descripciones de formatos de archivo en la Biblioteca del Congreso.
  • Buenas prácticas para formatos de archivo , EE. UU.: Bibliotecas de la Universidad de Stanford , Servicios de gestión de datos("Los formatos de archivo que utilice tienen un impacto directo en su capacidad para abrir esos archivos posteriormente y en la capacidad de otras personas para acceder a esos datos")