파일 확장자

Filename extension

파일 이름 확장자(filename extension), 파일 이름 확장자(file name extension) 또는 파일 확장자(file extension)는 컴퓨터 파일 이름의 접미사입니다. .txt, .docx, .md확장자는 파일 내용의 특성 또는 사용 목적을 나타냅니다. 파일 이름 확장자는 일반적으로 전체 중지(기간)를 사용하여 나머지 파일 이름과 구분되지만 일부 시스템에서는[1] 공백으로 구분됩니다.

일부 파일 시스템은 파일 이름 확장자를 파일 시스템 자체의 기능으로 구현하고 확장자의 길이와 형식을 제한할 수 있지만 다른 파일 시스템은 특별한 구분 없이 파일 이름 확장자를 파일 이름의 일부로 취급합니다.

운영체제 및 파일시스템 지원

멀틱스 파일 시스템은 파일 이름을 기본 이름과 확장명 구성 요소로 나누지 않고 단일 문자열로 저장하므로 "."는 파일 이름에 허용되는 다른 문자일 뿐입니다. 가변 길이의 파일 이름을 허용하여 두 개 이상의 점을 허용하므로 여러 개의 접미사를 허용할 뿐만 아니라 점이 없으므로 접미사가 없습니다. 멀틱스의 일부 구성 요소와 그 위에서 실행되는 응용 프로그램은 접미사를 사용하여 파일 형식을 나타내지만, 모든 파일에 접미사가 필요한 것은 아닙니다. 예를 들어 실행 파일과 일반 텍스트 파일에는 이름에 접미사가 없습니다.

UNIX와 유사한 운영 체제용 파일 시스템은 또한 파일 이름을 "."와 함께 하나의 문자열로 저장합니다. 접미사가 두 개 이상인 파일은 확장자가 두 개 이상인 경우도 있지만, 이와 관련하여 용어는 다양하며, 대부분의 저자는 동일한 파일 이름에 두 개 이상을 허용하지 않는 방식으로 확장자를 정의합니다.[citation needed] 두 개 이상의 확장은 일반적으로 다음과 같은 중첩 변환을 나타냅니다. files.tar.gz (그) .tar 파일이 하나 이상의 파일의 tar 아카이브임을 나타내고, .gz tar 아카이브 파일이 gzip)으로 압축되었음을 나타냅니다. 파일을 변환하거나 만드는 프로그램은 입력 파일 이름에서 추론된 이름에 적절한 확장자를 추가할 수 있지만(출력 파일 이름이 명시적으로 지정되지 않은 경우), 파일을 읽는 프로그램은 일반적으로 정보를 무시합니다. 대부분 사용자를 위한 것입니다. 파일에 내용을 설명하는 내부 또는 외부 메타데이터가 포함되는 것이 특히 바이너리 파일에서 더 일반적입니다. 이 모델은 일반적으로 전체 파일 이름을 명령어로 제공해야 하지만 메타데이터 접근 방식에서는 확장자를 생략할 수 있는 경우가 많습니다.

도스 및 16비트 윈도우에서 파일 이름은 최대 8자, 마침표, 확장자는 최대 3자입니다. DOS 및 Windows용 FAT 파일 시스템은 파일 이름을 8자 이름과 3자 확장자로 저장합니다. 마침표 문자가 저장되어 있지 않습니다.

마이크로소프트와 IBMOS/2에서 사용되는 고성능 파일 시스템(HPFS)은 파일 이름을 "." 문자를 파일 이름의 다른 문자로 단일 문자열로 저장합니다. HPFS가 파일에 대한 확장 속성을 지원하더라도 파일의 유형을 확장 속성으로 파일에 저장할 수 있도록 접미사를 사용하는 관행은 계속되었습니다.

마이크로소프트의 윈도우 NT의 네이티브 파일 시스템인 NTFS와 그 이후의 ReFS는 파일 이름을 하나의 문자열로 저장하기도 합니다. 다시 기존 버전의 윈도우와의 호환성을 위해 확장자를 시뮬레이션하기 위해 접미사를 사용하는 관례가 계속되었습니다. 윈도우 NT 3.5에서는 VFAT라는 FAT 파일 시스템의 변형이 등장했는데, 파일 이름이 하나의 문자열로 처리되는 긴 파일 이름을 지원합니다.

VFAT가 적용된 윈도우 95는 긴 파일 이름을 지원하며, 비NT 윈도우에서 파일 이름으로 분할된 8.3개의 이름/확장자를 제거했습니다.

고전적인 맥 OS는 파일명 기반 확장 메타데이터를 완전히 처리했지만, 파일 형식을 식별하기 위해 고유한 파일 형식 코드를 사용했습니다. 또한 파일의 아이콘을 더블 클릭할 때 어떤 애플리케이션을 실행할지를 결정하는 작성자 코드를 지정했다.[2] 그러나 macOS는 UNIX와 유사한 NeXTSTEP 운영 체제에서 파생된 결과로 파일 이름 접미사를 사용하고, 유형 및 작성자 코드를 사용한다.

코모도어 시스템에서 파일은 PRG, SEQ, USR, REL의 네 가지 확장자만 가질 수 있습니다. 그러나 이들은 프로그램에서 사용되는 데이터 유형을 구분하는 데 사용되며 내용을 식별하는 데는 무관합니다.

그래픽 사용자 인터페이스의 등장으로 파일 관리 및 인터페이스 동작에 대한 문제가 발생했습니다. Microsoft Windows(윈도우)에서는 여러 응용 프로그램을 지정된 확장에 연결할 수 있도록 했으며, 파일을 보거나 편집하거나 인쇄할 수 있는 상황에 맞는 메뉴와 같이 필요한 응용 프로그램을 선택할 수 있는 다양한 작업을 사용할 수 있었습니다. 확장자가 하나의 파일 형식을 나타낸다고 가정하면 확장자와 아이콘 사이에 명확한 매핑이 있습니다.

인터넷 시대가 처음 도래했을 때, 아직도 8.3 파일명 형식으로 제한된 Windows 시스템을 사용하는 사람들은 다음과 같은 이름으로 끝나는 웹 페이지를 만들어야 했습니다. .HTM, 반면 매킨토시나 유닉스 컴퓨터를 사용하는 사람들은 권장되는 것을 사용할 수 있습니다. .html 파일 이름 확장자입니다. 이것은 자바 프로그래밍 언어를 실험하는 프로그래머들에게도 문제가 되었는데, 이것은 네 글자의 접미사를 필요로 하기 때문입니다. .java 소스 코드 파일 및 5글자 접미사의 경우 .class 자바 컴파일러 객체 코드 출력 파일의 경우.[3]

내용유형

파일 이름 확장자는 메타데이터의 한 종류로 간주될 수 있습니다.[4] 일반적으로 데이터가 파일에 저장되는 방법에 대한 정보를 암시하는 데 사용됩니다. 파일 이름의 어떤 부분이 확장자인지 결정하는 기준을 제공하는 정확한 정의는 사용되는 특정 파일 시스템의 규칙에 속합니다. 일반적으로 확장자는 점 문자의 마지막 발생(있는 경우) 뒤에 오는 부분 문자열입니다(예: txt 파일 이름의 확장자입니다. readme.txt,그리고. html 의 연장 mysite.index.html). VMCMS, VMS와 같은 일부 메인프레임 시스템의 파일 시스템, CP/M과 같은 PC 시스템 MS-DOS와 같은 파생 시스템의 파일 시스템에서 확장자는 파일 이름과 별도의 네임스페이스입니다. 마이크로소프트의 도스윈도우 아래에서, 다음과 같은 확장들. EXE, COM 아니면 BAT 파일이 프로그램 실행 파일임을 나타냅니다. OS/360과 후속 버전에서는 낮은 수준의 한정자라고 불리는 데이터셋 이름의 일부가 일부 소프트웨어(예: TSO EDIT)에 의해 확장으로 취급되지만 운영 체제 자체에는 특별한 의미가 없습니다. MVS의 유닉스 파일에도 마찬가지입니다.

파일 이름 확장자는 원래 파일의 일반 유형을 확인하는 데 사용되었습니다.[citation needed] 파일의 유형을 세의 문자로 압축해야 하기 때문에 확장자가 짧아지는 경우가 많습니다. 예를 들어 다음과 같은 것을 사용할 수 있습니다. .GFX 그래픽 파일의 경우, .TXT 일반 텍스트의 경우, 그리고 .MUS 음악을 위하여 그러나 이러한 데이터 유형(및 기타)을 다양한 방식으로 처리하는 많은 다양한 소프트웨어 프로그램이 만들어졌기 때문에 파일 이름 확장자가 특정 제품, 심지어 특정 제품 버전과 밀접하게 연관되기 시작했습니다. 예를 들어, 초기 WordStar 파일이 사용되었습니다. .WS 아니면 .WSn, 여기서 n은 프로그램의 버전 번호였습니다. 또한 일부 파일 이름 확장자의 상반된 사용이 개발되었습니다. 한가지 예는 .rpm, RPM Package Manager 패키지와 RealPlayer Media 파일 모두에 사용됩니다.[5] 다른 사람들은 .qif, DESQview 글꼴, Quicken 금융 장부 및 QuickTime 사진을 통해 공유됩니다.[6] .gba, GrabIt 스크립트와 Game Boy Advance ROM 이미지를 공유합니다.[7] .sb, Small BasicScratch에 사용됩니다. .dts, Dynamix Three SpaceDTS에 사용됩니다.

MIME 유형과 비교

HTTPMIME 전자 메일과 같은 많은 인터넷 프로토콜에서 비트스트림의 유형은 파일 이름 확장자가 아닌 스트림의 미디어 유형 또는 MIME 유형으로 표시됩니다. 이것은 스트림 앞에 있는 텍스트 행(예: Content-type: text/plain)에 제공됩니다.

파일 확장자와 미디어 유형 간에는 표준 매핑이 없으므로 인터넷을 통해 파일을 전송할 때 작성자, 웹 서버 및 클라이언트 소프트웨어 간의 해석이 일치하지 않을 수 있습니다. 예를 들어, 콘텐츠 작성자는 압축된 스케일러블 벡터 그래픽스 파일에 대한 확장자 svgz를 지정할 수 있지만, 이 확장자를 인식하지 못하는 웹 서버는 적절한 콘텐츠 유형 응용 프로그램/svg+xml 및 필요한 압축 헤더를 전송하지 못해 웹 브라우저가 이미지를 올바르게 해석하고 표시할 수 없습니다.

BFS 파일 시스템이 확장 속성을 지원하는 BeOS는 미디어 유형을 가진 파일을 확장 속성으로 태그를 지정합니다. KDEGNOME와 같은 일부 데스크톱 환경에서는 파일 명령어의 방식으로 파일 이름 접미사와 파일 내용을 모두 검사하여 미디어 유형을 파일과 연결합니다. 그들은 해당 미디어 유형을 기반으로 파일을 열 때 실행할 응용 프로그램을 선택하므로 파일 이름 확장자에 대한 의존성이 줄어듭니다. macOS파일 유형 코드뿐만 아니라 파일 이름 확장자와 미디어 유형 모두를 사용하여 파일 유형을 내부적으로 식별할 수 있는 Uniform Type Identifier를 선택합니다.

실행 프로그램

명령어 이름에 파일 이름 확장자를 사용하는 것은 보통 명령어가 스크립트로 구현된 것의 부작용으로 나타나는데, 예를 들어, 본이나 파이썬의 경우, 그리고 인터프리터 이름이 명령어 이름에 접미사로 붙는 것은 파일 이름 확장자와 인터프리터 사이의 연관성에 의존하는 시스템에서 일반적인 관행입니다. 그러나 리눅스, 오라클 솔라리스, BSD 기반 시스템, 애플의 macOS와 같은 유닉스 계열 시스템에서는[8] 인터프리터가 스크립트의 헤더로 일반적으로 지정된다("shebang").

연결 기반 시스템에서 파일 이름 확장자는 일반적으로 해당 확장자에 대한 단일 시스템 전체의 인터프리터 선택(예: 파이썬을 사용한다는 의미의 .py)에 매핑되며, 명령어 자체는 확장자가 생략되더라도 명령줄에서 실행할 수 있습니다(적절한 설정이 완료되었다고 가정할 때). 구현 언어가 변경되면 명령어 이름 확장자도 변경되며, OS는 두 경우 모두 동일한 확장자 없는 버전의 명령어를 사용할 수 있도록 하여 일관된 API를 제공합니다. 이 방법은 프로그램을 호출할 때 개발자가 확장을 불완전하게 회피하는 것뿐만 아니라 연관 매핑의 본질적인 글로벌 특성으로 인해 다소 어려움을 겪으며 개발자가 그러한 회피를 강제할 수 없습니다. Windows는 이 메커니즘의 유일한 광범위한 사용자입니다.

사실상 모든 버전의 유닉스를 포함한 인터프리터 명령어가 있는 시스템에서는 명령어 이름 확장은 특별한 의미가 없으며 사용되지 않는 표준 관행에 의합니다. 스크립트에 대한 인터프리터를 설정하는 기본 방법은 사용할 인터프리터를 지정하는 단일 행으로 시작하는 것이므로(디제너레이션 리소스 포크로 볼 수 있음). 이러한 환경에서는 명령어 이름에 확장을 포함하면 구현이 변경될 경우 다른 프로그램의 명령어에 대한 모든 참조가 미래의 위험에 노출되는 구현 세부 정보가 불필요하게 노출됩니다. 예를 들어, 셸 스크립트가 Python이나 Ruby로 다시 구현되는 것은 완벽하게 정상적일 것이며, 이후 C 또는 C++에서는 명령어의 이름을 변경하는 모든 것이 사용된 확장입니다. 확장자가 없으면 프로그램은 항상 동일한 확장자 없는 이름을 가지며, 오직 인터프리터 지시자 및/또는 매직 번호만 변경되며, 다른 프로그램의 프로그램에 대한 참조는 유효합니다.

보안문제

Microsoft Windows(윈도우)와 함께 제공되는 파일 브라우저인 File Explorer(파일 탐색기)의 기본 동작은 파일 확장자가 표시되지 않도록 하는 것입니다. 악성 사용자들은 이렇게 형성된 파일명을 이용해 컴퓨터 바이러스컴퓨터 웜을 확산시키려 했습니다. 이것이 다음과 같이 나타나기를 희망합니다. LOVE-LETTER-FOR-YOU.TXT, 이 경우 VBScript로 작성된 유해한 컴퓨터 프로그램이라는 사실을 사용자에게 알리지 않고 무해한 텍스트 파일입니다. 반응에 대한 기본 동작OSReactOS Explorer에서 파일 이름 확장자를 표시하는 것입니다.

윈도우 XP 서비스2윈도우 서버 2003 이후의 윈도우 버전에는 에서 다운로드되거나 이메일 첨부 파일로 수신되는 것과 같이 특정 "구역" 작업에서 "위험한" 것으로 간주되어야 하는 사용자 정의 가능한 파일 확장자 목록이 포함되어 있습니다. 최신 바이러스 백신 소프트웨어 시스템은 가능한 경우 이러한 시도 공격으로부터 사용자를 보호하는 데 도움이 됩니다.

일부 바이러스는 ".com" 최상위 도메인과 "." 사이의 유사성을 이용합니다.COM" 파일 확장명은 악의적이고 실행 가능한 명령 파일 첨부 파일을 URL과 표면적으로 유사한 이름으로 이메일로 전송합니다(예: "myparty").yahoo.com ")을 사용하면 알지 못하는 사용자가 웹 사이트로 연결된다고 생각하는 전자 메일 embedded 링크를 클릭하지만 실제로는 악의적인 첨부 파일을 다운로드하고 실행할 수 있습니다.

일부 Windows 응용 프로그램의 취약성을 이용하기 위해 조작된 악성 프로그램의 경우 지나치게 길고 처리되지 않는 파일 이름 확장자로 파일을 열 때 스택 기반 버퍼 오버플로가 발생할 수 있습니다.

파일 이름 확장자는 마커일 뿐이며 파일 내용이 일치할 필요는 없습니다.[9] 이것은 악의적인 콘텐츠를 위장하는 데 사용될 수 있습니다. 따라서 보안상의 이유로 파일을 식별하려고 할 때 확장자에만 의존하는 것은 위험하며 파일 내용을 적절히 분석하는 것이 좋습니다. 예를 들어, UNIX와 같은 시스템에서는 다음과 같은 명령어와 같이 확장자가 전혀 없는 파일을 찾는 것이 드물지 않습니다. file 대신 사용해야 하며 파일의 헤더를 읽어 내용을 확인합니다.

참고 항목

참고문헌

  1. ^ "What Is a File?" (PDF). z/VM - Version 7 Release 1 - CMS Primer (PDF). IBM. 2018-09-11. p. 7. SC24-6265-00. One thing you need to know about creating files with z/VM is that each file needs its own three-part identifier. The first part of the identifier is the file name. The second part is the file type. And the third part is the file mode. These three file identifiers are often abbreviated fn ft fm.
  2. ^ "Mac Creator and File Type codes". livecode.byu.edu. Retrieved 2022-09-02.
  3. ^ "javac – Java programming language compiler". Sun Microsystems, Inc. 2004. Retrieved 2009-05-31. Source code file names must have .java suffixes, class file names must have .class suffixes, and both source and class files must have root names that identify the class.
  4. ^ Stauffer, Todd; McElhearn, Kirk (2006). Mastering Mac OS X. John Wiley & Sons. pp. 95–96. ISBN 9780782151282. Retrieved 2 October 2017.
  5. ^ 파일 확장자.filext.com 의 RPM 상세 정보
  6. ^ 파일 확장자.filext.com 의 QIF 세부 정보
  7. ^ 파일 확장자.filext.com 의 GBA 세부 정보
  8. ^ 명령 이름 확장이 유해한 것으로 간주됨
  9. ^ "What Is a File Extension?".

외부 링크