.exe, .zip, .jpg, .mp4, .bgeo.sc, .py, .java, .class ...
생각해보면 컴퓨터를 켜면 반드시 확장자를 만나게되고, 무엇을 하던 확장자명을 신경써야되는 상황이 많이 있습니다.
어떤 때에는 .abc 확장자명을 첨부할 수 없어서 일단 허용되는 .zxc파일로 업로드하고, 다운로드 받는 수신자에게 '확장자를 .abc로 바꾸어 확인하세요 !' 하는 경우도 있습니다.
어떻게 이런것들이 가능한지, 확장자명에 대해 간단히 알아봅니다.
파일 확장자명(Extension)
: 파일의 종류와 형식을 나타내는 문자열로, 파일 이름 끝에 붙습니다. 일반적으로 마침표(.)뒤에 오는 문자조합으로 표시됩니다.
확장자명이 왜 중요한가 ?
- 파일 형식 구분: 운영체제나 프로그램이 파일을 어떤 방식으로 열고 처리할지 결정합니다.
- 연관 프로그램 연결: 더블 클릭하면 알맞은 프로그램으로 자동 실행됩니다.
- 보안: 의심스러운 .exe 같은 실행 파일은 주의할 수 있습니다.
어떻게 운영체제나 프로그램이 결정하나 ?
운영체제는 파일을 식별할 때 크게 두 가지 방법을 사용합니다.
1. 확장자(Extension) 기반 식별 (Windows의 경우)
- Windows 운영체제는 파일 확장자를 기반으로 해당 파일을 처리할 프로그램을 결정합니다.
- 예를 들어, .txt 파일은 메모장(notepad.exe), .jpg 파일은 사진 뷰어 등으로 연결됩니다.
- 레지스트리를 통해 어떤 확장자명이 어떤 기본프로그램으로 연결되는지 확인할 수 있습니다.
HKEY_CLASSES_ROOT\.pdf
HKEY_CLASSES_ROOT\AcroExch.Document
- (.pdf는 Acrobat Reader와 연결되어 있다면, Acrobat Reader를 실행합니다.)

2. 마법 숫자(Magic Number) 기반 식별 (Linux/Unix 중심)
- Linux, MacOS 등은 파일 내용의 헤더 정보(파일의 첫 몇 바이트)를 분석하여 파일 유형을 식별합니다.
- 예: JPEG 파일은 항상 'FF D8 FF'로 시작, PNG 파일은 항상 '89 50 4E 47'로 시작
- file 명령어를 사용하면 확장자 없어도 파일 유형을 파악할 수 있습니다.
이후, 프로그램이 확장자를 해석하는 방법은 다음과 같습니다.
- 프로그램 내부의 MIME 타입 파악
- 프로그램은 MIME 타입을 통해 파일 유형을 확인합니다. (예: application/pdf, image/jpeg, text/plain)
- MIME 타입은 보통 파일 내용의 (Header) 정보를 읽어 구분합니다.
- 파일 파서(Parser)
- 프로그램은 특정 파일 형식을 해석하는 파서(Parser)를 가지고 있습니다. (예: .mp4 파일 → 비디오 코덱 파서(H.264, AAC 등)
정리해보자면 운영체제별 확장자와 프로그램 연결 방식은 아래와 같습니다.
| 구분 | Windows | macOS | Linux(Ubuntu) |
| 파일 식별 | 주로 확장자로 식별 | 확장자 + MIME 타입 및 UTI기반 | Magic Number(헤더) 및 MIME 타입 기반 |
| 프로그램 연결 | 레지스트리에 확장자-프로그램 연결 | Launch Services에 UTI기반 연결 | .desktop 파일 및 MIME설정 (/etc/mime.types) |
| 명령어 확인 | assoc, ftype | mdls, duti | file, xdg-mime |
윈도우 명령 프롬프트로 특정 파일 확인 예시입니다.
# 1. 확장자 연결 확인
assoc .txt
# 출력 예시: .txt=txtfile
# 2. 연결된 프로그램 확인
ftype txtfile
# 출력 예시: txtfile="%SystemRoot%\system32\NOTEPAD.EXE" %1
# 3. 연결 프로그램 변경
assoc .txt=wordpadfile
ftype wordpadfile="%ProgramFiles%\Windows NT\Tools\wordpad.exe" %1
리눅스 환경에선 아래와 같습니다.
# 1. 파일 유형 확인
file image.jpg
# 출력 예시: image.jpg: JPEG image data
# 2. MIME 타입 확인
xdg-mime query filetype image.jpg
# 출력 예시: image/jpeg
# 3. 기본 프로그램 연결 확인 및 변경
xdg-mimg query default image/jpeg
xdg-mime default eog.desktop image/jpeg
파일의 바이트코드(16진수) 직접 확인해보기
윈도우 운영체제에서는 내장된 'certutil' 명령어로 파일의 16진수 바이트코드를 직접 확인 할 수 있습니다.

간단한 이미지를 만들어 image01.png 파일로 저장했습니다.
certutil -dump 이미지파일 명령어로 바이트코드를 확인해봅니다.
(파일이 너무 커서 프롬프트창에서 첫 줄을 확인하기 어렵다면 'certutil -dump 이미지파일 | more' 명령어로 페이지를 넘기듯 확인할 수 있습니다.)

명령어를 사용하면 이렇게 Hex dump를 볼 수 있습니다.
Hex Dump는 0과 1의 바이너리 데이터를 사람이 읽기 쉽게 16진수(Hex)로, 파일을 메모리 구조처럼 볼 수 있도록 정렬한 형식입니다. (Hex Dump 알아보기 →)
Hex Dump를 바탕으로 예시로 사용한 png 파일의 정보가 어떻게 담겨있는지 확인합니다.

| 바이트 코드 | 의미 |
| 89 | 비ASCII 문자(파일 손상 방지 목적) |
| 50 4E 47 | "PNG" 문자열(파일이 PNG 포맷임을 식별) |
| 0D 0A | Windows 개행 문자(CR LF) |
| 1A | EOF(파일 종료 신호) |
| OA | Unix 개행 문자 |
| 바이트 코드 | 의미 |
| 00 00 00 0D | 청크 크기(13바이트) |
| 49 48 44 52 | "IHDR"(파일 헤더) |
(추가)
'certutil -dump 파일이름' 으로 볼 출력 결과를 파일로 저장해서 확인하는 방법
'certutil -dump 파일명 > dump_output(혹은 원하는 파일명).txt' 명령어를 사용하면 텍스트 편집기로 확인할 수 있습니다.
'Computer Science' 카테고리의 다른 글
| 스트리밍 서비스는 어떻게 동작될까 ? (2) | 2025.02.24 |
|---|---|
| Hex Dump 알아보기 ! (0) | 2025.02.19 |
| 정적 콘텐츠를 파일로 저장하기 ? vs Base64 방식으로 저장하기 ? (4) | 2025.02.07 |
| 운영체제의 메모리 관리 방식에 대해 알아보기 (3) | 2025.01.17 |
| Linux 권한설정 알아보기 (6) | 2025.01.16 |