맨위로가기

파일 형식

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

파일 형식은 컴퓨터에서 정보를 저장하고 관리하는 방식이며, 운영 체제와 응용 프로그램은 다양한 파일 형식을 인식하고 처리한다. 파일 형식은 파일 식별 방법, 내부 데이터 구성, 그리고 데이터의 종류에 따라 분류되며, 파일 확장자, 내부 메타데이터, 외부 메타데이터 등을 통해 식별된다. 파일 형식에는 텍스트, 문서, 이미지, 오디오, 비디오, 압축 파일 등 다양한 종류가 있으며, 각각의 형식은 데이터의 구조와 특성에 따라 다른 방식으로 구성된다. 파일 형식은 특허 문제, 파일 연관 문제 등과 같은 문제에 직면하기도 한다.

더 읽어볼만한 페이지

  • 파일 포맷 - 바로 가기
    바로 가기는 운영체제에서 파일, 폴더, 프로그램, 웹 페이지에 대한 참조를 제공하는 기능 및 파일로, 사용자들이 원본에 빠르게 접근하도록 GUI 환경의 사용성을 향상시킨다.
  • 파일 포맷 - EXE
    EXE 파일 형식은 운영 체제에 따라 다양한 종류가 있는 실행 파일의 한 형태로, DOS MZ 실행 파일에서 PE, PE32+까지 발전해 왔으며, 코드, 데이터, 스택을 별도 관리하고 재배치 항목을 통해 실행 환경에 유연하게 대응하는 특징을 가진다.
파일 형식

2. 파일 형식 식별 방법

컴퓨터에서 문서, 음성, 이미지, 동영상 등의 미디어나 프로그램은 파일 형태로 저장된다. 정보가 통일된 순서와 구조로 파일에 저장되어 있으면, OS나 애플리케이션은 일관된 방식으로 파일에 접근하여 정보를 이용할 수 있다. 이를 가능하게 하는 파일 내 정보 저장 규격이 바로 파일 형식이다.

운영 체제는 특정 파일이 어떤 형식인지 알아내기 위해 전통적으로 다양한 접근 방식을 사용해 왔으며, 각각의 방식에는 장단점이 존재한다. 파일의 내용만 보고는 형식을 알기 어려운 경우가 많기 때문에, 여러 식별 방법이 고안되었다. 현대의 운영 체제와 응용 프로그램들은 대개 아래 설명된 여러 방법을 조합하여 사용한다.

주요 식별 방법은 다음과 같다.


  • 파일 확장자: 파일 이름 끝에 붙는 문자열(`.txt`, `.jpg` 등)로 형식을 구분하는 가장 일반적인 방법 중 하나이다. 윈도우나 macOS 등 많은 운영 체제에서 사용되지만, 사용자가 쉽게 변경할 수 있어 신뢰성이 낮고 보안 위험을 초래할 수 있다는 단점이 있다.
  • 내부 메타데이터: 파일 자체 내부에 형식 정보를 저장하는 방식이다. 파일 시작 부분에 위치하여 파일 형식이나 내용에 대한 정보를 담는 파일 헤더나, 특정 형식을 나타내는 고유한 짧은 바이트열인 매직 넘버가 대표적이다. 확장자보다 신뢰도가 높지만, 모든 파일 형식이 명확한 내부 정보를 가지는 것은 아니며 정보를 해석하는 데 더 많은 자원이 필요할 수 있다.
  • 외부 메타데이터: 파일 시스템 자체에 파일 형식 정보를 명시적으로 저장하는 방식이다. macOS의 타입 코드나 UTI, 유닉스 계열 시스템의 POSIX 확장 속성, 인터넷 환경에서 주로 사용되는 MIME 타입 등이 여기에 해당한다. 파일 시스템에 따라 지원 여부가 달라 다른 시스템으로 파일을 옮길 때 정보가 유실될 수 있는 등 이식성이 떨어질 수 있다.


한편, 파일 형식은 종종 해당 형식의 인코딩 방법 등을 설명하는 공개된 규격을 갖는다. 그러나 모든 형식이 자유롭게 이용 가능한 규격 문서를 가지고 있는 것은 아니다. 일부 개발자는 규격 문서를 영업 비밀로 취급하거나 공식 문서를 작성하지 않기도 한다. 공개 규격이 없으면 다른 개발자가 해당 파일을 사용하기 위해 역설계를 하거나 라이선스 비용을 지불해야 할 수 있으므로, 일반적으로 공개 규격을 가진 파일 형식이 더 많은 프로그램에서 지원되는 경향이 있다.

2. 1. 파일 확장자

윈도우, macOS, CP/M, 도스, VMS, VM/CMS 등 많은 운영 체제에서 파일 형식을 구분하기 위해 사용하는 일반적인 방법은 파일 이름 끝에 점(`.`) 뒤에 붙는 문자열, 즉 파일 확장자를 이용하는 것이다. 예를 들어, HTML 문서는 `.html`이나 `.htm`으로 끝나고, GIF 이미지는 `.gif`로 끝나는 이름으로 식별된다. 원래 FAT 파일 시스템에서는 파일 이름이 8자의 식별자와 3자의 확장자로 제한되었으나(8.3 파일 이름), 현대의 운영 체제는 이러한 제한이 없는 경우가 많다. 그럼에도 불구하고 많은 파일 형식이 여전히 세 글자 확장자를 사용하는 관습이 남아있다. 표준화된 확장자 목록이 없기 때문에, 여러 다른 파일 형식이 같은 확장자를 사용하는 경우가 있어 운영 체제나 사용자에게 혼란을 줄 수 있다.

파일 확장자를 이용하는 방식은 파일 이름을 바꾸는 것만으로 간단히 파일 형식을 속일 수 있다는 특징이 있다. 예를 들어, HTML 파일을 `filename.html`에서 `filename.txt`로 이름을 바꾸면 일반 텍스트 파일로 쉽게 인식시킬 수 있다. 이는 숙련된 사용자에게는 유용할 수 있지만, 파일 이름을 잘못 변경하여 파일을 사용하지 못하게 만들거나 찾기 어렵게 만드는 등 일반 사용자에게는 혼란을 야기하기도 했다.

이러한 문제 때문에 윈도우나 macOS 같은 운영 체제는 기본적으로 파일 확장자를 숨기는 기능을 제공한다. 이는 사용자가 실수로 파일 형식을 변경하는 것을 막기 위한 조치였지만, 숙련된 사용자는 설정을 통해 확장자를 다시 표시할 수 있다. 하지만 확장자를 숨기면 같은 폴더 안에 이름이 같아 보이는 파일이 여러 개 존재할 수 있어 혼란을 야기하기도 한다. 예를 들어, 회사 로고 파일을 인쇄용 `.eps` 형식과 웹사이트용 `.png` 형식으로 모두 가지고 있을 때, 확장자를 숨기면 두 파일 모두 `CompanyLogo`로 보여 구분하기 어렵다.

더 심각한 문제는 확장자를 숨기는 것이 보안 위험을 초래할 수 있다는 점이다.[4][1] 예를 들어, 악의적인 사용자가 `Holiday photo.jpg.exe`와 같은 악성 코드 파일을 만들 수 있다. 운영 체제가 기본 설정으로 `.exe` 확장자를 숨기면 일반 사용자에게는 이 파일이 `Holiday photo.jpg`처럼 보이게 되어 안전한 JPEG 이미지 파일로 착각하기 쉽다. 그러나 실제로는 실행 파일(`.exe`)이므로, 사용자가 파일을 열려고 시도하면 악성 코드가 실행되어 컴퓨터에 심각한 위험을 초래할 수 있다. 사용자를 더욱 속이기 위해 악성 코드 제작자는 파일 아이콘을 일반 이미지 파일 아이콘으로 위장하기도 한다. 윈도우와 같이 확장자 숨김이 기본으로 설정된 환경에서는 사용자가 파일의 실제 형식을 파악하기 어려워 이러한 위험에 더 쉽게 노출될 수 있다. 일부 마이크로소프트 워드 매크로 바이러스는 템플릿 형식으로 워드 파일을 만들고 `.doc` 확장자로 저장하는 방식을 사용하기도 한다. 워드는 확장자보다는 파일 내부 형식을 보고 파일을 열기 때문에, 이런 파일이 템플릿으로 실행되어 바이러스를 퍼뜨릴 수 있다.

2. 2. 내부 메타데이터

파일 형식을 식별하는 또 다른 주요 방법은 파일 자체 내부에 저장된 메타데이터를 활용하는 것이다. 이 정보는 파일 형식을 나타내기 위해 의도적으로 포함되었거나, 특정 파일 형식에서 항상 정해진 위치에 나타나는 고유한 이진 문자열일 수 있다.

이러한 내부 정보는 일반적으로 파일의 시작 부분에서 가장 쉽게 찾을 수 있다. 정보의 크기가 몇 바이트 이상으로 비교적 크면 파일 헤더라고 부르고, 몇 바이트 정도의 작은 크기일 경우에는 매직 넘버라고 칭한다. 파일 헤더와 매직 넘버는 파일의 내용을 직접 분석하여 형식을 식별하는 방식으로, 확장자와 같은 외부 정보보다 더 신뢰도가 높을 수 있다. 자세한 내용은 각 하위 섹션에서 설명한다.

2. 2. 1. 파일 헤더

파일 헤더는 파일의 시작 부분에 위치하여 파일 형식이나 내용에 대한 메타데이터를 담고 있는 정보다. 파일 형식이나 포함된 데이터 유형에 따라 파일 끝을 포함한 다른 영역에 존재할 수도 있다. 파일 헤더는 파일 형식을 식별하는 주요 방법 중 하나이며, 소프트웨어가 파일을 올바르게 해석하고 처리하는 데 필요한 중요한 정보를 제공한다.

파일 헤더에 포함될 수 있는 메타데이터는 다양하다. 예를 들어, 대부분의 이미지 파일 헤더에는 파일의 형식(예: JPEG, PNG), 이미지의 크기(가로, 세로 픽셀 수), 해상도, 사용된 색 공간 등의 정보가 저장된다. 추가적으로 이미지를 만든 사람, 촬영 시간 및 장소, 사용된 카메라 모델과 설정(Exif) 같은 저작자 정보가 포함되기도 한다. 이러한 메타데이터는 파일을 불러오거나 내용을 해석하는 소프트웨어에서 활용된다.

파일 헤더는 크게 텍스트 기반과 이진(바이너리) 기반으로 나눌 수 있다. 텍스트 기반 헤더는 사람이 텍스트 편집기나 16진수 편집기 등으로 내용을 쉽게 확인하고 이해할 수 있다는 장점이 있지만, 일반적으로 이진 헤더보다 더 많은 공간을 차지한다.

운영 체제는 파일 헤더 정보를 이용하여 파일을 메모리에 전부 로드하지 않고도 파일에 대한 정보를 빠르게 파악할 수 있다. 예를 들어, 그래픽 기반의 파일 관리자는 폴더 내용을 표시할 때 각 파일의 헤더를 읽어 파일 형식에 맞는 아이콘을 보여줄 수 있다. 그러나 많은 파일의 헤더를 읽는 것은 디렉터리 정보만 읽는 것보다 더 많은 시스템 자원을 사용하며, 특히 썸네일과 같이 복잡한 메타데이터가 포함된 파일이 많은 경우 폴더를 표시하는 데 시간이 걸릴 수 있다.

파일 시작 부분에 위치하는 몇 바이트 크기의 작은 식별자는 특별히 매직 넘버라고 부르기도 한다. 유닉스 계열의 운영 체제에서는 파일 시작 부분에 위치한 2바이트의 특별한 매직 넘버를 통해 파일 형식을 구분하는 방식을 사용한다. 스크립팅 언어 파일의 첫 줄에 오는 shebang 라인 역시 특정 명령 인터프리터를 지정하는 매직 넘버의 한 예시로 볼 수 있다.

헤더 정보가 복잡하게 구성되어 있거나 잘못 작성된 경우, 파일 형식이 잘못 해석되거나 메타데이터가 손상되어 파일을 정상적으로 읽지 못하게 될 위험도 존재한다.

2. 2. 2. 매직 넘버

파일 형식을 식별하는 방법 중 하나는 파일 자체 내부에 저장된 정보를 이용하는 것이다. 파일의 시작 부분에 위치하는 몇 바이트의 고유한 이진 문자열을 '''매직 넘버'''라고 부른다. 이는 특정 파일 형식을 구별하기 위한 일종의 표식과 같다.

유닉스 및 그 파생 운영 체제에서는 전통적으로 파일 시작 부분의 특정 바이트 시퀀스(원본에서는 2바이트를 언급)를 매직 넘버로 사용하여 파일 형식을 구분해왔다. 예를 들어, GIF 이미지 파일은 표준에 따라 항상 ASCII 코드로 `GIF87a` 또는 `GIF89a`라는 문자열로 시작한다. 이러한 매직 넘버는 파일의 내용을 직접 확인하여 형식을 식별하므로, 파일 이름의 확장자나 MIME 타입과 같은 외부 메타데이터보다 더 신뢰성 높은 방법으로 여겨진다.

매직 넘버를 이용하면 파일 형식을 비교적 정확하게 식별할 수 있고, 파일에 대한 추가 정보까지 얻을 수도 있다. 프로그램이 처리해야 할 파일이 올바른 형식인지 확인하는 가장 확실한 방법 중 하나이다. 파일 이름이나 메타데이터는 내용과 상관없이 변경될 수 있지만, 매직 넘버 검사를 통과하지 못하면 파일이 손상되었거나 잘못된 형식일 가능성이 높다.

하지만 매직 넘버 방식에도 한계는 있다. 모든 파일 형식이 명확한 매직 넘버를 가지는 것은 아니다. 예를 들어, 일반 텍스트 파일이나 HTML 파일은 특정 문자열(``, ``, `
스크립팅 언어 파일의 첫 줄에 사용되는 shebang (`#!`) 라인도 매직 넘버의 특별한 형태로 볼 수 있다. 이는 해당 스크립트를 실행할 인터프리터를 지정하는 사람이 읽을 수 있는 텍스트이다.

AmigaOS에서는 '매직 쿠키'라는 이름으로 매직 넘버를 사용했으며, 매킨토시의 OSType이나 IFF에서 사용된 FourCC 방식도 유사한 파일 식별 방법이다.

2. 3. 외부 메타데이터

파일 형식 정보를 파일 자체에 포함하는 대신, 파일 시스템에 명시적으로 저장하는 방식도 사용된다. 이를 외부 메타데이터라고 한다. 이 접근 방식은 메타데이터를 파일의 실제 데이터나 이름과 분리하여 관리할 수 있다는 장점이 있지만, 파일 시스템 간에 형식 정보를 변환해야 하므로 파일 확장자매직 넘버 방식보다 이식성이 떨어진다는 단점이 있다.[1][2]

다양한 운영 체제는 전통적으로 파일 형식을 결정하기 위해 각기 다른 외부 메타데이터 방식을 사용해왔으며, 각 방식은 고유한 장단점을 가진다. 대부분의 최신 운영 체제와 개별 응용 프로그램은 여러 종류의 파일 형식을 처리하기 위해 이러한 다양한 방식들을 함께 사용하기도 한다.[1]

외부 메타데이터를 활용하는 주요 방식들은 다음과 같다.

  • macOS 타입 코드: 초기 Mac OS에서 사용된 방식으로, 파일의 '유형'과 파일을 여는 '생성자' 응용 프로그램을 지정하는 코드를 사용한다.[3]
  • macOS UTI: macOS에서 타입 코드를 대체하기 위해 도입된 방식으로, 역-DNS 형식의 문자열을 사용하여 파일뿐만 아니라 클립보드 데이터, 폴더 등 다양한 유형을 고유하게 식별한다.[4]
  • OS/2 확장 속성: HPFS, FAT12, FAT16 파일 시스템에서 지원했던 방식으로, 파일에 이름, 코드화된 유형, 값을 포함하는 임의의 속성 세트를 저장할 수 있었다. OS/2에서는 ".TYPE"과 같은 특정 속성 이름에 표준화된 의미를 부여하여 파일 형식을 지정했다. NTFS 파일 시스템도 OS/2 하위 시스템과의 호환성을 위해 이 속성을 저장할 수 있지만, Win32 환경에서는 주로 다른 방식을 사용한다.[1]
  • POSIX 확장 속성: 유닉스 계열 시스템의 ext2, ext3, XFS 등 여러 파일 시스템에서 지원하는 방식으로, "이름=값" 형태의 문자열 목록을 파일에 저장하여 추가 정보를 관리한다.
  • MIME 타입: 주로 인터넷 환경에서 파일 형식을 식별하기 위해 사용되며, `타입/서브타입` 형식(예: `text/html`)으로 구성된다. 일부 운영 체제에서는 디스크 파일 식별에도 사용한다.
  • 파일 형식 식별자(FFID): 파일의 출처(조직)와 범주(유형)를 기반으로 파일 형식을 식별하는 숫자 코드 방식이지만, 널리 사용되지는 않는다.[1]
  • 파일 내용 기반 식별: 파일의 내용을 직접 분석하여 바이트 빈도 분포 등의 통계적 패턴을 통해 파일 형식을 추론하는 방식이다.[2]

2. 3. 1. macOS 타입 코드

macOS의 계층적 파일 시스템은 각 파일의 디렉터리 항목에 파일 형식과 연결된 응용 프로그램을 식별하기 위한 '생성자'와 '유형' 코드를 저장한다. 이 코드들은 OSType이라고 불리며, 임의의 4바이트 시퀀스로 구성될 수 있지만 보통 ASCII 문자로 표현했을 때 의미를 가지도록 선택되었다. 예를 들어, 응용 프로그램 이름의 약어나 개발자의 이니셜 등이 사용되었다.

  • HyperCard "스택" 파일의 경우, 생성자 코드는 `'WILD'`(HyperCard의 이전 이름 "WildCard"에서 유래)이고 유형 코드는 `'STAK'`이다.
  • BBEdit 텍스트 편집기는 개발자 Rich Siegel을 나타내는 생성자 코드 `'R*ch'`를 가진다.


유형 코드는 파일의 구체적인 형식을 지정하며, 생성자 코드는 사용자가 파일을 더블 클릭했을 때 해당 파일을 열 기본 프로그램을 지정한다. 이를 통해 사용자는 모두 `'TEXT'` 유형 코드를 가진 여러 텍스트 파일을 가지고 있더라도, 각각 다른 생성자 코드를 통해 서로 다른 프로그램에서 열리도록 할 수 있었다. 예를 들어, 일반 텍스트 파일은 범용 텍스트 편집기에서 열리고, 프로그래밍 코드나 HTML 파일은 전문 편집기나 IDE에서 열리도록 의도되었다. 하지만 이러한 방식은 때때로 사용자가 파일을 더블 클릭했을 때 어떤 프로그램이 실행될지 예측하기 어렵게 만들어 혼란을 주기도 했다.

2. 3. 2. macOS UTI (Uniform Type Identifiers)

Uniform Type Identifier(UTI)는 macOS에서 파일 형식과 같은 "유형화된" 엔터티의 클래스를 고유하게 식별하기 위해 사용되는 방법이다. 이는 OSType (유형 및 제작자 코드)를 대체하기 위해 애플(Apple Inc.)에서 개발되었다.

UTI는 Core Foundation 문자열이며, 역-DNS 문자열을 사용한다. 일부 일반적이고 표준적인 유형은 'public'이라는 도메인을 사용하며 (예: Portable Network Graphics 이미지의 경우 'public.png'), 다른 도메인은 타사 유형에 사용할 수 있다(예: Portable Document Format의 경우 'com.adobe.pdf'). UTI는 적합성 계층 구조로 알려진 계층 구조 내에서 정의될 수 있다. 따라서 'public.png'는 'public.image'의 상위 유형을 따르고, 이는 다시 'public.data'의 상위 유형을 따른다. UTI는 여러 계층 구조에 존재할 수 있어 매우 유연하다.

파일 형식 외에도 UTI는 다음을 포함하여 macOS에 존재할 수 있는 다른 엔터티에도 사용할 수 있다.

2. 3. 3. POSIX 확장 속성

유닉스유닉스 계열 시스템에서는 파일과 함께 확장 속성을 저장하여 파일 형식 정보를 관리할 수 있다. 이러한 확장 속성을 지원하는 파일 시스템으로는 ext2, ext3, ext4, ReiserFS 버전 3, XFS, JFS, FFS, 그리고 HFS+ 등이 있다.

확장 속성은 "이름=값" 형태의 문자열 목록으로 구성된다. 각 이름은 고유해야 하며, 해당 이름을 통해 관련 값에 접근할 수 있다. 이를 통해 파일 자체의 내용 외에 추가적인 메타데이터를 파일 시스템 수준에서 관리하는 것이 가능하다.

2. 3. 4. MIME 타입

MIME 타입은 많은 인터넷 관련 응용 프로그램에서 파일 형식을 식별하기 위해 널리 사용되는 방식이다. 디스크에 저장된 파일 자체의 타입을 나타내는 데는 드물게 사용된다. MIME 타입은 인터넷 할당 번호 기관에서 관리하며, 슬래시(/)로 구분된 '타입'과 '서브타입'으로 구성된 표준화된 식별자 체계이다. 예를 들어, 웹 페이지를 나타내는 text/html이나 GIF 이미지를 나타내는 image/gif와 같은 형식이다. 원래는 이메일에 첨부된 파일이 어떤 종류인지 운영 체제에 상관없이 식별하기 위한 목적으로 만들어졌다.

네트워크를 통해 파일을 전송할 때, MIME 헤더(미디어 유형) 정보를 함께 보내 파일의 종류를 알려주는 방식으로도 사용된다. 이 방식은 파일을 직접 열어보지 않고도 형식을 알 수 있다는 장점이 있다.

BeOS, AmigaOS 4.0, MorphOS와 같은 운영 체제에서는 MIME 타입을 사용하여 파일을 식별하고, 특정 파일을 열 때 사용할 응용 프로그램을 지정하기도 한다. AmigaOS와 MorphOS에서는 기존의 데이터 타입 시스템과 함께 MIME 타입을 사용한다.

하지만 MIME 타입에도 몇 가지 문제점이 있다. 여러 조직이나 개인이 IANA에 정식으로 등록하지 않고 임의로 MIME 타입을 만들어 사용하는 경우가 있어, 표준화된 사용에 혼란을 주기도 한다. 이 때문에 MIME 타입의 신뢰성이 항상 높다고 보기는 어려우며, 파일 시작 부분에 특정 코드를 넣어 형식을 식별하는 매직 넘버와 같은 다른 식별 방법과 함께 사용되기도 한다.

2. 3. 5. 파일 형식 식별자 (FFIDs)

파일 형식 식별자(FFID)는 파일의 출처와 파일 범주에 따라 파일 형식을 식별하는 또 다른 방법이지만 널리 사용되지는 않는다. 이 방법은 Description Explorer 소프트웨어 제품군을 위해 만들어졌다.

이 식별자는 'NNNNNNNNN-XX-YYYYYYY' 형식의 여러 숫자로 구성된다.

  • 첫 번째 부분('NNNNNNNNN')은 조직의 출처 또는 유지 관리자를 나타내며, 이 숫자는 회사나 표준 기구 데이터베이스의 값을 가리킨다.
  • 뒤따르는 두 자리 숫자('XX')는 16진법으로 파일의 유형을 분류한다.
  • 마지막 부분('YYYYYYY')은 파일의 일반적인 파일 확장자 또는 파일의 국제 표준 번호로 구성되며, 왼쪽은 0으로 채워진다.


예를 들어, PNG 파일 사양은 FFID '000000001-31-0015948'을 가지는데, 여기서 '000000001'은 국제 표준화 기구(ISO)를 나타내고, '31'은 이미지 파일을 의미하며, '0015948'은 해당 파일 형식의 표준 번호를 나타낸다.

2. 3. 6. 파일 내용 기반 식별

파일 내용을 직접 검사하여 파일 형식을 알아내는 방법도 있다. 이는 파일 확장자나 메타데이터를 이용하는 방식보다는 덜 일반적이다. 파일은 바이트라는 기본 단위의 연속으로 이루어져 있는데, 각 바이트 값이 나타나는 빈도수(바이트 빈도 분포)를 계산하면 파일 형식마다 특징적인 패턴을 발견할 수 있다. 이러한 패턴 정보를 바탕으로 통계적 방법이나 데이터 마이닝 기법을 활용하여 파일 형식을 식별하는 다양한 콘텐츠 기반 식별 방식이 존재한다.[2]

3. 파일 구조

파일 내에서 데이터를 구조화하는 방법에는 여러 유형이 있다. 가장 일반적인 방법은 다음과 같다.


  • 비구조화 형식 (메모리 덤프 원본)
  • 청크(chunk) 기반 형식
  • 디렉터리 기반 형식


다양한 운영 체제는 전통적으로 특정 파일의 형식을 결정하는 데 각기 다른 방식을 사용해왔으며, 각 방식은 고유한 장단점을 가지고 있다. 대부분의 최신 운영 체제와 개별 응용 프로그램은 다른 시스템의 파일 형식을 읽기 위해 이러한 여러 방식을 함께 사용하기도 한다.

3. 1. 비구조화 형식 (Unstructured Formats)

과거의 파일 형식 중 하나로, 하나 이상의 구조체의 메모리 이미지를 파일에 직접 저장하는 원시 데이터 형식을 사용했다. 이는 비구조화 형식 또는 원본 메모리 덤프(raw memory dump) 방식이라고도 불린다.

이 방식은 파일을 읽고 쓰는 도구를 개발하기 매우 간단하다는 장점이 있다.

하지만 몇 가지 단점도 존재한다. 만약 메모리 이미지에 나중에 기능을 추가하기 위한 예약 공간이 없다면, 파일을 확장하거나 개선하는 것이 매우 어렵다. 또한, 특정 플랫폼이나 프로그래밍 언어에만 맞는 파일을 만들 수 있다. 예를 들어, 파스칼 형식의 문자열을 포함하는 구조체는 C 언어 환경에서는 제대로 인식되지 않을 수 있다.

이러한 비구조화 형식의 한계 때문에, 쉽게 확장하면서도 이전 버전과의 하위 호환성을 유지할 수 있는 다른 유형의 파일 형식들이 개발되었다.

3. 2. 청크 기반 형식 (Chunk-based Formats)

이러한 종류의 파일 구조에서는 각 데이터 조각이 해당 데이터를 식별하는 일종의 컨테이너 안에 포함된다. 컨테이너의 범위는 시작 및 종료 표시자, 명시적인 길이 필드 또는 파일 형식 정의에 따른 고정된 요구사항 등으로 식별될 수 있다.

1970년대부터 많은 프로그램이 이러한 일반적인 형태의 형식을 사용했다. 예를 들어, troff, Script, Scribe와 같은 워드 프로세서나 CSV 같은 데이터베이스 내보내기 파일이 있다. 1985년에는 일렉트로닉 아츠코모도어-아미가가 IFF(Interchange File Format) 파일 형식을 통해 이러한 유형의 파일 형식을 도입하기도 했다.

컨테이너는 때때로 청크(chunk)라고 불리지만, '청크'라는 용어는 각 조각이 작거나 다른 청크를 포함하지 않는다는 뉘앙스를 가질 수도 있다. 그러나 많은 형식이 반드시 이러한 제약을 두지는 않는다.

특정 청크를 식별하는 정보는 '필드 이름', '식별자', '레이블', '태그' 등 다양한 용어로 불린다. 이러한 식별자는 종종 사람이 읽을 수 있으며, "성", "주소", "사각형", "글꼴 이름"처럼 데이터를 분류한다. 이는 데이터베이스 키나 일련 번호와 같은 의미의 식별자와는 다르다 (물론 식별자가 ''연관된 데이터''를 그러한 키로 식별할 수도 있다).

이러한 파일 구조의 특징 중 하나는, 특정 청크 식별자를 알지 못하는 프로그램이 해당 청크를 단순히 건너뛸 수 있다는 점이다. 건너뛴 데이터의 중요성에 따라 이 기능은 유용할 수도, 그렇지 않을 수도 있다 (CSS는 이러한 동작을 명시적으로 정의하고 있다).

이 개념은 여러 형식에서 반복적으로 사용되었다. 대표적인 예로는 마이크로소프트IBM이 IFF에 대응하여 만든 RIFF, PNG, JPEG 저장 형식, DER 인코딩 스트림 및 파일 (원래 CCITT X.409:1984에 설명되었으며 IFF보다 먼저 만들어짐), 그리고 구조화된 데이터 교환 형식(SDXF) 등이 있다.

사실상 모든 데이터 형식은 ''어떻게든'' 구성 요소 부분의 중요성을 식별해야 하며, 내장된 경계 표시자는 이를 수행하는 명백한 방법 중 하나이다.

  • MIME 헤더는 각 논리적 줄의 시작 부분에 콜론으로 구분된 레이블을 사용하여 이를 구현한다. MIME 헤더는 다른 MIME 헤더를 포함할 수 없지만, 일부 헤더의 데이터 내용은 다른 규칙에 따라 추출될 수 있는 하위 부분을 가질 수 있다.
  • CSV 및 유사한 파일 형식은 필드 이름이 있는 헤더 레코드와 필드 경계를 나타내는 쉼표를 사용하여 이를 수행하는 경우가 많다. MIME과 마찬가지로 CSV는 계층 구조를 직접적으로 제공하지는 않는다.
  • XML과 관련 형식들은 데이터 요소가 청크 식별자와 유사한 마크업으로 식별되기 때문에 일종의 청크 기반 형식으로 간주될 수 있다. XML은 스키마 및 유효성 검사와 같은 공식적인 이점 외에도 트리, DAG, 차트와 같은 더 복잡한 구조를 표현할 수 있다. XML을 '청크' 형식으로 간주한다면, SGML과 그 이전의 IBM GML이 이러한 형식의 가장 초기 예시라고 할 수 있다.
  • JSON은 스키마, 상호 참조 또는 반복되는 필드 이름의 의미에 대한 정의가 없다는 점에서 XML과 유사하며, 프로그래머에게 종종 편리하게 사용된다.
  • YAML은 JSON과 유사하지만, 데이터 청크를 구분하기 위해 들여쓰기를 사용하며 JSON이나 XML보다 사람이 더 읽기 쉽게 설계되었다.
  • 프로토콜 버퍼는 JSON과 유사한 측면이 있지만, 데이터 경계 표시자를 외부 메커니즘에서 이름으로 매핑되는 필드 번호로 대체하는 방식을 사용한다.

3. 3. 디렉터리 기반 형식 (Directory-based Formats)

파일 내에서 데이터를 구조화하는 여러 방법 중 하나로, 파일 시스템과 유사한 구조를 가진다. 이는 파일 내부에 데이터의 위치나 서명과 같은 메타데이터를 포함하는 디렉터리 항목을 두어 데이터를 관리하는 방식이다. 대표적인 예시로는 OLE 문서, TIFF 파일 형식, 그리고 소프트웨어 라이브러리 파일 등이 있다.

4. 파일 형식의 분류

컴퓨터에서 미디어(문서, 음성, 이미지, 동영상)나 프로그램은 파일 형태로 저장된다. 파일 형식은 이러한 정보가 파일 내에 저장되는 순서와 구조에 대한 규격으로, OS나 애플리케이션이 일관된 방식으로 파일에 접근하고 정보를 이용할 수 있게 한다. 일반적으로 "파일 포맷"이라고 불리지만, MS-DOS, Microsoft Windows, UNIX, Unix 계열 등의 운영 체제에서는 파일이 스트리밍 데이터(데이터 스트림) 형식이므로, 정확히는 "각 파일에 저장된 데이터의 포맷"을 의미한다.

파일에 저장된 데이터는 일반적으로 텍스트 또는 이진 파일이며, 파일의 내용만으로는 해당 파일 형식을 알기 어려운 경우가 있다. 이 때문에 파일명 뒤에 붙는 확장자나 네트워크 전송 시 사용되는 MIME 타입(미디어 유형) 같은 메타데이터를 이용해 식별하기도 한다. 하지만 확장자는 쉽게 변경 가능하여 신뢰도가 낮고, MIME 타입 역시 IANA에 의해 공식적으로 등록·표준화되지 않은 고유 문자열을 사용하는 경우도 있어 완벽한 식별 방법은 아니다. 따라서 많은 파일 형식은 파일 시작 부분에 특정 매직 넘버라고 불리는 고유한 식별 정보를 포함시켜 파일 형식을 더 확실하게 구분한다.

파일 형식은 저장되는 데이터의 종류와 특성, 범용성 등에 따라 다양하게 분류될 수 있으며, 자세한 분류 기준은 하위 섹션에서 다룬다.

4. 1. 데이터 구분 단위에 따른 분류


  • 비트(bit)를 데이터 구분 단위로 하는 데이터. 예: 압축된 데이터
  • 바이트(byte, 1byte = 8bit)를 단위로 하는 데이터. 예: 각종 애플리케이션의 데이터 파일
  • 문자를 단위로 하는 데이터. 예: 텍스트 파일
  • 특정 문자에 의미를 부여하여 구조화된 데이터. 예: CSV, 마크업 언어(HTML, XML 등)


텍스트 파일도 실제로는 이진 데이터(바이너리)의 한 종류이지만, 어떤 문자 집합을 사용하여 인코딩했는지에 따라 실제 비트 배열은 달라진다. 텍스트 데이터 스트림을 올바르게 해석(디코딩)할 수 있도록 돕기 위해, 파일의 맨 앞에 바이트 순서 표시(BOM)나 사용된 문자 집합의 이름을 명시하는 경우도 있다.

각종 프로그래밍 언어의 소스 파일 역시, 특정 규칙에 따라 구조화된 일반 텍스트 파일의 한 형태로 볼 수 있다.

4. 2. 범용성에 따른 분류

다양한 응용 소프트웨어에서 처리할 수 있는 표준적인 형식도 있지만, 운영 체제나 애플리케이션에 따라 데이터 형식이 다양하다. 특정 애플리케이션에서 처리할 수 있는 데이터 형식으로 변환하기 위해 파일 변환기를 이용할 수 있다. 파일 형식은 범용성에 따라 다음과 같이 분류할 수 있다.

; 표준화된 포맷

: 국제 표준화 기구(ISO), 일본 산업 규격(JIS), 월드 와이드 웹 컨소시엄(W3C) 등 국제적인 기관에서 제정한 포맷이다. 대표적인 예로는 JPEG, MPEG 등이 있다. 이러한 포맷은 특정 기업이나 기술에 종속되지 않고 폭넓게 사용될 수 있도록 표준화 절차를 거친다.

; 사실상 업계 표준이 된 포맷

: 특정 운영 체제나 애플리케이션에 의존하는 포맷 중에서 매우 널리 사용되어 사실상 표준처럼 자리 잡은 포맷이다. 예를 들어, GIF(Graphics Interchange Format), FBX, PDF(Portable Document Format) 등이 있다. PDF의 경우 처음에는 미국 Adobe사에서 개발했지만, 이후 널리 사용되면서 ISO 표준으로도 제정되었다.

; 특정 운영 체제 (OS)나 애플리케이션에 의존하는 포맷

: 특정 운영 체제나 애플리케이션 환경에서 주로 사용되는 데이터 파일 형식이다. 예를 들어 Microsoft Windows 환경의 BMP, RTF 등이 있으며, 이 외에도 수많은 종류가 존재한다. 이러한 포맷은 해당 OS나 애플리케이션 없이는 호환성 문제가 발생할 수 있다.

5. 파일 형식과 관련된 문제

컴퓨터에서 미디어(문서, 음성, 이미지, 동영상)나 프로그램은 파일 형태로 저장된다. 파일 형식은 이러한 정보가 파일에 저장되는 통일된 규격으로, OS나 애플리케이션이 일관된 방식으로 파일에 접근하여 정보를 이용할 수 있게 한다.

그러나 파일에 저장된 데이터는 주로 텍스트 또는 이진 파일 형태이므로, 파일의 내용만으로는 해당 파일 형식을 정확히 알기 어려운 경우가 많다. 이를 해결하기 위해 파일명에 확장자를 붙여 식별하거나, 네트워크 전송 시 MIME 헤더(미디어 유형)를 함께 보내는 방법이 사용된다. 이러한 메타데이터는 파일 내용을 직접 건드리지 않고 종류를 판별할 수 있게 해주지만, 몇 가지 문제점을 안고 있다. 파일 확장자는 사용자가 쉽게 변경할 수 있어 신뢰성이 매우 낮으며, MIME 타입 역시 IANA에 공식 등록되지 않은 고유 문자열을 임의로 사용하는 경우가 있어 혼란을 야기할 수 있다. 따라서 많은 파일 형식은 파일 시작 부분에 '''매직 넘버'''라는 고유 식별 정보를 추가하여 파일 형식을 더 확실하게 구분하려 한다.

파일 형식의 내부 구조 자체에서 문제가 발생하기도 한다. 예를 들어, OLE 문서나 디스크 이미지, 라이브러리처럼 파일 내부에 또 다른 디렉토리 구조를 가지는 형식들이 있다. 이러한 디렉토리 기반 파일 형식은 구조가 복잡하지만 수정이 비교적 용이하다는 특징이 있다. 그러나 이 점이 악용될 경우, 특정 파일을 열 때 시스템에 과부하를 주는 zip 폭탄과 같은 보안 문제를 일으킬 수 있다. 또한, 파일 내부의 데이터 위치를 가리키는 값이 잘못 설정되어 이전에 읽었던 데이터를 다시 가리키게 되면, 파일을 읽는 프로그램이 무한 루프에 빠져 멈추는 문제가 발생할 수도 있다.

5. 1. 특허 문제

파일 형식은 때때로 특허의 대상이 될 수 있다. 미국 법률상 파일 형식 자체에 직접 특허를 부여하는 것은 허용되지 않지만, 데이터를 인코딩하는 데 사용되는 특정 알고리즘에 특허가 적용될 수 있으며, 이는 해당 파일 형식의 사용과 확산에 영향을 미칠 수 있다.

예를 들어, 과거 GIF 파일 형식은 압축을 위해 특허받은 알고리즘을 사용했다. 처음에는 특허 소유자가 권리를 적극적으로 행사하지 않았으나, 나중에 로열티를 요구하기 시작했다. 이로 인해 GIF 형식의 사용이 크게 줄어들었으며, 이는 특허 문제에서 자유로운 대안 형식인 PNG의 개발을 촉진하는 계기가 되기도 했다. GIF 관련 특허는 2003년 중반 미국에서 만료되었고, 2004년 중반에는 전 세계적으로 만료되었다.

한편, 파일 형식의 규격이 공개되지 않는 경우도 있다. 개발자가 규격을 영업 비밀로 취급하거나, 별도의 문서 없이 기존 프로그램의 사용 방식을 따르는 경우가 그렇다. 규격이 공개되지 않으면 다른 개발자들은 해당 파일을 사용하기 위해 역설계를 하거나, 개발자에게 비용을 지불하고 비밀 유지 계약을 맺어야 하는 어려움이 따른다. 이는 상당한 시간과 비용을 요구하므로, 일반적으로 공개된 규격을 가진 파일 형식이 더 널리 사용되는 경향이 있다. 이처럼 특허 문제나 규격 비공개는 특정 기술이 자유롭게 사용되고 공유되는 것을 어렵게 만들 수 있다.

5. 2. 파일 형식 연관

특정 파일 형식과 해당 형식을 열 수 있는 응용 소프트웨어를 연결하여, 사용자가 파일을 열 때 자동으로 적절한 프로그램이 실행되도록 하는 기능을 연관(Association)이라고 한다. 이를 통해 사용자는 파일을 선택하기만 하면 연결된 응용 프로그램으로 바로 열 수 있어 편리하다. 연관시키는 방법은 운영 체제 등의 환경에 따라 다르다.

윈도우OS/2와 같은 운영 체제에서는 주로 파일 이름의 확장자를 기준으로 연관시킬 응용 프로그램을 결정한다. 윈도우의 경우 이 정보는 레지스트리에 저장되며, OS/2에서는 WPS의 .INI 파일에 관련 정보가 기록된다.

과거 클래식 Mac OS에서는 파일의 메타데이터에 포함된 '크리에이터(Creator)'와 '타입(Type)'이라는 고유 코드를 사용하여 파일을 응용 프로그램과 연관시켰다. 파일 시스템(HFS, HFS+)이나 AFP 전송 프로토콜에서는 이 정보가 유지되었지만, FTPHTTP, 전자 메일 등 다른 방식으로 파일을 주고받을 때는 크리에이터와 타입 정보가 손실될 수 있었다. 이를 방지하기 위해 Mac 바이너리, AppleSingle, AppleDouble, BinHex와 같은 특수 인코딩 형식이나 StuffIt, MacLHA 같은 Mac OS용 압축 형식을 사용해야 했다.

현대의 macOS에서는 기존 방식과 확장자 방식을 함께 사용한다. 파일에 크리에이터와 타입 코드가 존재하면 이를 우선적으로 사용하여 파일을 열지만, 해당 정보가 없는 경우에는 파일의 확장자를 기반으로 연결된 응용 프로그램을 실행한다.

6. 주요 파일 형식 목록

파일 형식은 컴퓨터에서 데이터를 저장하고 구성하는 다양한 방식을 의미한다. 사용 목적과 데이터의 종류에 따라 수많은 파일 형식이 존재하며, 크게 텍스트, 이미지, 오디오, 비디오, 압축 파일, 오브젝트 파일 등으로 분류할 수 있다. 각 분류에 속하는 구체적인 파일 형식의 종류와 특징은 아래 하위 섹션에서 자세히 다룬다.

6. 1. 텍스트, 하이퍼텍스트, 문서


  • 일반 텍스트
  • RTF (Rich Text Format)
  • HTML (HyperText Markup Language)
  • XHTML (Extensible HyperText Markup Language)
  • MHTML (MIME Encapsulation of Aggregate HTML Documents)
  • TeX
  • PDF (Portable Document Format)
  • DjVu
  • DVI (DeVice Independent)
  • CSV (Comma-Separated Values)

6. 2. 오피스 스위트용 형식

주요 오피스 스위트용 형식은 다음과 같다.

  • Lotus 1-2-3
  • * 123, wk3, wk4 등
  • 이치타로
  • * jtd (이치타로 V8 이후)
  • Microsoft Office의 고유 형식
  • * doc (Microsoft Word 고유 형식)
  • * xls (Microsoft Excel 고유 형식)
  • * ppt (Microsoft PowerPoint 고유 형식)
  • Office Open XML (Microsoft Office 2007에서 새로 채택된 문서 형식)
  • * Office Open XML Document (문서용)
  • * Office Open XML Workbook (표 계산용)
  • * Office Open XML Presentation (프레젠테이션용)
  • OpenDocument
  • * OpenDocument Text (문서용)
  • * OpenDocument Spreadsheet (표 계산용)
  • * OpenDocument Presentation (프레젠테이션용)
  • * OpenDocument Database (데이터베이스용)
  • * OpenDocument Formula (수식용)
  • Uniform Office Format

6. 3. 데이터 기술 형식

6. 4. 이미지/도형

'''래스터 이미지'''

'''벡터 이미지'''

6. 5. 3D


  • 표준 삼각측량 언어 (STL)
  • Wavefront .obj 파일 (OBJ)
  • PLY (파일 형식) (PLY)
  • 적층 제조 파일 형식 (AMF)
  • 3MF (3MF)
  • X3D (X3D)

6. 6. 오디오

6. 7. 비디오

6. 8. 압축 파일


  • 7z
  • ACE
  • AFA
  • bzip2
  • DGCA (Digital G Codec Archiver)
  • CAB
  • tar
  • GCA (G Compression Archiver)
  • gzip
  • LHA (LZH) / LHarc
  • RAR
  • ZIP
  • StuffIt
  • Compact Pro

6. 9. 오브젝트 파일


  • EXE 파일 형식
  • * PE
  • COM 파일 형식
  • a.out
  • ELF (Executable and Linkable Format)
  • PEF (Preferred Executable Format)
  • Mach-O
  • S-record
  • dyld

참조

[1] 웹사이트 Windows Tips: For Security Reasons, It Pays To Know Your File Extensions http://www.pcworld.c[...] 2003-12-23
[2] 웹사이트 File Format Identification http://www.forensics[...] 2009-07-21
[3] 웹사이트 ファイルとディレクトリの概念 http://www.cc.kyoto-[...] 2022-12-27
[4] 웹인용 Windows Tips: For Security Reasons, It Pays To Know Your File Extensions http://www.pcworld.c[...] 2003-12-23



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com