MIME Type 이란
MIME Type(Multipurpose Internet Mail Extensions)는 인터넷에서 전송되는 데이터의 형식을 나타내는 표준 방식
MIME 타입은 클라이언트(브라우저)가 데이터를 처리하는 방식을 결정하는 데 중요한 역할
웹에서는 HTTP 통신시 Content-Type 이란 Key값으로 Header에 담겨 사용됩니다.
MIME Type 구성
MIME 타입은 타입(Type)과 / 서브 타입(Subtype) 으로 구성 (ex. type/subtype => text/plain)
- 타입(type): 데이터의 일반적인 범주, ex) 텍스트, 이미지, 오디오, 비디오
- 서브타입(subtype): 특정 타입(type) 내에서 데이터의 구체적인 형식을 나타냄. ex) 텍스트 - plain, html / 이미지 - jpeg, png
※ 추가적인 세부 정보를 나타내고 싶다면, type/subtype;parameter=value 의 파라미터도 가능
MIME Type - 타입
타입은 기본적으로 다음 두 가지 클래스로 구분된다.
- discrete(개별) - text, application, image, video, audio 등
- multipart(여러개) - multipart
- 리스트 공식 문서 : https://www.iana.org/assignments/media-types/media-types.xhtml
※ multipart 란?
여러 discrete(독립)조각으로 구성되어, 각 부분은 고유한 개별 MIME 타입을 가질 수 있는 형식
multipart는 하나의 트랜잭션으로 함께 전송되는 여러 파일을 캡슐화 가능. ex) 이메일 여러 파일 첨부시
예시
- text : 사람이 읽을 수 있는 콘텐츠 / 쉼표 등으로 구분된 형태 데이터 / 텍스트 형식의 모든 데이터
- application : 모든 종류의 이진 데이터
- image : 이미지 / 그래픽 데이터 에니메이션 / 정지 이미지 형식의 애니메이션
- audio : 오디오, 음악 데이터
- video : 비디오 데이터
- font : 글꼴 / 서체 데이터
- model : 3D 객체 또는 화면에 대한 모델 데이터
- multipart : 여러 형식을 포괄한 형식에 대한 형식
MIME Type - 서브타입 1 (application, text, image, font)
application 대표 타입들 (전체 목록 링크)
- application/pdf : 단일 pdf 파일
- application/zip : 단일 압축 파일 관련
- application/json : 단일 json 형식, 파일을 Base64로 인코딩하여 JSON으로 전송: application/json 도 가능
- application/xml : 단일 xml 형식
- application/octet-stream : 이진 파일을 위한 기본값 ('잘 알려지지 않은' 이진 파일을 의미하기도 하며, 브라우저가 실행해야 하는지 묻기도 함 (특정 하위 타입이 없는 파일의 경우에 다음을 사용하기도 함), 단일 파일 전송: 파일만 단독으로 전송할 때 사용, 순수한 바이트 스트림으로 파일 내용을 전송
- application/x-www-form-urlencoded : 텍스트 데이터만 인코딩하여 전송.
- 등등..
text 대표 타입들 (전체 목록 링크)
- text/plain: 일반 텍스트 파일 (특정 하위 타입이 없는 파일의 경우에 다음을 사용하기도 함)
- text/html: HTML 파일
- text/css: CSS 파일
- text/javascript: JavaScript 파일
- text/markdown: Markdown 파일
image 대표 타입들 (전체 목록 링크)
- image/jpeg: JPEG 이미지 파일
- image/png: PNG 이미지 파일
- image/gif: GIF 이미지 파일
- image/bmp: BMP 이미지 파일
- image/svg+xml: SVG 이미지 파일
font 대표 타입들 (전체 목록 링크)
- font/ttf: TrueType Font
- font/otf: OpenType Font
- font/woff: Web Open Font Format
- font/woff2: Web Open Font Format 2
MIME Type - 서브타입 2 (audio, video, model)
audio 대표 타입들 (전체 목록 링크)
- audio/mpeg: MP3 오디오 파일
- audio/wav: WAV 오디오 파일
- audio/ogg: OGG 오디오 파일
- audio/aac: AAC 오디오 파일
- audio/flac: FLAC 오디오 파일
- 등등..
video 대표 타입들 (전체 목록 링크)
- video/mp4: MP4 비디오 파일
- video/webm: WebM 비디오 파일
- video/ogg: Ogg 비디오 파일
- video/x-msvideo: AVI 비디오 파일
- video/quicktime: QuickTime 비디오 파일
model 대표 타입들 (전체 목록 링크)
- model/vrml: Virtual Reality Modeling Language (VRML)
- model/x3d+xml: Extensible 3D (X3D)
- model/stl: Stereolithography (STL)
- model/iges: Initial Graphics Exchange Specification (IGES)
- model/obj: Wavefront Object (OBJ)
MIME Type - 서브타입 3 (multipart)
multipart 대표 타입들 (전체 목록 링크)
- multipart/form-data: 웹 form 형식의 데이터 전송에 사용, 파일 데이터는 바이트 스트림으로 전송되고, 각 파트는 MIME 타입과 파일 이름 등의 메타데이터를 포함. ex) 파일과 일반 텍스트 필드를 함께 전송할 때 사용 가능
- multipart/alternative: 여러 가지 표현 형식의 데이터 전송, 예: 동일한 이메일 내용의 텍스트와 HTML 버전
- multipart/mixed: 서로 다른 종류의 파일들을 함께 전송할 때 사용
- multipart/related: HTML 파일과 함께 이미지 등 관련 파일들을 함께 전송할 때 사용
- multipart/byteranges: HTTP 응답에서 범위 지정된 바이트 데이터를 여러 부분으로 나누어 전송할 때 사용
이들 multipart 타입은 각각의 부분이 독립적인 MIME 타입을 가지며, 복합적인 데이터를 하나의 전송 단위로 묶을 때 유용하게 사용
※ 파일 전송시 Content-Type ?
- 파일과 일반 필드를 함께 전송: multipart/form-data
- 단일 파일 전송: application/octet-stream
- 파일을 Base64로 인코딩하여 JSON으로 전송: application/json (서버에서 Base64 디코딩 필요)
- 파일을 Base64로 인코딩하여 JSON 객체의 일부로 전송. 이 방식은 일반 필드와 파일을 함께 전송하는 대신 파일을 인코딩하여 문자열로 변환
참고 링크
- https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types#applicationoctet-stream // MDN Web Docs
- https://www.iana.org/assignments/media-types/media-types.xhtml // IANA - Media Types
'기술 정리 & CS > Web 일반' 카테고리의 다른 글
[Web] 웹 콘텐츠 캐싱 (브라우저, 프록시-CDN, 서버) 비교 (2) | 2024.09.29 |
---|---|
[Web 일반] CORS 란? (1) | 2024.06.30 |
[Web 일반] 실시간 통신 (Pooling, Long Pooling, Streaming, WebSocket) 비교 (0) | 2022.09.19 |
[Web 기본] URI, URL, URN 차이 (0) | 2022.09.05 |
[Web 기본] HTTP 메소드 (+ PRG 패턴) (0) | 2022.08.26 |