MIME이란 무엇인가 ?

GonnabeAlright·2022년 2월 26일
2
post-thumbnail

MIME(Multipurpose Internet Mail Extensions)란 ?

MIME은 이메일과 함께 동봉할 파일을 텍스트 문자로 전환해서 이메일 시스템을 통해 전달하기 위해 개발되었기 때문에 이름에 Internet Mail Extension가 포함됩니다. 현재는 웹을 통해서 여러 형태의 파일을 전달하는 데 쓰이고 있습니다.

MIME 사용 이유

MIME을 사용하기전에는 UUEncode 방식을 이용하고 있었으며 UUEncode에는 치명적인 단점이 있었습니다. 그러한 단점을 보강하여 새로운 인코딩 방식이 등장하게 되었으니 이것을 MIME이라고 합니다. 예전에는 텍스트파일을 주고 받는데 ASCII로 공통된 표준에 따르기만 하면 문제가 없었습니다. 하지만 네트워크를 통해 ASCII 파일이 아닌 바이너리 파일을 보내는 경우가 생기게 되었습니다. 이러한 바이너리 파일에는 음악파일, 무비파일, 워드파일 등등의 문서를 지칭하는 것입니다. 하지만 ASCII만으로는 전송이 불가능하여 이러한 바이너리 파일들을 기존의 시스템에서 문제 없이 전달하기 위해서는 텍스트 파일로 변환이 필요하게 되었습니다. 이러한 텍스트 파일로 변환인코딩이라고 하며 텍스트 파일을 바이너리 파일로 변환하는 과정디코딩이라고 합니다. MIME으로 인코딩 한 파일은 Content-Type 정보를 파일의 앞부분에 담게 됩니다.

MIME 데이터 처리 과정

MIME으로 인코딩 한 파일은 Content-type 정보를 파일의 앞부분에 담게 되며, Content-type은 여러가지의 타입이 있습니다. 대부분의 포맷인 .gif, .jpg, .mov 등등의 파일들은 웹 브라우저에서 무리 없이 열리게 되지만 브라우저에서 지원하지 못하는 유형은 따로 지정을 해야 합니다.

MIME 형식
	파일 이름 확장명: .gif
    MIME 형식: image/gif (파일의 종류 / 파일 포맷)			

Content-Type이란 무엇인가 ?

우리가 클라이언트 브라우저로 어떤 자원을 보낼때(어떤 형태의 파일이나 문서 등), 웹 서버는 일련의 HTTP 헤더로 파일이나 자원을 포함하는 바이트의 Stream을 앞에 보낸다. 이런 헤더는 클라이언트에게 웹 서버와 커뮤니케이션 세부사항을 묘사한다. 예를 들어, 헤더는 사용되고 있는 웹 서버의 소프트웨어 타입, 서버의 날짜와 시간, HTTP 프로토콜, 사용중인 커넥션 타입등을 지정한다. 헤더는 또한 클라이언트가 이런 가상 패스나 도메인에 대해서 저장해야 할 쿠키를 포함한다. 헤더는 또한 보내지는 자원의 content 타입이 포함되는 것이다. 이것은 Content-Type 헤더에 의해 지정되는데, 이 값은 표준 MIME-Type의 하나이다. MIME-Type을 살펴봄으로써 브라우저는 데이터를 나타내는데 어떤 종류의 파일 Stream인지를 알고 있다. HTML 페이지에서 표준 MIME type은 'text/html'이다. 그리고 텍스트 파일이나 텍스트 stream은 'text/text'이다.

정확한 MIME 타입 설정의 중요성

대부분의 웹 서버들은 기본 타입 중 하나인 application/octet-stream MIME 타입을 사용해 알려지지 않은 타입의 리소스를 전송합니다. 보안상의 이유로 대부분의 브라우저들은 그런 리소스에 대한 사용자화된 기본 동작 설정을 허용하지 않으며 그것을 사용하려면 디스크에 저장할 것을 사용자에게 강제합니다. 정확치 않게 구성된 서버들의 몇 가지 일반적 사례들은 다음의 파일 타입에서 일어납니다.

  • 인코딩된 RAR 파일: 이상적인 것은 인코딩된 파일의 실제 타입을 설정하는 것입니다. 하지만 서버가 모르는 타입일 수도 있고 이런 파일들은 다른 타입의 몇몇 리소스들을 포함하고 있을 수도 있기 때문에 불가능합니다. 이런 경우에 application/x-rar-compressed MIME 타입을 전송하도록 서버를 구성하여 사용자가 그에 대한 유용한 기본적인 동작을 정의하지 않게 됩니다.

  • 오디오와 비디오 파일: 적합한 MIME 타입을 가진 리소스만이 <video> 혹은 <audio> 엘리먼트 내에서 인식되어 재생될 수 있습니다. 오디오와 비디오를 위한 정확한 타입 사용을 확인해야 합니다.

  • 개인적인 파일 타입: 개인적인 파일 타입을 서브한 경우 특별한 주의를 기울여야 하는데 특별한 처리가 불가능하므로 가능하면 application/octet-stream의 사용을 피해야 합니다.

0개의 댓글