Una extensión de archivo , también conocida como extensión de nombre de archivo o extensión de archivo , es un sufijo que se añade al nombre de un archivo informático (por ejemplo, .txt, .mp3, .exe) e indica una característica del contenido del archivo o su uso previsto. Normalmente, una extensión de archivo se separa del resto del nombre con un punto , pero en algunos sistemas [ 1 ] se separa con espacios.
Algunos sistemas de archivos , como el sistema de archivos FAT utilizado en DOS , implementan las extensiones de nombre de archivo como una característica del propio sistema de archivos y pueden limitar la longitud y el formato de la extensión, mientras que otros, como los sistemas de archivos Unix , el sistema de archivos VFAT y NTFS , tratan las extensiones de nombre de archivo como parte del nombre de archivo sin ninguna distinción especial.
Historia
El concepto básico de extensiones para indicar el tipo de archivo se introdujo por primera vez en el CTSS del MIT en 1961. Este sistema almacenaba dos nombres distintos para cada archivo: nombre de archivo y nombre de clase, que corresponden al nombre y extensión actuales. Internamente, se almacenaban en campos diferentes del sistema de archivos, pero para facilitar la entrada, el usuario especificaba el tipo mediante un punto, que se eliminaba al guardar el archivo. El sistema, que se ejecutaba en el IBM 7090 , tenía cuatro palabras de 36 bits para almacenar la información; las dos primeras palabras contenían hasta 6 caracteres para el nombre y la clase, respectivamente. [ 2 ]
IBM adoptó los conceptos de CTSS como base para sus propios experimentos de tiempo compartido en el Centro Científico de Cambridge, en el mismo edificio del MIT donde se estaba escribiendo CTSS. Esto se convirtió en el Sistema de Monitor Conversacional (originalmente Cambridge ) para el System/360 . [ 3 ] El concepto también fue adoptado tempranamente por los experimentos de DEC en tiempo compartido en el PDP-6 y su sucesor, el PDP-10 . Este último se convirtió en TOPS-10 , una de las principales ofertas de DEC hasta la década de 1980, seguida por RT-11 . Fueron las versiones de DEC las que inspiraron a sistemas operativos de microcomputadoras posteriores a adoptar el mismo concepto, primero con CP/M [ 4 ] y luego DOS .
El sistema de archivos Multics llevó este concepto más allá al adoptar la idea de hacer que la extensión formara parte del nombre del archivo, en lugar de una bandera de tipo dedicada separada. Esto fue parte de una expansión más amplia del sistema de archivos que incluyó nombres de longitud variable de hasta 255 caracteres. Con nombres tan largos, no había necesidad de dedicar almacenamiento solo al tipo, y el "." era simplemente otro carácter en el nombre. Algunos componentes de Multics, y aplicaciones que se ejecutan en él, usan sufijos para indicar tipos de archivo, pero no todos los archivos requieren un sufijo; por ejemplo, los ejecutables y los archivos de texto ordinarios generalmente no tienen sufijos en sus nombres. Normalmente eran las utilidades para el usuario las que examinaban el nombre para la última parte con puntos para recuperar el tipo, si se deseaba. [ 5 ] Multics fue el impulso para UNIX , [ 6 ] que siguió el mismo patrón.
Compatibilidad con sistemas operativos y sistemas de archivos.
Los sistemas de archivos para sistemas operativos tipo UNIX también almacenan el nombre del archivo como una sola cadena, con "." como un carácter más en el nombre del archivo. A veces se dice que un archivo con más de un sufijo tiene más de una extensión, aunque la terminología varía al respecto, y la mayoría de los autores definen la extensión de una manera que no permite más de una en el mismo nombre de archivo. Más de una extensión generalmente representa transformaciones anidadas, como (el indica que el archivo es un archivo tar de uno o más archivos, y el indica que el archivo tar está comprimido con gzip ). Los programas que transforman o crean archivos pueden agregar la extensión apropiada a los nombres inferidos de los nombres de archivo de entrada (a menos que se proporcione explícitamente un nombre de archivo de salida), pero los programas que leen archivos generalmente ignoran la información; está destinada principalmente al usuario humano. Es más común, especialmente en archivos binarios, que el archivo contenga metadatos internos o externos que describan su contenido. Este modelo generalmente requiere que se proporcione el nombre de archivo completo en los comandos, mientras que el enfoque de metadatos a menudo permite que se omita la extensión.files.tar.gz.tar.gz
En DOS y Windows de 16 bits , los nombres de archivo tienen un máximo de 8 caracteres, un punto y una extensión de hasta tres letras. El sistema de archivos FAT para DOS y Windows almacena los nombres de archivo como un nombre de 8 caracteres y una extensión de tres caracteres. El punto no se almacena.
El sistema de archivos de alto rendimiento (HPFS), utilizado en los sistemas operativos OS/2 de Microsoft e IBM , almacena el nombre del archivo como una sola cadena, donde el carácter "." se considera un carácter más del nombre. Se mantuvo la convención de usar sufijos, a pesar de que HPFS admite atributos extendidos para los archivos, lo que permite almacenar el tipo de archivo como un atributo extendido.
El sistema de archivos nativo de Windows NT de Microsoft , NTFS , y el posterior ReFS , también almacenan el nombre del archivo como una sola cadena; nuevamente, se mantuvo la convención de usar sufijos para simular extensiones, para garantizar la compatibilidad con las versiones existentes de Windows. En Windows NT 3.5 , apareció una variante del sistema de archivos FAT, llamada VFAT , que admite nombres de archivo más largos, tratándolos como una sola cadena.
Windows 95 , con VFAT, introdujo la compatibilidad con nombres de archivo largos y eliminó la división nombre/extensión de la versión 8.3 en los nombres de archivo de las versiones de Windows que no eran NT.
El Mac OS clásico eliminó por completo los metadatos de extensión basados en el nombre del archivo; en su lugar, utilizó un código de tipo de archivo distinto para identificar el formato del archivo. Además, se especificó un código de creador para determinar qué aplicación se abriría al hacer doble clic en el icono del archivo . [ 7 ] macOS , sin embargo, utiliza sufijos de nombre de archivo como consecuencia de derivar del sistema operativo NeXTSTEP , similar a UNIX , además de utilizar códigos de tipo y de creador.
En los sistemas Commodore, los archivos solo pueden tener cuatro extensiones: PRG, SEQ, USR y REL. Sin embargo, estas se utilizan para diferenciar los tipos de datos que usa un programa y no son relevantes para identificar su contenido.
Con la llegada de las interfaces gráficas de usuario , surgió el problema de la gestión de archivos y el comportamiento de la interfaz. Microsoft Windows permitía asociar varias aplicaciones a una misma extensión, y existían diferentes acciones para seleccionar la aplicación deseada, como un menú contextual que ofrecía la opción de ver, editar o imprimir el archivo. Se seguía asumiendo que cualquier extensión representaba un único tipo de archivo; existía una correspondencia inequívoca entre la extensión y el icono.
Cuando llegó la era de Internet , quienes usaban sistemas Windows que aún estaban restringidos al formato de nombre de archivo 8.3 tenían que crear páginas web con nombres que terminaban en .HTM, mientras que quienes usaban computadoras Macintosh o UNIX podían usar la .htmlextensión de nombre de archivo recomendada. Esto también se convirtió en un problema para los programadores que experimentaban con el lenguaje de programación Java , ya que requiere el sufijo de cuatro letras .javapara los archivos de código fuente y el sufijo de cinco letras .classpara los archivos de salida de código objeto del compilador de Java . [ 8 ]
Tipo de contenido
Las extensiones de nombre de archivo pueden considerarse un tipo de metadatos . [ 9 ] Se utilizan comúnmente para implicar información sobre la forma en que los datos podrían almacenarse en el archivo. La definición exacta, que da los criterios para decidir qué parte del nombre del archivo es su extensión, pertenece a las reglas del sistema de archivos específico utilizado; por lo general, la extensión es la subcadena que sigue a la última aparición, si la hay, del carácter de punto ( ejemplo:txt es la extensión del nombre de archivo readme.txt, y htmlla extensión de index.html). En los sistemas de archivos de algunos sistemas mainframe como CMS en VM , VMS , y de sistemas PC como CP/M y sistemas derivados como MS-DOS , la extensión es un espacio de nombres separado del nombre de archivo. En DOS y Windows de Microsoft , las extensiones como EXE, COMo BATindican que un archivo es un ejecutable de programa . En OS/360 y sus sucesores , la parte del nombre del conjunto de datos que sigue al último punto, denominada calificador de bajo nivel, es tratada como una extensión por algunos programas, por ejemplo, TSO EDIT, pero no tiene ninguna importancia especial para el propio sistema operativo; lo mismo se aplica a los archivos Unix en MVS.
La extensión del nombre de archivo se usaba originalmente para determinar el tipo genérico del archivo. La necesidad de condensar el tipo de un archivo en tres caracteres frecuentemente llevó a extensiones abreviadas. Ejemplos incluyen el uso de para archivos gráficos, para texto plano y para música. Sin embargo, debido a que se han creado muchos programas de software diferentes que manejan estos tipos de datos (y otros) de diversas maneras, las extensiones de nombre de archivo comenzaron a asociarse estrechamente con ciertos productos, incluso versiones específicas de productos. Por ejemplo, los primeros archivos de WordStar usaban o , donde n era el número de versión del programa. Además, se desarrollaron usos conflictivos de algunas extensiones de nombre de archivo. Un ejemplo es , usado tanto para paquetes de RPM Package Manager como para archivos de RealPlayer Media;. [ 10 ] Otros son , compartido por fuentes DESQview , libros de contabilidad financieros de Quicken e imágenes de QuickTime ; [ 11 ] , compartido por scripts de GrabIt e imágenes ROM de Game Boy Advance ; [ 12 ] , usado para SmallBasic y Scratch ; y , usado para Dynamix Three Space y DTS ..GFX.TXT.MUS.WS.WSn.rpm.qif.gba.sb.dts
Comparado con el tipo MIME
En muchos protocolos de Internet , como HTTP y el correo electrónico MIME , el tipo de un flujo de bits se indica mediante el tipo de medio , o tipo MIME, del flujo, en lugar de una extensión de archivo. Esto se especifica en una línea de texto que precede al flujo, como Content-type: text/plain .
No existe una correspondencia estándar entre las extensiones de archivo y los tipos de medios, lo que puede provocar discrepancias en la interpretación entre autores, servidores web y software cliente al transferir archivos por Internet. Por ejemplo, un autor de contenido puede especificar la extensión svgz para un archivo Scalable Vector Graphics comprimido , pero un servidor web que no reconozca esta extensión podría no enviar el tipo de contenido correcto application/svg+xml ni su encabezado de compresión necesario, lo que impediría que los navegadores web interpretaran y mostraran correctamente la imagen.
BeOS , cuyo sistema de archivos BFS admite atributos extendidos, etiquetaría un archivo con su tipo de medio como un atributo extendido. Algunos entornos de escritorio , como KDE Plasma y GNOME , asocian un tipo de medio a un archivo examinando tanto el sufijo del nombre de archivo como el contenido del archivo, al estilo del comando `file` , como una heurística . Eligen la aplicación que se ejecutará cuando se abra un archivo en función de ese tipo de medio, reduciendo la dependencia de las extensiones de nombre de archivo. macOS utiliza tanto las extensiones de nombre de archivo como los tipos de medio, así como los códigos de tipo de archivo , para seleccionar un identificador de tipo uniforme (UTI) con el que identificar internamente el tipo de archivo.
Programas ejecutables
El uso de una extensión de nombre de archivo en el nombre de un comando aparece ocasionalmente, generalmente como un efecto secundario de que el comando se haya implementado como un script, por ejemplo, para el shell Bourne o para Python , y el nombre del intérprete se agrega como sufijo al nombre del comando, una práctica común en sistemas que dependen de asociaciones entre la extensión del nombre de archivo y el intérprete, pero fuertemente desaconsejada [ 13 ] en sistemas tipo Unix , como Linux , Oracle Solaris , sistemas basados en BSD y macOS de Apple , donde el intérprete normalmente se especifica como un encabezado en el script (" shebang ").
En los sistemas basados en asociaciones, la extensión del nombre de archivo generalmente se asigna a una única selección de intérprete para todo el sistema (por ejemplo, ".py" significa usar Python), y el comando en sí se puede ejecutar desde la línea de comandos incluso si se omite la extensión (siempre que se haya realizado la configuración adecuada). Si se cambia el lenguaje de implementación, también se cambia la extensión del nombre del comando, y el sistema operativo proporciona una API consistente al permitir que se use la misma versión del comando sin extensión en ambos casos. Este método presenta algunas limitaciones debido a la naturaleza esencialmente global de la asignación de asociaciones, así como a que los desarrolladores evitan parcialmente las extensiones al llamar a los programas, y a que no pueden forzar dicha evitación. Windows es el único sistema operativo que aún utiliza ampliamente este mecanismo.
En sistemas con directivas de intérprete , incluyendo prácticamente todas las versiones de Unix, las extensiones de nombre de comando no tienen ninguna importancia especial y, por práctica habitual, no se utilizan, ya que el método principal para configurar intérpretes para scripts es comenzarlos con una sola línea que especifique el intérprete a usar. En estos entornos, incluir la extensión en el nombre de un comando expone innecesariamente un detalle de implementación que pone en riesgo todas las referencias a los comandos desde otros programas si la implementación cambia. Por ejemplo, sería perfectamente normal que un script de shell se reimplementara en Python o Ruby, y posteriormente en C o C++, lo que cambiaría el nombre del comando si se usaran extensiones. Sin extensiones, un programa siempre tiene el mismo nombre sin extensión, cambiando solo la directiva del intérprete o el número mágico , y las referencias al programa desde otros programas siguen siendo válidas.
Problemas de seguridad
Las extensiones de archivo por sí solas no son un indicador confiable del tipo de archivo, ya que la extensión puede modificarse sin cambiar el contenido del archivo, por ejemplo, para ocultar contenido malicioso . Por lo tanto, especialmente en el contexto de la ciberseguridad , para un archivo en un formato de archivo que tiene un número mágico , que es una secuencia distintiva de bytes adjunta a un encabezado de un archivo, la verdadera naturaleza del archivo debe determinarse verificando un número mágico. Esto se logra utilizando software de identificación de archivos o un editor hexadecimal , que proporciona un volcado hexadecimal del contenido de un archivo. [ 14 ] Por ejemplo, en sistemas tipo UNIX , no es raro encontrar archivos sin ninguna extensión, [ 15 ] ya que se supone que se utilizan comandos como fileen su lugar, y leerán el encabezado del archivo para determinar su contenido.
El malware, como los troyanos, suele presentarse como un archivo ejecutable , pero cualquier tipo de archivo que realice operaciones de entrada/salida puede contener código malicioso. Se ha descubierto que algunos tipos de archivos de datos, como los PDF, son vulnerables a exploits que provocan desbordamientos de búfer . [ 16 ] Se han detectado casos de malware diseñado para explotar dichas vulnerabilidades en algunas aplicaciones de Windows al abrir un archivo con una extensión de nombre de archivo excesivamente larga y no controlada.
Los administradores de archivos pueden tener una opción para ocultar las extensiones de los nombres de archivo. Este es el caso del Explorador de archivos , el explorador de archivos proporcionado con Microsoft Windows , que por defecto no muestra las extensiones. Usuarios malintencionados han intentado propagar virus y gusanos informáticos utilizando nombres de archivo con el formato LOVE-LETTER-FOR-YOU.TXT.vbs. La idea es que esto aparezca como LOVE-LETTER-FOR-YOU.TXT, un archivo de texto inofensivo, sin alertar al usuario de que se trata de un programa informático dañino, en este caso, escrito en VBScript . [ 16 ] El comportamiento predeterminado de ReactOS es mostrar las extensiones de los nombres de archivo en el Explorador de ReactOS . Las versiones posteriores de Windows (a partir de Windows XP Service Pack 2 y Windows Server 2003 ) incluyeron listas personalizables de extensiones de nombres de archivo que deberían considerarse "peligrosas" en ciertas "zonas" de operación, como cuando se descargan de la web o se reciben como archivo adjunto de correo electrónico. Los sistemas modernos de software antivirus también ayudan a proteger a los usuarios contra este tipo de intentos de ataque cuando es posible.
Un virus puede asociarse a un ejecutable sin modificarlo realmente. Estos virus, conocidos como virus acompañantes , se adjuntan de tal manera que se ejecutan cuando se solicita el archivo original. Una forma en que un virus logra esto es dándole al virus el mismo nombre que al archivo objetivo, pero con una extensión diferente a la que el sistema operativo da prioridad, y a menudo asignándole al primero un atributo "oculto" para disimular la existencia del malware. La eficacia de este método depende de si el usuario intenta abrir el archivo deseado ingresando un comando y si el usuario incluye la extensión. Las versiones más recientes de DOS y Windows buscan e intentan ejecutar .COMprimero los archivos por defecto, seguidos de .EXEy finalmente .BATlos archivos. En este caso, el archivo infectado es el que tiene la .COMextensión, que el usuario ejecuta sin darse cuenta. [ 15 ] [ 16 ]
Algunos virus se aprovechan de la similitud entre el dominio de nivel superior " .com " y la extensión del nombre de archivo, enviando por correo electrónico archivos adjuntos maliciosos y ejecutables con nombres superficialmente similares a las URL ( por ejemplo , "myparty.yahoo.com"), con el efecto de que los usuarios desprevenidos hacen clic en enlaces incrustados en el correo electrónico que creen que conducen a sitios web, pero que en realidad descargan y ejecutan los archivos adjuntos maliciosos..COM
Véase también
Referencias
- ↑ "¿Qué es un archivo?" (PDF) . Introducción a z/VM 7.2 CMS (PDF) . IBM. 5 de diciembre de 2021. pág. 7. SC24-6265-01.
Una cosa que debe saber sobre la creación de archivos con z/VM es que cada archivo necesita su propio identificador de tres partes. La primera parte del identificador es el nombre del archivo. La segunda parte es el tipo de archivo. Y la tercera parte es el modo de archivo. Estos tres identificadores de archivo a menudo se abrevian fn ft fm.
- ↑ CTSS 1963 , pág. 24.
- ↑ "El origen del sistema de tiempo compartido VM/370" (PDF) . IBM Journal Res. Develope . Septiembre de 1981. Archivado (PDF) del original el 7 de marzo de 2022. Consultado el 31 de mayo de 2026 .
- ↑ Warren, Jim (abril de 1976). "Primeras impresiones sobre un sistema operativo para disquetes". Dr. Dobb's Journal . Vol. 1, n.º 4, pág. 5.
- ↑ "Un sistema de archivos de propósito general para almacenamiento secundario" . Actas de la conferencia conjunta de informática de otoño del 30 de noviembre al 1 de diciembre de 1965, parte I. 30 de noviembre de 1965. Archivado del original el 6 de diciembre de 2025. Consultado el 31 de mayo de 2026 .
- ↑ Brown, Gordon. Unix: Una historia oral (Informe técnico).
- ↑ "Códigos de Mac Creator y tipo de archivo" . livecode.byu.edu . Archivado del original el 2 de julio de 2022. Consultado el 2 de septiembre de 2022 .
- ↑ "javac – Compilador del lenguaje de programación Java" . Sun Microsystems, Inc. 2004. Consultado el 31 de mayo de 2009. Los
nombres de los archivos de código fuente deben tener el sufijo .java, los nombres de los archivos de clase deben tener el sufijo .class, y tanto los archivos de código fuente como los de clase deben tener nombres raíz que identifiquen la clase.
- ↑ Stauffer, Todd; McElhearn, Kirk (2006). Mastering Mac OS X. John Wiley & Sons. págs. 95–96 . ISBN 9780782151282Consultado el 2 de octubre de 2017 .
- ↑ Detalles de la extensión de archivo .RPM de filext.com
- ↑ Detalles de la extensión de archivo .QIF Archivados el 16/12/2007 en Wayback Machine desde filext.com
- ↑ Detalles de la extensión de archivo .GBA Archivados el 13/12/2007 en Wayback Machine desde filext.com
- ↑ "Se consideran perjudiciales las extensiones de nombres de comandos" . Archivado del original el 16 de junio de 2011. Consultado el 4 de diciembre de 2010 .
- ↑ Aquilina, James M.; Casey, Eoghan ; Malin, Cameron H. (2008). Malware Forensics: Investigating and Analyzing Malicious Code . Syngress . pp. 211, 298–299 . ISBN 978-1-59749-268-3. Consultado el 25 de febrero de 2025 .
- 1 2 Skoudis, Ed; Zeltser, Lenny (2004). Malware: Luchando contra el código malicioso . Prentice Hall . págs. 32–34 , 253–254 . ISBN 0-13-101405-6Archivado del original el 1 de julio de 2025. Consultado el 25 de febrero de 2025 .
- 1 2 3 Grimes, Roger (agosto de 2001). Código móvil malicioso: protección antivirus para Windows . O'Reilly Media . págs. 41–42 , 71–74 , 221–222 , 395–396 , 422. ISBN 1-56592-682-X. Consultado el 25 de febrero de 2025 .
Bibliografía
- Sistema de tiempo compartido compatible: Guía del programador (PDF) . MIT. 1963.
Enlaces externos
Contenido multimedia relacionado con las extensiones de archivos en Wikimedia Commons.- Base de datos de extensiones de nombres de archivo en FileInfo.com
- formatos de archivos informáticos
- Metadatos
- archivos informáticos
- Nombres
- extensiones de nombre de archivo