MIME에 대하여...

eunoia·2021년 3월 31일
0
post-thumbnail

IIS 서버를 이용해 개발하다보니 특정 파일 업로드 시에 서버가 파일을 받지 못하는 상황이 발생 했습니다..!! 😱

문제는 바로 MIME 문제였습니다.🔨

MIME이란?

Multipurpose Internet Mail Extensions의 약자로 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다. - MDN

  • 기본적으로 E-mail(전자우편) 전송 프로토콜인 SMTP는 7비트 ASCII 문자만을 지원합니다. 그러나 ASCII 문자는 영어밖에 표현할 수 없기에 영어 이외의 언어로 쓰인 E-mail은 제대로 전송될 수 없었습니다. 이를 위해 탄생한 것이 MIME입니다.
  • MIME은 ASCII가 아닌 문자 인코딩을 이용해 영어가 아닌 다른 언어로 된 E-mail을 보낼 수 있는 방식을 정의합니다. 또한 그림, 음악, 영화 같은 8비트짜리 이진 파일을 전자 우편으로 보낼 수 있도록 합니다. 즉, e-mail을 위한 인터넷 표준 포맷인 것입니다.
  • MIME 타입은 본래 E-Mail을 위해 정의된 것이지만, HTTP, SIP와 같은 인터넷 프로토콜에서 함께 사용하고 있습니다.
  • MIME은 메세지의 종류를 나타내는 Content-type, 메세지 인코딩 방식을 나타내는 content-transfer-encoding과 같은 추가적인 E-mail 헤더를 정의합니다.
  • 메세지를 MIME 형식으로 변환하는 것은 E-mail 프로그램이나 서버 상에서 자동으로 이루어집니다.
  • MIME은 확장가능합니다. MIME 표준은 새로운 Content-type과 또 다른 MIME 속성 값을 등록할 수 있는 방법을 정의하고 있습니다.

🤔MIME 사용하는 이유?

텍스트 파일 통신 시 ASCII 로 공통된 표준만 따르면 되지만 바이너리 파일을 보내는 경우 음악, 무비, 워드 등 ASCII만으로는 전송이 불가능 하여 바이너리 파일을 텍스트 파일로 변환하는 기술 필요합니다!!

→ 바로 MIME (MIME가 문서 타입 정보 나르는 유일한 방법 X, 웹(http)에서 MIME 타입만이 적절)

  • 인코딩(Encoding) : 바이너리 파일 → 텍스트 파일
  • 디코딩(Decoding) : 텍스트 파일 → 바이너리 파일

MIME 문법

MIME 타입의 구조는 매우 간단합니다.

type/subtype
  • / 로 구분된 두개의 문자열

    • 타입 type : 카테고리를 나타내며 개별, 멀티파트 타입

    • 서브 타입 subtype : 각각의 타입에 한정

      → 쉽게 생각해서 타입파일의 종류, 서브 타입파일 포맷으로 표현합니다.

  • 대소문자 구분하지는 않지만 전통적으로 소문자로 쓰여집니다.

  • 스페이스는 허용되지 않습니다.

타입 종류

  • 개별 타입

    • 문서의 카테고리를 가르킵니다.
  • 멀티파트 타입

    • 다른 MIME 타입들을 지닌 개별적인 파트들로 나누어지는 문서의 카테고리 가리킵니다.

      → 즉, 합성된 문서를 타나내는 방법이 됩니다.

🐶개별 타입

  • text : 텍스트를 포함하는 모든 문서, 이론상으로는 인간이 읽을 수 있어야 합니다.

    text/plain(특정 서브타입이 없는 텍스트 문서들)
    text/html, text/css, text/javascript
  • image : 모든 종류의 이미지, 애니메이션되는 이미지도 포함 합니다.

    image/gif, image/png, image/jpeg, image/bmp, image/webp
  • audio : 모든 종류의 오디오 파일 나타냅니다.

    audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
  • video : 모든 종류의 비디오 파일 나타냅니다.

    video/webm, video/ogg
  • application : 모든 종류의 이진 데이터 나타냅니다.

    application/octet-stream(특정, 알려진 서브타입이 없는 이진 문서)
    application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml,  application/pdf

🐱멀티파트 타입

멀티파트란 MIME Type들이 개별적인 파트로 나누어지는 문서에서 MIME Type들이 각 Type에 맞게 파트별로 나누어지는 것을 말합니다.

  • multipart/form-data
    • HTML Forms과 POST 메서드의 관계 속에서 사용
  • multipart/byteranges
    • 전체 문서의 하위 집합만 전송하기 위한 206 Partial Content 상태 메시지와 함께 사용
profile
💻 .net, Spring

0개의 댓글